一、为什么要使用 net.tcp 绑定
为了更好地实现双向通信,.NET Framework在 3.0的时候引入了一个全新
的通信协议Net.TCP并作为WCF的一部分。现在Net.TCP将包含在
Silverlight 4中,相比于HTTP Polling Duplex,它极大地改进了吞吐量
和连接的数量。
我们可以通过Silverlight 4绑定到HTTP Duplex Services上,因而应用可
以不断轮询服务以进行更新,这模拟了双向通讯的工作方式。Silverlight
4则引入了一个更好的解决方案:Net.TCP Port Sharing Service。与HTTP
不同,Net.TCP提供了本地的双向通信机制,极大地改进了应用的性能。打
开的端口可以由多个应用共享,然而Silverlight只能访问介于4502-4534
范围之间的端口。
根据微软WCF开发经理Tomasz Janczuk所述,相对于HTTP Duplex来说,
Net.TCP在如下方面进行了重大的改进:
* 吞吐量:对于UI线程来说提升了5.5倍,对于worker线程来说提升了
870倍。
* 最大的客户端数量:服务器可支持的连接客户端数量是之前的5-6倍
。
该协议适用于对通信速度要求很高的Silverlight应用。但其一个严重缺陷
是所使用的一系列端口通常会被防火墙阻止,因此它不适合于公网、外部
应用,而适合于局域网。另一个问题是它不支持SSL,这样就会遇到安全问
题,Janczuk说将在未来解决该问题
NetTcpBinding 使用 TCP 完成传输,使用二进制进行消息编码,为消息
版本使用 SOAP 1.2。该绑定默认启用传输安全并可支持事务(如果启用了
事务)。您可以看出,此绑定配置的重点是创建一个在 Windows 环境中性
能较好的信道堆栈,为您提供替换各种 COM+ 和 .NET 远程投资的极好选
择。
net.tcp 绑定的主要好处是性能。如果在您的安全的 intranet 环境中的
WCF 服务要快速的 Silverlight 应用程序进行通信可以使用此绑定。
现在此 net.tcp 绑定的目的,是要在 intranet 环境中使用。因为此协议
是 Silverlight Socket 实现的基础上生成的同一网络安全限制的约束。
Silverlight Socket TCP的限制端口范围是 4502 – 4534 。因此,它要
求在我们可以控制防火墙配置环境。以这种方式我们可以轻松地监视
Silverlight 应用程序通信和维护企业网络的安全性。
Net.tcp 协议在 Silverlight 中的也不支持传输层安全性。为例,我们不
能有 SSL 通信。
Net.tcp 双功能支持
net.tcp 绑定的另一个重要好处是,支持双工通信。现在我们可以使用同
一个 HTTP 投票从以前版本的 Silverlight 双工代理,并只需指定该代理
将使用 net.tcp 绑定,一切都将工作。我们可以使 WCF 服务使用 HTTP
Internet 客户端轮询双工的协议,并为内网客户端使用 net.tcp 协议。
编程模型是和以前一样的,使用方法很简单。
二、WCF服务寄宿方式
WCF服务寄宿方式:通过自我寄宿的方式寄宿服务和通过IIS寄宿服务
服务寄宿的目的就是开启一个进程,为WCF服务提供一个运行的环境。通过
为服务添加一个或多个终结点,使之暴露给潜给的服务消费者。服务消费
者最终通过相匹配的终结点对该服务进行调用。
WCF服务需要依存一个运行着的进程(宿主),服务寄宿就是为服务指定一
个宿主的过程。WCF是一个基于消息的通信框架,采用基于终结点
(Endpoint)的通信手段。终结点由地址(Address)、绑定(Binding)
和契约(Contract)三要素组成。
地址(Address):地址决定了服务的位置,解决了服务寻址的问题;
绑定(Binding):绑定实现了通信的所有细节,包括网络传输、消息编码
,以及其他为实现某种功能(比如安全、可靠传输、事务等)对消息进行
的相应处理。WCF中具有一系列的系统定义绑定,比如BasicHttpBinding、
WsHttpBinding、NetTcpBinding等;
契约(Contract):契约是对服务操作的抽象,也是对消息交换模式以及
消息结构的定义。
可以通过代码的方式完成服务的寄宿,也可以通过配置文件完成服务的寄
宿,但在进行真正的WCF应用开发时,一般不会直接通过编码的方式进行终
结点的添加和服务行为的定义,而是通过配置的方式进行,配置文件的编
写可以直接使用VS提供的配置工具。你可以通过VS的工具(Tools)菜单,
选择“WCF Service Configuration Editor”子项,开启这样的一个配置
编辑器,具体的使用方法请查阅MSDN。
三、寄宿于IIS的基于net.tcp绑定的WCF的服务部署方式
1.为WCF服务创建.svc文件
基于IIS的服务寄宿要求相应的WCF服务具有相应的.svc文件,.svc文件部
署于IIS站点中,对WCF服务的调用体现在对.svc文件的访问上。.svc文件
的内容很简单,仅仅包含一个ServiceHost指令(Directive),该指令具
有一个必须的Service属性和一些可选的属性。所以最简单的.svc仅仅具有
一个包含Service属性(该属性指明了相应的WCF服务的有效类型)的
ServiceHost指令。
2.为WCF服务创建虚拟目录
在IIS7中,网站本身不能用于host 使用netTcp协议的WCF服务。如果要
hostWCF服务,则必须用网站下挂的应用程序,并且给应用程序注册支持
netTcp协议。注册协议时,netTcp用的哪个端口譬如net.tcp 4502:* 那么
调用该端口的客户端web.config中的endpoint
address=“net.tcp://machineName:4502/xxxService/xxx.svc”
只 IIS7 有为 net.tcp 绑定支持,所以您必须具有 IIS7,您的计算机上
安装了。
对 Windows 进程激活服务 (WAS) 承载 WCF 服务与内部 IIS7 net.tcp 绑
定。若要启用 WAS 上承载 IIS7 的 net.tcp 你必须做几件事:
1) 您必须启用 Windows Communication Foundation 的 HTTP 激活功能
。IIS 的一个重要功能是能够在收到该应用程序的 HTTP 请求的激活一个
web 应用程序。一个类似的功能存在 IIS7 的 net.tcp,但它不可能在默
认情况下启用。 (控制面板-程序-打开或关闭Windows应用程序-勾选
Microsoft.Net Frameworks 3.0/3.1下的所有选项)
2) 您必须设置应用程序使用已启用的.net 4.0 框架,并且必须启用
net.tcp 协议。(网站对应的应用池中设置框架为.NET4.0,网站高级属性
中启用协议加上”,net.tcp”,注意网站和应用程序都要启用net.tcp协议
)
3) 您还必须使用端口的 net.tcp 绑定 4502 – 4534 范围内。 选中网
站,点击最右边操作区的绑定,添加网站绑定,选中net.tcp然后再绑定信
息中输入形如:4502:*
注意几个问题:
1)在非IIS host的程序中,因为有个问题,WCF的bug貌似(Artech在他的
博客中谈到这个问题:WCF技术剖析之六:为什么在基于ASP.NET应用寄宿
(Hosting)下配置的BaseAddress无效),所以在服务的endpoint 中我们
这么写:
<endpoint address=”net.tcp://localhost/MyService”
binding=”netTcpBinding” contract=”MyService.IMyService” />
但是,在IIS中BaseAddress是无效的,IIS自动加了应用程序站点名称作为
前缀,即:”net.tcp://localhost/MyService”,所以我们在IIS host的
WCF服务里的配置文件的endpoint address中再写一遍地址就重复了,导致
服务无法正确读取。
IIS host的WCF 服务正确的endpoint的配置写法是:
<endpoint address=”" binding=”netTcpBinding”
contract=”MyService.IMyService” />
2)silverlight客户端添加服务引用的时候,点击发现,查找到的是http
开头的URI而不是以net.tcp开头的URI,因为服务的元数据是通过http协议
传输的,添加服务后查看到你服务的配置文件上的client中的endpoint链
接是形如这样的:net.tcp://shirlly-
pc:4502/MyWebChat.Web/DuplexService.svc
3)如果进行了如上的配置,还是找不到服务,那有可能是跨域权限的问题
,你要在部署站点的根目录下添加一个策略文件,注意是放在根目录的下
面而不是放在应用程序下面(貌似这个策略文件只能放到WWWROOT下面才起
作用)
总结配置wcf的步骤
一系统环境准备:
1、必须是IIS7
2、在windows添加删除程序中启用 Windows Communication Foundation
二、部署配置:
1、只要在wwwroot放置一个策略文件即可,不需要在站点上方策略文件
2、将服务寄宿到IIS上的一个站点上可以单独建一个站点,也可以寄宿到默认站点
3、修改站点的应用池的.netFramework版本为v4.0
4、在寄宿的站点上将服务添加为站点的应用程序
5、分别在站点和应用程序的高级配置里加上协议net.tcp
6、在站点上添加net.tcp 主机为4502:*的绑定
重启IIS
推荐WCF学习的文章:
http://www.cnblogs.com/artech/archive/2007/09/15/893838.html
http://www.cnblogs.com/chocstarfish/archive/2010/06/26/1765568.ht
ml(demo有点小bug后面会把修复后的Demo上传)
分享到:
相关推荐
4. **配置WCF服务**:在服务的配置文件(web.config或app.config)中,设置服务行为、绑定和终结点,确保Silverlight客户端能正确访问。 5. **处理服务调用**:在Silverlight的登录按钮事件处理程序中,调用服务...
本教程将通过一个具体的聊天应用程序实例,深入探讨如何利用WCF实现聊天通信程序。 首先,我们要了解WCF的基本组件和概念。WCF服务是由服务合同(Service Contract)、数据合同(Data Contract)、绑定(Binding)...
标题与描述均提到了“vs2010+Silverlight4+wcf开发部署全过程”,这表明文章将详述使用Visual Studio 2010、Silverlight 4以及WCF(Windows Communication Foundation)进行应用程序开发与部署的具体步骤。...
该工具为作者首次利用WCF实现网络通信,可以在同一局域网内实现异机通信,仅供参考,如有不足,请另寻贵资!
1 安装开发环境 操作系统:Windows 7 专业版 ... 银光套件:Silverlight.exe Silverlight4_Tools.exe Silverlight_Developer.exe ...3 建立一个vs2010+silverlight4+wcf的项目 为了少啰嗦,大家看图吧。
然而,通过WCF,我们可以打破这一限制,使Silverlight客户端能够调用服务器端的服务,实现远程数据访问和业务逻辑处理。 首先,为了在Silverlight中引用WCF服务,我们需要在服务器端创建一个WCF服务。这涉及到定义...
本文将详细介绍如何使用Visual Studio 2010 (VS2010)、Silverlight 4 和 WCF技术进行开发部署的过程。Silverlight是一种轻量级的插件技术,用于创建丰富的交互式用户界面,而WCF(Windows Communication Foundation...
本文将详细介绍如何使用SilverLight 4和WCF搭建一个功能齐全的聊天室应用,重点介绍配置IIS的过程。 #### 二、项目简介 本项目主要采用SilverLight 4和WCF技术栈,使用Visual Studio 2010作为开发环境,网络通信层...
本篇文章将详细探讨如何在Silverlight应用程序中集成WCF服务进行通信。 首先,我们需要创建一个新的Silverlight应用程序项目。在Visual Studio中,选择“文件”>“新建”>“项目”,然后在模板中找到“Silverlight...
在视频聊天Demo中,可能使用了Silverlight的RIA服务或者WCF(Windows Communication Foundation)服务,来处理客户端和服务器之间的通信。这些服务能够处理音视频数据的编码、解码、压缩和传输,确保视频聊天的流畅...
"在IIS上部署Silverlight+WCF项目教程" 本教程旨在指导用户如何在IIS上部署Silverlight+WCF项目,并解决可能遇到的问题。 首先,需要在IIS上配置好Silverlight+WCF项目的环境。具体来说,需要在IIS中添加以下MIME...
在实现 Silverlight 和 WCF 的数据压缩时,通常有以下步骤: 1. **选择压缩库**:在提供的压缩包子文件中,可能包含了如Cellbi.Lib和Cellbi.SvZLib这样的第三方库,它们可能是用于数据压缩的实现,例如ZLib,这是一...
在这个“WCF实现的聊天程序”中,我们将探讨如何利用WCF技术来构建一个实时的聊天应用程序。 ### 一、WCF基础概念 1. **服务契约(Service Contract)**:定义服务提供的操作,即服务能做什么。在C#代码中,这通常...
WCF 双工 实现聊天 注意要点,委托链, 静态变量 basehttp地址和tcp ip协议结合 VS2010
4. **调用WCF服务**:在Silverlight应用中,使用`System.ServiceModel.ChannelFactory`或`System.ServiceModel.ClientBase`创建服务代理,并通过代理方法调用WCF服务。 5. **处理异常**:由于跨域问题可能导致异常...
实现Silverlight与WCF的异步调用通常涉及以下步骤: 1. **创建WCF服务**:在服务器端,你需要创建一个WCF服务接口和实现。这个服务将公开一系列操作合同,供Silverlight客户端调用。记得设置服务的绑定和行为,使其...
【WCF + Silverlight 聊天室】是一种基于Windows Communication Foundation (WCF) 和 Silverlight 技术构建的分布式聊天应用。WCF是微软提供的一个全面、统一的框架,用于构建面向服务的应用程序,而Silverlight则是...
Silverlight结合了WCF(Windows Communication Foundation)可以实现丰富的客户端交互体验,并能够与服务器端进行高效的数据交换。然而,在实际开发过程中,尤其是在需要操作Office文档如Word时,往往会遇到权限问题...
用WCF实现绘图,同时可以聊天,通过web实现功能
4. **绑定选择**:Silverlight与WCF通信时,可以选择不同的绑定类型,如BasicHttpBinding、WsHttpBinding等。考虑到Silverlight的限制,通常会选择BasicHttpBinding,因为它不支持WS-Security等高级特性,但能满足...