温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

WCF服务元数据交换编程怎么实现

发布时间:2021-12-15 09:18:49 来源:亿速云 阅读:137 作者:iii 栏目:编程语言

这篇文章主要讲解了“WCF服务元数据交换编程怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“WCF服务元数据交换编程怎么实现”吧!

前者配置简单、快捷,后者相对复杂。但是编程方式允许代码运行时控制或者设置元数据交换的信息。因而更加灵活。下面我们就来看看如何通过代码实现刚才的服务原数据交换的配置。

WCF服务元数据交换HTTP-GET编程实现:

必须添加对命名空间的引用, using System.ServiceModel.Description;我们对服务元数据操作的类和接口信息定义在此命名空间里,具体的实现HTTP-GET的代码如下:

ServiceMetadataBehavior metadataBehavior;  //定义服务行为变量,  metadataBehavior = host.Description.Behaviors.Find<ServiceMetadataBehavior>();  //获取宿主的行为列表  if (metadataBehavior == null)  //如果没有服务原数据交换的行为,实例化添加服务原数据交换行为  {  metadataBehavior = new ServiceMetadataBehavior();  Uri httpAddress = new Uri("http://localhost:8001/");  metadataBehavior.HttpGetUrl =httpAddress;  metadataBehavior.HttpGetEnabled = true;//设置HTTP方式  host.Description.Behaviors.Add(metadataBehavior);  }

首先是获得服务行为的列表信息,如果没有设置,我们就进行实例化服务原数据交换行为,并设置http方式可用。 host.Description.Behaviors.Add(metadataBehavior);添加宿主服务的行为。

WCF服务元数据交换WS-*编程实现:

这里分别实现了HTTP、TCP、IPC三种方式的的元数据交换的代码。和http-get方式略有不同,我们需要实例化自己绑定元素和绑定,***作为参数传递给host宿主实例。具体实现代码如下:

//2编程方式实现ws*原数据交换  //生命三个绑定节点类  BindingElement tcpBindingElement = new TcpTransportBindingElement();  BindingElement httpBindingElement = new HttpsTransportBindingElement();  BindingElement pipeBindingElement = new NamedPipeTransportBindingElement();  //实例化通用绑定类的实例  Binding tcpBinding = new CustomBinding(tcpBindingElement);  Binding httpBinding = new CustomBinding(httpBindingElement);  Binding pipeBinding = new CustomBinding(pipeBindingElement);  //  Uri tcpBaseAddress = new Uri("net.tcp://localhost:9001/");  Uri httpBaseAddress = new Uri("http://localhost:9002/");  Uri pipeBaseAddress = new Uri("net.pipe://localhost/");  host.AddServiceEndpoint(typeof(WCFService.IWCFService), new NetTcpBinding(), tcpBaseAddress);  host.AddServiceEndpoint(typeof(WCFService.IWCFService), new WSHttpBinding(), httpBaseAddress);  host.AddServiceEndpoint(typeof(WCFService.IWCFService), new NetNamedPipeBinding(), pipeBaseAddress);   //ServiceMetadataBehavior metadataBehavior;//定义服务行为变量,  metadataBehavior = host.Description.Behaviors.Find<ServiceMetadataBehavior>();  //获取宿主的行为列表  if (metadataBehavior == null)//如果没有服务原数据交换的行为,实例化添加服务原数据交换行为  {  metadataBehavior = new ServiceMetadataBehavior();   host.Description.Behaviors.Add(metadataBehavior);  }  //如果没有可用的mex节点,可以使用一下代码判断,添加mex节点   host.AddServiceEndpoint(typeof(IMetadataExchange), tcpBinding, "mex");  host.AddServiceEndpoint(typeof(IMetadataExchange), httpBinding, "mex");  host.AddServiceEndpoint(typeof(IMetadataExchange), pipeBinding, "mex");

感谢各位的阅读,以上就是“WCF服务元数据交换编程怎么实现”的内容了,经过本文的学习后,相信大家对WCF服务元数据交换编程怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

wcf
AI