WCF 接口动态调用(动态创建实例接口)
来源:互联网 发布:php企业门户网站模板 编辑:程序博客网 时间:2024/06/14 05:42
很多时候,服务地址都不止一个的,这个时候就要动态去配置地址。配置Web.config,很麻烦!!!
在这里我们就先来给大家介绍一种比较简单的应用技巧,WCF动态创建代码的相关实现方法。
一、服务端创建WCF:
public interface ISysInfoService { [OperationContract] string GetMemoryInfo(); [OperationContract] string GetDriveSize(); [OperationContract] string GetAdapters(); }
二、客户端创建WCF工厂
1、引入命名空间
using System.ServiceModel.Channels;using System.ServiceModel;
2、创建WCF工厂类
public static T CreateWCFServiceByURL<T>(string url, string bing) { if (string.IsNullOrEmpty(url)) throw new NotSupportedException("this url isn`t Null or Empty!"); EndpointAddress address = new EndpointAddress(url); Binding binding = CreateBinding(bing); ChannelFactory<T> factory = new ChannelFactory<T>(binding, address); return factory.CreateChannel(); } /// <summary> /// 创建传输协议 /// </summary> /// <param name="binding">传输协议名称</param> /// <returns></returns> private static Binding CreateBinding(string binding) { Binding bindinginstance = null; if (binding.ToLower() == "basichttpbinding") { BasicHttpBinding ws = new BasicHttpBinding(); ws.MaxReceivedMessageSize = 65535000; bindinginstance = ws; } else if (binding.ToLower() == "netnamedpipebinding") { NetNamedPipeBinding ws = new NetNamedPipeBinding(); ws.MaxReceivedMessageSize = 65535000; bindinginstance = ws; } else if (binding.ToLower() == "netpeertcpbinding") { NetPeerTcpBinding ws = new NetPeerTcpBinding(); ws.MaxReceivedMessageSize = 65535000; bindinginstance = ws; } else if (binding.ToLower() == "nettcpbinding") { NetTcpBinding ws = new NetTcpBinding(); ws.MaxReceivedMessageSize = 65535000; ws.Security.Mode = SecurityMode.None; bindinginstance = ws; } else if (binding.ToLower() == "wsdualhttpbinding") { WSDualHttpBinding ws = new WSDualHttpBinding(); ws.MaxReceivedMessageSize = 65535000; bindinginstance = ws; } else if (binding.ToLower() == "wsfederationhttpbinding") { WSFederationHttpBinding ws = new WSFederationHttpBinding(); ws.MaxReceivedMessageSize = 65535000; bindinginstance = ws; } else if (binding.ToLower() == "wshttpbinding") { WSHttpBinding ws = new WSHttpBinding(SecurityMode.None); ws.MaxReceivedMessageSize = 2147483647; ws.Security.Message.ClientCredentialType = System.ServiceModel.MessageCredentialType.Windows; ws.Security.Transport.ClientCredentialType = System.ServiceModel.HttpClientCredentialType.Windows; bindinginstance = ws; } return bindinginstance; }
sAddress = "http://localhost:8731/Monitor/SysInfoService/";
ISysInfoService obj = InvokeContext.CreateWCFServiceByURL<ISysInfoService>(sAddress);
- WCF 接口动态调用(动态创建实例接口)
- WCF 动态调用(动态创建实例接口)
- WCF 动态调用(动态创建实例接口)
- WebServices 动态调用 接口自动创建 EMIT
- VC 动态调用DLL接口
- cxf动态调用webservice接口
- BCB(C++ Builder)创建动态库(DLL,接口导出和调用),动态加载DLL
- 动态调用WCF示例
- 动态调用WCF服务
- wcf 动态调用
- (1)使用接口创建 wcf 协定
- 调用动态Dll接口的效率(单线程)
- struts的Action接口-- (1)动态方法调用
- 工厂方法-接口-动态调用DLL
- C#调用C++动态库接口
- axis WebService之动态调用接口
- 对于xfire动态调用webservice接口
- QT 调用动态库接口方法
- 常用的UNIX系统调用命令
- java中二进制、八进制、十六进制转换为String
- 靠边伸缩菜单的做法(类似QQ,碰到就会伸出来)
- action返回值及结果类型介绍
- BI学习笔记之三 - 一个典型的BI系统介绍
- WCF 接口动态调用(动态创建实例接口)
- Android五种布局管理器之『FrameLayout』
- Cygwin 1.7版 中文问题的解决
- Android系统移植与调试之------->Android的编译系统简介
- 把阿拉伯数字转化成大写
- Lpad()函数与Rpad()函数的格式、用法
- Java web工程判断用户是否重复登录
- 线程与SMP
- Linux RPM包