WCF_IIS宿主服务
来源:互联网 发布:淘宝上传3c认证入口 编辑:程序博客网 时间:2024/05/29 19:39
IIS宿主WCF服务是将服务发布并部署到IIS站点上
IIS宿主WCF服务有如下步骤:
- 添加类库项目,编写WCF服务
- 添加web项目,配置服务信息
- 发布web项目,部署IIS站点
- IIS启动服务
- 服务客户端调用(三种方式)
添加类库项目
项目中添加必要的引用 (参考:自宿主服务)然后添加一个wcf服务
添加服务接口及接口实现
具体代码可参考上一篇,服务编写是一样的。参考:自宿主服务
添加一个web项目
添加必要引用以及上面类库项目的引用。
在项目中添加一个wcf服务,命名为HelloService
删除接口类IHelloService,删除实现类中包含的HelloService.svc.cs类
再次双击HelloService.svc,可以看到一段配置信息,删除codebehind,修改Service对应的位置。
接下来在web.config中编写服务的通信配置信息
因为IIS宿主服务,服务的地址是有IIS部署时决定,所以配置信息不需要配置服务地址信息
http协议绑定服务的配置文件内容如下;
<system.serviceModel> <services> <service name="WCFIISHost.HelloService" behaviorConfiguration="HttpGetEnable"> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="NoSecurity" contract="WCFIISHost.IHelloService"> </endpoint> </service> </services> <bindings> <basicHttpBinding> <binding name="NoSecurity" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> <readerQuotas maxArrayLength="2147483647" maxStringContentLength="2147483647"/> <security mode="None" /> </binding> </basicHttpBinding> </bindings> <behaviors> <serviceBehaviors> <behavior name="HttpGetEnable"> <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior> <behavior name=""> <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior> </serviceBehaviors> </behaviors> <!--multipleSiteBindingsEnabled 允许多地址--> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> </system.serviceModel>
net.tcp协议绑定服务的配置信息如下
<system.serviceModel> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> <services> <service name="WCFNetTCPHost.Service.UserInfoService" behaviorConfiguration="HttpGetEnable"> <endpoint address="" binding="netTcpBinding" bindingConfiguration="NoSecurity" contract="WCFNetTCPHost.Service.IUserInfoService" /> <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" /> </service> </services> <behaviors> <serviceBehaviors> <behavior name="HttpGetEnable"> <serviceMetadata /> <serviceDebug includeExceptionDetailInFaults="true" /> </behavior> <behavior name=""> <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior> </serviceBehaviors> </behaviors> <bindings> <netTcpBinding> <binding name="NoSecurity" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> <readerQuotas maxArrayLength="2147483647" maxStringContentLength="2147483647"/> <security mode="None"></security> </binding> </netTcpBinding> </bindings> </system.serviceModel>
需要注意,其中的终结点还配置元数据的通信信息。
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
配置完成之后,就可以在项目中进行测试服务
设置HelloService.svc为起始页,然后点击调试web项目,就可以启动wcf测试客户端进行该服务测试。
具体可见实用小工具
HTTP协议绑定服务部署IIS
就是一般的web服务部署,发布添加站点就可以了,不做详细介绍。
NET.TCP协议绑定服务部署IIS
同HTTP协议,但是需要注意两点
1.站点启用协议net.tcp
高级设置-->启用协议
如果没有net.tcp协议 ,用逗号分隔,添加该协议
2.绑定协议是否添加net.tcp协议
下面详细介绍一下服务的客户端调用
添加一个客户端的控制台项目。
方式一:通过管道工厂创建服务客户端
添加WCF必要的引用以及服务项目引用
客户端服务通信的配置:
客户端配置内容包含 客户端通信服务配置,绑定信息配置两部分
客户端的配置要与服务端配置一致:比如绑定协议类型,安全性,是否启用可靠会话以及传输方式等。
配置内容如下:
<system.serviceModel> <client> <endpoint address="http://localhost:8088/HelloService.svc" name="HelloService" bindingConfiguration="HelloService_binding" binding="basicHttpBinding" contract="WCFIISHost.IHelloService"> </endpoint> </client> <bindings> <basicHttpBinding> <binding name="HelloService_binding" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> <readerQuotas maxArrayLength="2147483647" maxStringContentLength="2147483647"/> <security mode="None"></security> </binding> </basicHttpBinding> </bindings> </system.serviceModel>然后就可以创建客户端,调用服务啦
static void Main(string[] args) { //使用终结点的配置名称初始化 var factory = new ChannelFactory<IHelloService>("HelloService"); //创建客户端 var client = factory.CreateChannel(); try { Console.WriteLine(client.SayHello()); factory.Close(); } catch (Exception) { factory.Abort(); throw; } Console.ReadKey(); }
需要注意,WCF客户端调用服务,不能使用Using,具体原因见:客户端不使用Using
方式二:通过代理类客户端调用
这就需要使用外部工具SvcUtil.exe工具,生成客户端代理类和配置文件。具体操作见:实用小工具
生成之后,包含到项目中,将配置文件的信息粘贴到App.config文件中,就可以调用服务啦。
注意这种方式,不需要引用服务项目
调用代码如下:
static void Main(string[] args) { //自动生成的客户端代理类,且每个方法包含异步和同步两种实现 var client = new HelloServiceClient(); try { Console.WriteLine(client.SayHelloAsync().GetAwaiter().GetResult()); client.Close(); } catch (Exception) { client.Abort(); throw; } Console.ReadKey(); }
方式三:添加服务引用
项目右键添加服务引用,正确写入服务地址即可。
调用方式同方式二。
- WCF_IIS宿主服务
- WCF服务自宿主
- WCF_自宿主服务
- WCF_Windows宿主服务
- WCF宿主与服务托管
- WCF宿主与服务托管
- WCF宿主与服务托管
- WCF宿主与服务托管
- WCF宿主与服务托管
- WCF开发之宿主(Hosting) IIS/WAS宿主 Windows服务宿主 Windows应用程序
- 宿主程序为windows服务的remoting
- WCF服务怎样与宿主程序交互
- 使用WindowsService为宿主实装WCF 服务
- 用IIS做宿主的WCF服务
- (4)WCF宿主与服务托管
- WCF服务宿主及其跨域问题
- WCF服务怎样与宿主程序交互
- WCF服务怎样与宿主程序交互
- 运行maven项目报错:The method queryForInt(String) is undefined for the type JdbcTemplate
- Spring Boot简介
- vim常用命令
- java学习【web基础-JSP2-HTTP协议】
- Spring Cloud1实现注册中心and服务的注册与消费
- WCF_IIS宿主服务
- hdu 1754 I Hate It 线段树基础题
- NYOJ-64-鸡兔同笼【数论】
- RaisedCosineWindower API及加窗
- mysql 查询 某一天 某个星期 某月的记录
- 利用Java的Spark做单词统计并排序
- textField.placeholder的文字颜色修改
- Unity Text竖直显示文字
- gerrit服务器搭建总结