WCF 3.5在实际应用中特点分析
创始人
2024-06-23 09:20:16
0

WCF开发插件,是由微软公司推出的一款功能强大的.NET Framework重要组件。它的出现,对于开发人员来说是非常有用的。在这里我们将会通过对WCF 3.5的相关特点的介绍,来对此进行一个充分的掌握。#t#

.NET Framework 3.5 中的 WCF 构建于 .NET Framework 3.0 的扩展点之上,从而为构建符合 Web 原则的服务提供一流的支持。它包含一个易于使用的 HTTP 编程模型、JavaScript Object Notation (JSON) 消息传递功能,以及新的整合 API,使创建和使用整合的内容变得非常简便。凭借此功能集,WCF 现已成为将服务连接到 Web 客户端的首选服务平台,不论这些客户端是 ASP.NET AJAX 控件、SilverlightTM 客户端,还是浏览器。

应该说,这对于微软的SOA战略来讲,是一个非常有力的改进与增强。如何将原有的BS系统、富客户端与服务进行通信,提供服务和消费服务,对于一个企业要实现SOA解决方案来讲,始终是一件弥足轻重的任务。可以说,WCF 3.5提供的简洁的HTTP编程模型,弥补了这一缺点。

使 .NET Framework 3.5 中的 WCF 如此引人注目的特色之一是,以 Web 为中心的通信与 SOAP 和 WS-* 标准组合到了一个服务堆栈和对象模型中。这意味着您可以构建这样一个服务,即采用 SOAP 和 WS-* 在企业内部或跨企业边界进行通信,同时还可以将同一服务配置为使用 Web 协议与外部通信。

这是多么让人愉快的选择!这意味着对于同一个服务,面对不同的场景,我们可以选择不同的协议完成与客户端的通信。尤其是WCF支持基于TCP传递SOAP/WS-*消息,而一直以来,WCF到WCF之间采用二进制形式的消息传递,使得我们可以构建更加快速的企业内部网,实现企业信息化的高效与稳定。

WCF对于REST的支持已经到了空前强大的地步。使用WCF的REST模式,可以发送POX(Plain Old XML)消息或者使用联合(Syndication)格式。WCF 3.5专门提供了WebHttpBinding,WebHttpBehavior,以及关于HTTP动作的特性,例如WebGetAttribute和WebInvokeAttribute。其中,WebGetAttribute对应HTTP的GET动作,而WebInvokeAttribute则可以被除HTTP GET之外的动作所使用。例如:

 

  1. [ServiceContract]  
  2. public interface IPictureService  
  3. {  
  4. [OperationContract]  
  5. [WebGet(UriTemplate = "picture/{pictureId}")]  
  6. Stream GetPicture(String pictureId);  
  7. [OperationContract]  
  8. [WebGet(UriTemplate = "picture/t/{pictureId}")]  
  9. Stream GetPictureThumbnail(String pictureId);  
  10. [OperationContract]  
  11. [WebInvoke(UriTemplate="update", Method="POST")]  
  12. void UpdatePictureInfo(PictureInfo info);  

为了支持对应的客户端代理的创建,WCF 3.5还增加了一个工厂类WebServiceHostFactory以及宿主类WebServiceHost,前者继承于ServiceHostFactory类,后者则继承自ServiceHost类。

WebServiceHostFactory 类型适用于 IIS 承载的情形,这样就不需要命令性或配置文件承载信息。.NET Framework 3.0 中的 WCF 引入了 .svc 文件,作为在 IIS 中承载 WCF 服务的激活目标。这些文件包含了一些指令,类似于 ASP.NET 中的页面指令。将 WebServiceHostFactory 添加到 .svc 文件指令的 Factory 属性会创建一个 ServiceHost、添加一个终结点(与 WebHttpBinding 使用适当的约定)、将 WebHttpBehavior 添加到该终结点,然后打开 ServiceHost:
< %@ ServiceHost Language="C#" Service="PictureService" Factory="System.ServiceModel.Web.WebServiceHostFactory" %>服务的 web.config 文件不包含任何与 WCF 相关的条目。

通过WCF 3.5增加的对Syndication的支持,可以非常方便的创建RSS或ATOM源。文中写道:

.NET Framework 3.5 充分支持整合内容的创建和使用。它支持 RSS 2.0 和 ATOM 1.0 格式的创建及使用、支持添加整合扩展的各种方式,甚至还支持实现其他格式的功能。编程模型避免了开发人员直接处理整合格式细节,从而使其易于使用。

虽然新的整合功能由 WCF 小组编写,但它并不依赖于 WCF。事实上,所有与整合相关的类型都是 System.Syndication 命名空间的一部分,虽然它们位于 System.ServiceModel.Web.dll 程序集中。您可以从任何承载了 AppDomain(ASP.NET、WPF 应用程序、NT 服务等)的进程使用 .NET Framework 3.5 的整合功能。这个功能意味着您可以通过任何传输(而不仅仅是 HTTP)提供或使用整合的内容。然而,当与 WCF 中的 HTTP 编程模型结合后,也可以将整合添加到现有的 SOAP/WS-* 服务中。

如下代码演示了如何检索一个 ATOM 1.0 源、将其转换为 RSS 2.0,然后将新的 RSS 表示输出到控制台:

  1. // read an ATOM feed  
  2. Uri feedUri = new Uri("http://blogs.msdn.com/justinjsmith/atom.xml");  
  3. SyndicationFeed feed = SyndicationFeed.Load(feedUri);  
  4. // transform it to RSS  
  5. Rss20FeedFormatter formatter = new Rss20FeedFormatter(feed);  
  6. XmlWriter writer = XmlWriter.Create(Console.Out, null);  
  7. // write it to the Console  
  8. formatter.WriteTo(writer);  
  9. writer.Flush();  

WCF 3.5的相关特点就为大家介绍到这里。

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...