WCF入门教程(四)通过Host代码方式来承载服务
来源:互联网 发布:itools for mac 编辑:程序博客网 时间:2024/06/06 00:33
之前已经讲过WCF对外发布服务的具体方式。
WCF入门教程(一)简介
Host承载,可以是web,也可以是控制台程序等等。比WebService有更大的使用空间。具体承载的简单框图如下:
通过服务终结点,然后通过Host承载这些终结点,这样客户端就可以访问这些服务了。
一个服务可以添加多个终结点,终结点中定义了Address,Binding和Contract。
而且还可以针对终结点定义一定的行为。
下面给出简单实例,通过ServiceHost来承载相关服务。
#region 采用代码方式实现对契约的绑定 Uri baseAddress = new Uri("http://127.0.0.1:9999/"); using (ServiceHost host = new ServiceHost(typeof(CalculatorService), baseAddress)) { Binding wsBinding = new WSHttpBinding(); NetTcpBinding tcpBinding = new NetTcpBinding(); //提供安全传输 tcpBinding.Security.Mode = SecurityMode.Transport; //需要提供证书 tcpBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Certificate; //添加多个服务终结点 //使用指定的协定、绑定和终结点地址将服务终结点添加到承载服务中 ServiceEndpoint svEndpiont = host.AddServiceEndpoint(typeof(ICalculator), wsBinding, "CalculatorService"); //netTcp协议终结点 host.AddServiceEndpoint(typeof(ICalculator), tcpBinding, "net.tcp://127.0.0.1:8888/CalculatorServiceTcp"); #region 添加行为 //元数据发布行为 ServiceMetadataBehavior behavior = new ServiceMetadataBehavior(); //支持get请求 behavior.HttpGetEnabled = true; behavior.HttpGetUrl = new Uri("http://127.0.0.1:9999/CalculatorService/metadata"); //设置到Host中 host.Description.Behaviors.Add(behavior); #endregion host.Opened += delegate { Console.WriteLine("CalculaorService已经启动,按任意键终止服务!"); }; //服务启动 host.Open(); Console.Read(); } #endregion
如果已经很了解这些类型的使用了,后面的内容可以直接略过。
ServiceHost
提供服务的主机。就是服务的承载者。
主要属性:
名称
说明
Authentication
获取服务身份验证行为。
Authorization
获取所承载服务的授权行为。
BaseAddresses
获取所承载服务使用的基址。
ChannelDispatchers
获取服务主机所使用的通道调度程序的集合。
CloseTimeout
获取或设置允许服务主机关闭的时间间隔。
OpenTimeout
获取或设置允许服务主机打开的时间间隔。
SingletonInstance
获取承载服务的单一实例。
State
获取指示通信对象当前状态的值。
主要方法:
其方法很多,Host开启、关闭、终止等,还支持异步操作,以及一些动作前后事件。在这里只列举了最基本几个方法。
名称
说明
AddServiceEndpoint(Type, Binding, String)
使用指定的协定、绑定和终结点地址将服务终结点添加到承载服务中。
Close()
使通信对象从其当前状态转换到关闭状态。 (继承自 CommunicationObject。)
OnOpened
获取所承载服务的服务凭据、服务身份验证和授权行为。 (继承自ServiceHostBase。)
Open()
使通信对象从已创建状态转换到已打开状态。 (继承自 CommunicationObject。)
ServiceEndpoint
表示允许服务的客户端查找并与服务通信的服务的终结点。
该服务终结点包含客户端在此终结点进行查找和与服务交互所需的地址、绑定、协定和行为信息。
属性:
名称
说明
Address
获取或设置服务终结点的终结点地址。
Behaviors
获取服务终结点的行为。
Binding
获取或设置服务终结点的绑定。
Contract
获取服务终结点的协定。
IsSystemEndpoint
获取或设置是否由系统生成服务终结点而不由用户定义服务终结点。
ListenUri
获取或设置服务终结点侦听的 URI。
ListenUriMode
获取或设置传输处理提供给服务的供其侦听的 URI 的方式。
Name
获取或设置服务终结点的名称。
Binding
包含绑定元素,这些元素指定客户端和服务之间的通信所用的协议、传输和消息编码器。
这李只给出几种常见的绑定类型,不深入展开
具体绑定规则根据具体需求而定。
Binding名称
Configuration Element
描述
BasicHttpBinding
basicHttpBinding
一个指定用符合基本网络服务规范通讯的binding,它用http进行传输,数据格式为text/xml
WSHttpBinding
wsHttpBinding
一个安全的通用的binding,但它不能在deplex中使用
WSDualHttpBinding
wsDualHttpBinding
一个安全的通用的binding,但能在deplex中使用
WSFederationHttpBinding
wsFederationHttpBinding
一个安全的通用的支持WSF的binding,能对用户进行验证和授权
NetTcpBinding
netTcpBinding
在wcf应用程序中最适合跨机器进行安全通讯的binding
NetNamedPipeBinding
netNamedPipeBinding
在wcf应用程序中最适合本机进行安全通讯的binding
NetMsmqBinding
netMsmqBinding
在wcf应用程序中最适合跨机器进行安全通讯的binding,并且支持排队
NetPeerTcpBinding
netPeerTcpBinding
一个支持安全的,多机交互的binding
MsmqIntegrationBinding
msmqIntegrationBinding
一个用于wcf与现有msmq程序进行安全通讯的binding
ServiceDescription
表示一个完整的服务的内存中说明,包括服务的所有终结点及其各自地址、绑定、协定和行为的规范。
名称
说明
Behaviors
获取与该服务关联的行为。
ConfigurationName
获取或设置 <service> 配置元素的名称。
Endpoints
从服务说明获取终结点的集合。
Name
获取或设置服务的名称。
Namespace
获取或设置服务的命名空间。
ServiceType
获取服务的类型。
ServiceMetadataBehavior
控制服务元数据和相关信息的发布。
属性
说明
ExternalMetadataLocation
获取或设置作为服务元数据的位置的值。
HttpGetBinding
获取或设置当传输为 HTTP 时用于配置元数据检索的绑定。
HttpGetEnabled
获取或设置一个值,该值指示是否发布服务元数据以便使用 HTTP/GET 请求进行检索。
HttpGetUrl
获取或设置进行 HTTP/GET 请求的元数据发布的位置。
HttpsGetBinding
获取或设置当传输为 HTTPS 时用于配置元数据检索的绑定。
HttpsGetEnabled
获取或设置一个值,该值指示是否发布服务元数据以便使用 HTTPS/GET 请求进行检索。
HttpsGetUrl
获取或设置进行 HTTPS/GET 请求的元数据发布的位置。
MetadataExporter
获取或设置用于发布服务元数据的内部 MetadataExporter 对象。
- WCF入门教程(四)通过Host代码方式来承载服务
- WCF学习心得----(四)服务承载
- 通过IIS承载WCF服务注意事项
- 承载和使用WCF服务(四) 终了
- WCF学习心得----(三)服务承载
- 从零开始学WCF(4)承载服务
- 承载WCF 数据服务
- WCF中常见的几种Host,承载WCF服务的方法
- WCF中常见的几种Host,承载WCF服务的方法
- WCF中常见的几种Host,承载WCF服务的方法
- 承载和使用 WCF 服务
- 承载和使用WCF服务
- 用IIS承载WCF服务
- 使用IIS承载WCF服务
- 使用IIS承载WCF服务
- (3)承载和运行基本的 wcf 服务
- WCF :通过配置文件来托管服务
- IIS 承载的WCF服务失败
- 另一位与西蒙斯齐名的福布斯金融大鳄——肯尼斯·格里芬
- unity手游性能优化随手记
- 见站 建好站 自助建站 一键操作
- Android Retrofit 2,RxJava 2精要实例
- 由于控制器不销毁且使用了通知而造成重复多次执行通知的事件
- WCF入门教程(四)通过Host代码方式来承载服务
- NavigationView的使用
- Severalports (8005, 8080, 8009) required by MyEclipseTomcat v7.0 are already in use.
- 理解ThreadLocal(线程局部变量)
- redis集群搭建
- 连续组数组的最大和
- flex TitleGroup组件 遍历子项
- 进阶2_OkHttp+Retrofit
- eclipse 常用东西