基于WAS 部署WCF服务
来源:互联网 发布:objective c编程 pdf 编辑:程序博客网 时间:2024/06/04 19:47
Windows (Process) Activation Service (WAS)作为 IIS7.0 特有的新增功能,和以前IIS 6.0的功能相比更加强大,因为它提供并支持除HTTP之外的更多协议,比如TCP方式和Pipe(管道)方式。利用WAS作为WCF(Windows Communication Foundation)的宿主,我们能充分利用WAS的很多优点,因为我们再也不用为非HTTP方式的WCF Service单独编写宿主程序了。而WAS本身的特点,也让我们的服务端程序能享受到只有以往的HTTP方式的WCF Service才能拥有的很多特性。
WAS在Windows Vista/7/2008/R2中,其实是由一个单独的Windows Service来实现的 在Windows服务里头可以找到一个Windows Service,就叫做"Windows Process Activation Service"。由此看来,WAS的进程和IIS进程在物理上是隔离开的,能为我们提供一个灵活、稳定的WCF Service宿主环境。WAS内部的工作机制,大致和ASMX WebService类似。
IIS 7上 引入了以下三组网络监听器(Listener)和监听适配器(Adapter),实现了基于TCP、Named Pipes和MSMQ的网络监听。分别是:
在IIS 7的结构如下
由于IIS 7提供了基于非HTTP网络协议的监听支持,那么就意味着当我们当我们通过IIS进行WCF服务寄宿(Hosting)的时候,可以采用非HTTP的通信方式。其中的TCPListener|TCP Listener Adapter 依赖于服务NetTcpPortSharing,为net.tcp绑定提供tcp的端口共享,具体可参看启用WCF NetTcpBinding的共享端口。
首先,我们需要查看Windows 7/2008 R2的组件中,是否打开了WAS的功能,打开控制面板,打开“程序和功能”对话框,在"打开/关闭 Windows功能"对话框中,确保下面图中的功能项被打开:
其实在这一部操作之后,windows会自动帮我们在IIS中做好配置,打开IIS的站点配置,检查IIS站点中的绑定:
确保net.tcp方式,绑定到808端口
打开站点的高级设置,确认"已启用的协议"中,填有"net.tcp",没有的话,可以补上。
然后是建立应用程序目录,这个目录等下会用来部署WCF的Service端程序。建立好目录后,检查"高级设置–已启用的协议"中,是否已填上net.tcp,如果没有手工填上。到这里,基本的host环境我们已经设置好了。
服务端的配置如下:
<system.serviceModel>
<services>
<service name="DummyEnterpriseService.Implementation.DummyService"
behaviorConfiguration="DummyServiceBehavior" >
<!-- Service Endpoints -->
<endpoint address=""
binding="netTcpBinding"
contract="DummyEnterpriseService.Interface.IDummyService">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="DummyServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
这里要注意的是endpoint的 address的填写,我填写成"net.tcp://192.168.1.100/DummyService“,得到下图的错误:
然后把address改成空的或者不设置就OK了,没有搞明白其中的道理。
相应的客户端的配置写法也比较特别:
<system.serviceModel>
<client>
<endpoint address="net.tcp://192.168.1.100/DummyEnterpriseServicePublisher/DummyService.svc" binding="netTcpBinding" contract="DummyEnterpriseService.Interface.IDummyService"/>
</client>
</system.serviceModel>
endpoint的地址和http方式一样的,就是从http换成net.tcp而已。
使用 WAS 扩展 HTTP 之外的 WCF 服务
- 基于WAS 部署WCF服务
- 在WAS中承载WCF服务
- WCF中配置文件部署服务
- 基于WCF的REST服务
- Windows Azure平台部署WCF服务
- 部署wcf服务的时候报错。
- WCF服务部署后异常的处理
- wcf之三(通过文件部署服务)
- WCF服务在IIS7.0中用WAS托管
- WCF服务在IIS7.0中用WAS托管
- 视频:WCF实战开发、部署WCF服务计算器、跨机器调用WCF服务
- WCF客户端编程-基于服务引用方式
- 部署承载于 Internet 信息服务中的 WCF 服务
- 部署在wcf rest服务上的wcf rest服务调用页面程序
- 部署was
- was服务武器安装部署遇到的问题
- 如何在IIS中部署和注册WCF服务(转)
- 如何部署带有wcf服务的silverlight 程序
- SharePoint 2010 VHD下载
- memcached的最新状态
- ASP.NET Ajax 库
- ASP.NET进程优化
- IronPython 承载和消费WCF服务
- 基于WAS 部署WCF服务
- Windows Server 2008 R2 Server Core
- pb11.2可用pb11.5的lic文件
- 图形化的2008R2 Server Core 配置管理工具
- 打造Window Server 2008 R2的工作站
- ping源代码
- static inline 和 extern inline 的含义
- 郁闷了很久总算把TcxDBFilterControl中Like操作的%加上了
- list