3

在为我的基于服务器的应用程序考虑了一些架构问题之后,我觉得我将不得不使用单例来实现我的目标。纯粹出于以下原因(证明我的气味是合理的):

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

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

因此,您可以将其视为(其中 -> 是 1:1,=> 是 1:many):

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

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

这将是(其中 -> 是 1:1,=> 是 1:many):

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

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

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

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

4

1 回答 1

2

不同“实例”的不同 AppDomains 呢?

于 2010-01-08T11:44:14.547 回答