当前位置: 代码迷 >> Web Service >> WCF实现服务工厂解决思路
  详细解决方案

WCF实现服务工厂解决思路

热度:427   发布时间:2012-02-19 19:43:38.0
WCF实现服务工厂
在服务端实现一个服务工厂,这个工厂可以生产其他不同的服务类型(都是从同一个接口实现),在客户端通过接口来调用服务端的服务工厂获取具体的服务完成相应的业务,可能表述不清,类似下面代码

Server端
[ServiceContract] 一个具体的工厂类 另外两个服务类
interface IServiceFactory class ServiceFactory:IServiceFactory class Service1:IService1
{ { {
  IService1 GetService1(); IService1 GetService1() ···
  IService2 GetService2(); { }
  · return new Service1();} class Service2:IServce2
  · IService2 GetService2() {
  · { return new Service2();} ···
  · · }
} }

这样在客户端首先获取IServiceFactory 然后通过IServiceFactory获取IService1、IService2 这样在客户端只需要引用服务契约就可以了,但是我这么做了之后在客户端通过IServiceFactory获取IService1时提示“服务终结点绑定未使用http协议”(绑定使用的是wsHttpBinding),请大家指教,如何将抽象工厂的模式运用到WCF服务中

------解决方案--------------------
契约需要固定的,你可以通过参数变化来调用不同的方法体
------解决方案--------------------
单就发布一个WCF服务而言,你注册到服务器的某个监听路由上是哪一个服务程序,例如 http://192.168.0.101/MyABC 这个站点用类型 ABCService 这个类型的实例来服务,那么你就要另外在端节点描述中再次单独说明这个站点的接口类型 ABCService、绑定的协议、以及发布的地址。这就行了。

你的那个代码都不能编译,谁能看出它能不能用呢?
------解决方案--------------------
同意楼上,代码写的也太乱了。

每个契约需要在服务器端运行的。

如果你是在客户端通过工厂取得接口,那接口的方法是在客户端本地执行的,而不是在服务器端。

如果你开发过远程对象就知道,客户端的接口对象实际上是一个realproxy,也就是透明代理,实际执行是在服务器端执行的。

所以你不用考虑了,你的这种方式不可行。 我们原来自己做过一个类似的框架,完全需要自己去实现。
  相关解决方案