我们目前有一个WCF服务,它开始达到它的极限性能明智。WCF服务设计
我们决定添加另一台服务器,它将托管WCF服务的另一个实例。我们有网络应用程序,它们必须根据上下文...与特定的服务器进行通信。如果Web应用程序正在处理来自ServiceInstance1的对象,则请求必须定向到ServiceInstance1的EndPoint。如果Web应用程序正在处理ServiceInstance2中的对象,则请求必须定向到ServiceInstance2的EndPoint。
我最初认为可以创建“中间服务”或“服务管理器”,Web应用程序的服务参考将从单个服务实例更新到“中间服务”或“服务管理器”,并且所述服务将会充当各种服务实例的“经纪人”。
这是如何完成的?
我目前在Manager中添加了一个ServiceReference给每个服务,但是看起来一旦服务被“引用”,它的类型就变得特定于ServiceReference的类型,例如
ServiceInstance1的类型都是{ServiceInstance1}。 ServiceInstance2的类型都是{ServiceInstance2}。
我需要类型在Web应用程序端是相同的,所以这显然是错误的方式来做到这一点。
我也希望在引用“中间服务”或“服务管理器”生成的客户端上调用正确的服务实例时调用方法,例如,
IServiceManager.GetProjectById({GUID}) ->
回来的ServiceManager - > 决定哪台主机有该项目,并从正确的服务实例返回ProjectObject。
其中ProjectObject是一个类型定义在ServiceInstance1和ServiceInstance2中。
我认为原始服务需要将一些DLL拉出来,以便它们可以从Web应用程序端和ServiceManager中引用,并且可以创建GenericWCF客户端。
如果我是对的hooray对我如果有人能指出我在正确的方向,我将不胜感激。如果我错了,有人可以责骂我,告诉我这是如何正确完成的!
使用路由策略,你只会将你的扩展限制从后端服务器转移到路由服务器。它还增加了一个你必须购买,维护,安全的服务器。一个稳定的负载平衡策略会让你更快,更快。 – Mark 2010-08-27 16:24:34