缩放单身人士

在为基于服务器的应用程序考虑一些架构问题困难时,我觉得我将不得不使用单身人士来实现我的目标。 纯粹出于以下原因(certificate我的气味):

  • 我不需要将昂贵的对象深入到调用堆栈中
  • 我可以在任何上下文中对单例管理对象执行函数。 (很多代码已经存在,因此我不愿意重写其他工作代码的大量代码)

除此之外,Singletons提出了另一个问题。 我的基于服务器的应用程序本质上是一个DLL,其类可以调用多个服务器实例。 服务器实例类包含单例管理对象。 通常,这将由Windows服务管理,因此服务器:机器比率将是1:1。

所以你可以把它看作(其中 – >是1:1,=>是1:很多):

MACHINE – > ServiceHost(Windows服务?) – >服务器实例 – >单例管理对象

但是,我们希望允许SaaS模型,该模型需要服务主机(无论是Windows服务还是Win32应用程序)才能根据业务需要启动多个服务器。 因此,物理机器可以运行单个服务器主机,该主机将运行多个服务器实例。

这将是(其中 – >是1:1,=>是1:很多):

MACHINE – > ServiceHost(Windows服务?) =>服务器实例 – > 单例管理对象

问题是这些单例将在服务器之间共享。 哪个不可能发生。 单例与服务器实例必须为1:1。

假设我无法摆脱这些单例,我是否可以通过将服务实例类作为单独的进程/内存空间来将这些服务器实例彼此分开?

我只能想象我需要启动多个EXE(并使用WCF来管理),每个服务器实例一个。 这显然不是很好。

对于不同的“实例”,不同的AppDomain怎么样?