WCF 第四章 绑定 创建一个自定义绑定
2011-06-29 10:28
267 查看
有很多时候预先设置好的绑定不满足你的服务的需求。一般的场景包含了自定义安全和额 外传输协议,都不被WCF支持。一个例子是WCF中不支持UDP协议。对UDP协议的支持是以Windows SDK中的例子来实现的。考虑到这些情况所以WCF提供了创建自定义绑定的能力。自定义绑定可以由代码或配置文件创建。一个自定义绑定的代码使用 System.ServiceModel.Channels命名空间中的CustomBinding类来生成。这个类暴露了一个你可以添加绑定元素的绑定元素集合。这允许你构造一个基于一系列现有绑定元素的新的绑定。列表4.32显示了一个由代码生成的自定义绑定。 列表4.32 使用代码创建一个自定义绑定 CustomBinding customBinding = new CustomBinding(); customBinding.Elements.Add(new BinaryMessageEncodingBindingElement()); customBinding.Elements.Add(new UdpBindingElement()); 一个自定义绑定可以使用customBinding元素在配置文件中创建。列表4.33 显示了一个用配置文件描述的自定义绑定。当使用配置文件时,一个自定义绑定必须总是使用一个命名绑定。 列表4.33 使用配置文件创建一个自定义绑定
注意绑定确定了一个传输绑定元素和一个编码器。这是创建一个自定义绑定需要的所有内容。如果传输绑定元素确定了一个默认编码器,那么编码器就是可选的。改 变一个自定义绑定是如何工作的只是几行代码或者配置文件的问题。当使用配置文件的时候要小心,因为它可以被改变。如果你不打算在以后改变绑定,那么使用代 码创建你的自定义绑定。 下面的配置文件内容可以与列表4.2~4.4中的示例程序一起使用。列表4.34中的配置文件信息使用customBinding绑定暴露 StockQuoteService服务。绑定在TCP传输协议与二进制编码的基础上暴露服务。自定义绑定与netTcpBinding绑定类似但是不支 持可信赖消息,事务和安全。 列表 4.34 customBinding 宿主配置
列表4.35 调用列表4.34中使用customBinding绑定的服务的客户端配置 列表4.35 customBinding 客户端配置
用户定义绑定 绑定可以完全使用代码或配置文件定义或者它们可以通过继承自Binding类来创建。这种类型的绑定被称为用户定义绑定。你仍然需要为你的绑定确定绑定元素。一个自定义绑定和一个用户定义绑定间的基本不同是用户定义绑定是一个类的特殊实例,它执行了你创建一个绑定时的所有操作。如果你打算在很多应用中重用你的 绑定那么它是首选。如果你选择使用这个途径,作者强烈建议用户定义绑定支持使用一个绑定扩展创建的能力。一个绑定扩展通过配置文件暴露一个绑定类。创建一 个新类通过继承System.ServiceModel.Configuration命名空间里的 BindingElementExtensionElement类实现。提示 为你的自定义绑定提供一个绑定扩展 严肃的考虑一下使用一个绑定扩展而不是<customBinding>配置元素来暴露你的自定义绑定。这将有助于帮助避免配置文件中的错误以及相关错误。
==========
转载自
作者:DanielWise
出处:http://www.cnblogs.com/danielWise/
01 | <?xml version= "1.0" encoding= "utf-8" ?> |
02 | <configuration> |
03 | <system.serviceModel> |
04 | <bindings> |
05 | <customBinding> |
06 | <binding name= "CustomBinding" > |
07 | <binaryMessageEncoding /> |
08 | <udpTransport /> |
09 | </binding> |
10 | </customBinding> |
11 | </bindings> |
12 | </system.serviceModel> |
13 | </configuration> |
01 | <?xml version= "1.0" encoding= "utf-8" ?> |
02 | <configuration> |
03 | <system.serviceModel> |
04 | <services> |
05 | <service name= "EssentialWCF.StockQuoteService" > |
06 | <host> |
07 | <baseAddresses> |
08 | <add baseAddress= "net.tcp://localhost/stockquoteservice" /> |
09 | </baseAddresses> |
10 | </host> |
11 | <endpoint address= "" |
12 | binding= "customBinding" bindingConfiguration= "customBinding" |
13 | contract= "EssentialWCF.IStockQuoteService" /> |
14 | </service> |
15 | </services> |
16 | <bindings> |
17 | <customBinding> |
18 | <binding name= "customBinding" > |
19 | <binaryMessageEncoding/> |
20 | <tcpTransport /> |
21 | </binding> |
22 | </customBinding> |
23 | </bindings> |
24 | </system.serviceModel> |
25 | </configuration> |
01 | <?xml version= "1.0" encoding= "utf-8" ?> |
02 | <configuration> |
03 | <system.serviceModel> |
04 | <client> |
05 | <endpoint address= "net.tcp://localhost/stockquoteservice" |
06 | binding= "customBinding" bindingConfiguration= "customBinding" |
07 | contract= "EssentialWCF.IStockQuoteService" /> |
08 | </client> |
09 | <bindings> |
10 | <customBinding> |
11 | <binding name= "customBinding" > |
12 | <binaryMessageEncoding/> |
13 | <tcpTransport /> |
14 | </binding> |
15 | </customBinding> |
16 | </bindings> |
17 | </system.serviceModel> |
18 | </configuration> |
==========
转载自
作者:DanielWise
出处:http://www.cnblogs.com/danielWise/
相关文章推荐
- WCF 第四章 绑定 创建一个自定义绑定
- WCF 第四章 绑定 在多个绑定上暴露一个服务契约
- WCF 第四章 绑定 在多个绑定上暴露一个服务契约
- WCF 第四章 绑定 选择一个合适的绑定
- WCF 第四章 绑定 选择一个合适的绑定
- 为创建的一个自定义数据类型进行运算符重载
- WCF 第四章 绑定 msmqIntegrationBinding
- 一步一步SharePoint 2007之四十四:实现自定义Workflow(3)——在Designer中创建一个Workflow
- flash绑定资源自定义一个按钮
- 自定义View,创建一个小圆点,单击可以拖动
- iOS SDK:创建一个自定义文本输入框
- WCF Learning(1):创建一个简单的WCF程序
- 创建一个简单的WCF程序
- 我的WCF之旅(1):创建一个简单的WCF程序
- Knockout自定义绑定创建方法
- 创建一个简单的WCF程序2——手动开启/关闭WCF服务与动态调用WCF地址
- C# 如何在一个Datagridview 的 某一个cell里面 绑定一个自定义的combobox
- 【Android Training UI】创建自定义Views(Lesson 1 - 创建一个View类)
- 创建一个简单的WCF服务
- WCF后续之旅(13):创建一个简单的SOAP Message拦截、转发工具[下篇]