首页 新闻 会员 周边 捐助

怎么通用调用WCF服务

0
悬赏园豆:20 [已解决问题] 解决于 2011-12-23 14:38

在VS2005上我写分布式软件的时候用的是Remtong。


那个时候我们可以先建立一个连接


sprovider = new BinaryServerFormatterSinkProvider();


  cprovider = new BinaryClientFormatterSinkProvider();


  sprovider.TypeFilterLevel = TypeFilterLevel.Full;


  IDictionary props = new Hashtable();



  props["port"] = 0;



  channel = new HttpChannel(props, cprovider, sprovider);


  try


  {


  ChannelServices.RegisterChannel(channel);


  }


  catch


  {


  channel = null;


  return false;


  }


  try


  {



  Str = "http://" + Adress + ":" + Port + "/";


  return true;


  }


  catch


  {


  channel = null;


  return false;


  }


  


  再通过


  public Object Run( Type setType,string Url)


  {


  string MsStr = Str + Url;


  return Activator.GetObject(setType, MsStr);


  }


  来得到一个远程对象。


但现在我用WCF来做分布式软件的时候遇到一个问题,


ChannelFactory<Itesteshow> channelFactory = new ChannelFactory<Itesteshow>(Binding,EndpointAddress)


就是我必须正对每个接口(如:Itestshow)建立 一个创建不同类型通道的工厂。如果我有100个这样的接口是不是要写很多这样的通道工厂呢? 还有我的WCF客户端是自己写的,我现在建立一个这样的通用工厂。就是在客户端我需要加入一些发射机制来得这些接口。ChannelFactory<Type> channelFactory = new ChannelFactory<Type>()。我想用这样的方式来写一直都有“传递给通用 ChannelFactory 类的类型参数必须是接口类型”的错误! 我怎样才能写通用的呢?

wcf
小鸟的博客的主页 小鸟的博客 | 初学一级 | 园豆:139
提问于:2011-12-21 16:05
< >
分享
最佳答案
0

Activator.CreateInstance(typeof(ChannelFactory<>).MakeGenericType(typeof(ISampleServiceChannel)))

可以这么实现,但是我真的不确信你确实需要如此做。

收获园豆:20
Launcher | 高人七级 |园豆:45050 | 2011-12-21 18:12

谢谢,解决了我的问题!

小鸟的博客 | 园豆:139 (初学一级) | 2011-12-23 14:37
其他回答(1)
0

我觉得接口的数目不会很多,因为到远程调用的时候为了减少通信次数常常利用Facade模式公布出几个接口,基本上都是粗粒度无状态的。

碧落星痕 | 园豆:708 (小虾三级) | 2011-12-21 16:21

如果我想这样做,有什么方法实现吗?

支持(0) 反对(0) 小鸟的博客 | 园豆:139 (初学一级) | 2011-12-21 16:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册