DotNet关键知识点——WCF篇(二)
来源:互联网 发布:杭州派购网络 编辑:程序博客网 时间:2024/06/07 01:26
服务侧的端点定义。
1. 端点定义
WCF端点(Endpoint)包含ABC三个方面,对应endpoint记号中的三个属性:
地址(属性address)遵照WS-Addressing标准,由方式(Scheme)、主机(Machine)、端口(Port)、路径(Path)四个部分组成,依照URI的形式。
在服务宿主(Service Host)工程中包含app.config,用以定义服务的端点等信息,通常结构包含服务定义(services),绑定定义(bindings)和行为定义(behaviors)三部分。
<system.serviceModel>
<services>
<service name="服务类名" behaviorCofiguration="行为配置名">
<host>
(在IIS中基路径即存放服务文件的虚拟目录,此处示例添加基路径)
<baseAddress>
<add baseAddress = "…">
…
</baseAddress>
</host>
<endpoint binding="wsHttpBinding(绑定类型名)"
contract="名空间.服务接口名"
bindingConfiguration="绑定设置名"/>
<endpoint address="mex"
binding="mexHttpBinding" (其他方式包括mexNamedPipeBinding, mexTcpBinding等)
contract="IMetadataExchange" /> (元数据传递) (配置元数据传递通过HTTP-GET可得)
<endpoint addres=""
binding="customBinding(自定义绑定类型)"
bindingConfiguration="自定义绑定的设置名" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="行为配置名">
<serviceMetadata 参数配置如httpGetEnabled="True" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<customBinding>
<binding name = "自定义绑定的设置名">
(如下绑定元素binding element按顺序设置,不必每个出现)
【事务流, Trasaction flow】
【(会话)可靠性(有序性), (Session) Reliability】
【安全性, Security】
【传输, Transport】
【编码, Encoding】
</binding>
<customBinding>
</bindings>
…
等效地在代码中设置:
using System.ServiceModel;
using System.ServiceModel.Description; /* for ServiceMetadataBehavior */
using System.ServiceModel.Channels; /* for custom binding */
Uri uri1 = new Uri("基路径");
…
Uri[] baseAddress = { uri1, … };
// 添加wsHttpBinding对应端点
ServiceHost host = new ServiceHost(typeof(名空间.服务类名), baseAddresses);
// 创建binding …
WsHttpBinding wsBinding = new WsHttpBinding();
wsBinding.某属性 = 属性值;
…
host.AddServiceEndPoint(typeof(名空间.服务接口名), wsBinding, "相对/绝对路径");
…
// 添加mex端点
ServiceMetadataBehavior mb = host.Description.Behaviors.Find(); /* check existence */
if (mb == null)
{
mb = new ServiceMetadataBehavior();
mb.HttpGetEnabled = true;
host.Description.Behaviors.Add(mb);
}
host.AddServiceEndPoint(ServiceMetadataBehavior.MexContractName /* string类型,名称 */,
MetadataExchangeBindings.CreateMexHttpBinding(),
"mex");
// 设置自定义属性
BindingElementCollection bec = new BindingElementCollection();
SymmetricSecurityBindingElement ssbe = new SymmetricSecurityBindingElement();
ssbe.LocalServiceSettings.InactivityTimeout = new Timespan(xx,xx,xx);
// 按顺序添加
bec.Add(new ReliableSessionBindingElement());
bec.Add(ssbe);
bec.Add(new HttpsTransportBindingElement();
bec.Add(new TextMessageEncodingBindingElement());
CustomBinding customBinding = new CustomBinding(bec);
host.AddServiceEndPoint(typeof(…), customBinding, "…");
…
2. wsHttpBinding
主要属性说明:
属性名说明默认值HostNameComparisonMode连接服务时主机名的匹配方式StrongWildcard用合法的主机名链接服务MaxBufferPoolSize为缓冲管理分配的大小65536字节MaxReceivedMessageSize最大消息长度65536字节ReaderQuotas消息中字符串内容限制NoneMessageEncoding消息的编码方式(MTOM或Text/XML)TextTextEncoding消息文本的编码方式UTF8EncodingTransactionFlow支持事务流False
这些属性本质上在Binding内部的BindingElement上起作用,详见第四篇。
- DotNet关键知识点——WCF篇(二)
- DotNet关键知识点——WCF篇(一)
- DotNet关键知识点——WCF篇(三)
- DotNet关键知识点——WCF篇(五)
- DotNet关键知识点——WCF篇(四)
- DotNet关键知识点——WCF篇(六)
- DotNet关键知识点——WPF篇(二)
- DotNet关键知识点——WPF篇(三)
- DotNet关键知识点——WPF篇(四)
- DotNet关键知识点——WPF篇(五)
- DotNet关键知识点——WPF篇(六)
- DotNet关键知识点——WPF篇(七)
- DotNet关键知识点——WPF篇(八)
- DotNet关键知识点——WPF篇(一)(范德成编辑批注版)
- DotNet剖析系列(二)——控件继承
- WCF进阶(二)——Contract
- PMP知识点总结—关键路径法
- PMP知识点总结—关键路径法
- VC2005使用boost环境的搭建
- 使用 google音乐播放器乱码解决
- 20100128 Lecture4_Monad Parser
- AMD欲借CPU和GPU整合优势对抗Nvidia
- DotNet关键知识点——WCF篇(一)
- DotNet关键知识点——WCF篇(二)
- mfc中滑动条的使用(实现和编辑框的关联)
- 【独家】鲜为人知的Google go语言若干细节
- DotNet关键知识点——WCF篇(三)
- ch1处理器管理
- 象棋外挂的一些思路
- 2010-01-28
- SQL中truncate table和delete的区别
- JAVA获取当前工程路径(非web工程)