所以我创建了一个移动应用程序,该移动应用程序连接到服务器上托管的这个web api中,但我只是在想我是如何完成启动类的,在它们中,我在web api中调用了大量服务。
如果多个用户将开始访问系统,那么在这种情况下使用Add Scope是否不好。
services.AddScoped<IteamInterface,TeamService>();
services.AddScoped<IPlayerInterface, PlayerService>();
services.AddScoped<IProfileInterface, ProfileService>();
services.AddScoped<IWorkoutsInterface, WorkoutsService>();
典型的服务是
public class WorkoutsService : IWorkoutsInterface
{
APPDBContext db;
public WorkoutsService(APPDBContext dBContext)
{
db = dBContext;
}
public void AddWorkOut(Workout workout)
{
db.WorkOuts.Add(workout);
db.SaveChanges();
}
... DO more db calls
}
它不会对应用程序造成沉重打击,但使用添加范围可能会给我带来进一步的问题。
我在startup.cs中有大约15个服务以这种方式加载,只是担心是否会有大约4个教练使用后一个
Scoped
是您案例中正确的终身选择。虽然由于GC压力降低,采用Singleton
生存期似乎是一个更好的选择(您不会像目前的情况那样在每个请求上重新创建这些服务(,但您可能会在数据库访问端造成瓶颈,将所有会话排队以使用单个DbContext实例。
保持你的应用程序原样;如果遇到性能问题,请仔细分析,找出问题的真正原因,并进行相应的调整。