私が行ったいくつかの.NETC#Webサービスプロジェクトでは、シングルトンパターンを使用してdbへのアクセスを静的にしました。それから先日、私の友人はこれは悪いことだと私に言いました。同じdbエンティティに対して多くの要求が行われると、静的インスタンスのためにdbがロックされるからです。私の友達の仮定は正しいですか?新しいリクエストごとにクラスの新しいインスタンスが作成されると思いましたか?
シングルトンクラスの実装は次のようになります。
public class WebService
{
private readonly IFactory _factory;
public WebService(IFactory factory)
{
_factory = factory;
}
public IDataRepository Data
{
get
{
return _factory.GetDatabase();
}
}
}
public static class WebServiceImpl
{
private static readonly WebService _webService = new WebShop(new WebserviceFactoryImpl());
public static WebService webService { get { return _webService; } }
}
_factory.GetDatabase()は、Databaseクラスの新しいインスタンスを返します。