多网络服务所以多单例 [英] Multi web services so multi singleton

查看:22
本文介绍了多网络服务所以多单例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好

我有一个包含多个 Web 服务的项目,因此我在性能方面创建了各种单例类思想.现在我想创建一个单例类,它有我的网络服务的实例

i have one project with multiples web services so i created various singleton class thinking in performance. now i think create one singleton class and that have the instances of my webservices

示例

public static WebServiceMaster
{
  internal ServiceX WebX;
  internal ServiceY WebY;
  ......
  public static WEbServiceMaster GetInstance()
  .....  
}

你怎么看?不好吗?

好了,终于搞定了.我知道这并不完美

Well, finally that is done. I know that is not perfect

 Public NotInheritable Class ServiceProxySingleton

Private _services As IDictionary(Of ProxyServicesEnum, IServiceDispatcher) = New Dictionary(Of ProxyServicesEnum, IServiceDispatcher)
Private _dbRepository As IDACommon

Private Sub New()
  _dbRepository = New DACommon()
  LoadServices()
End Sub

Private Sub LoadServices()
  _services.Add(ProxyServicesEnum.eActivity, New ActivityServiceImp(_dbRepository))
  _services.Add(ProxyServicesEnum.eAvailability, New AvailabilityServiceImp(_dbRepository))
  _services.Add(ProxyServicesEnum.eBrochure, New BrochureServiceImp(_dbRepository))
  _services.Add(ProxyServicesEnum.eInformation, New InformationServiceImp(_dbRepository))
  _services.Add(ProxyServicesEnum.eMeetingRoom, New MeetingRoomServiceImp(_dbRepository))
  _services.Add(ProxyServicesEnum.eMembership, New MembershipServiceImp(_dbRepository))
  _services.Add(ProxyServicesEnum.eName, New NameServiceImp(_dbRepository))
  _services.Add(ProxyServicesEnum.eReservation, New ReservationServiceImp(_dbRepository))
  _services.Add(ProxyServicesEnum.eResvAdvanced, New ResvAdvancedServiceImp(_dbRepository))
  _services.Add(ProxyServicesEnum.eSecurity, New SecurityServiceImp(_dbRepository))
  _services.Add(ProxyServicesEnum.eStayHistory, New StayHistoryServiceImp(_dbRepository))
  _services.Add(ProxyServicesEnum.ePostXml, New PostXmlServiceImp(_dbRepository, ConfigurationServiceSingleton.GetInstance.GetPostXmlConfig))
  _services.Add(ProxyServicesEnum.eOxiHttp, New OxiServiceImp(_dbRepository))
End Sub

Public ReadOnly Property Service(ByVal serviceEnum As ProxyServicesEnum) As Object
  Get
    If _services.ContainsKey(serviceEnum) Then
      Return _services.Item(serviceEnum)
    End If
    Return Nothing
  End Get
End Property

Public ReadOnly Property GetMeta(ByVal serviceEnum As ProxyServicesEnum) As IDictionary(Of String, MethodIdentityAttribute)
  Get
    If _services.ContainsKey(serviceEnum) Then
      Return _services.Item(serviceEnum).MetaInfo
    End If
    Return Nothing
  End Get
End Property

Public Shared Function GetInstance() As ServiceProxySingleton
  Return NestedPrWireService._instance
End Function

Class NestedPrWireService
  Friend Shared ReadOnly _instance As ServiceProxySingleton = New ServiceProxySingleton()
  Shared Sub New()
  End Sub
End Class

End Class

欢迎评论和批评

推荐答案

非常好的方法是使用依赖注入.例如 Unity.

Very good approach is to use Dependency Injection. For example Unity.

这篇关于多网络服务所以多单例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆