《WCF技术内幕》翻译13:第1部分_第2章_面向服务:为什么SO有意义和本章小结

简介:
为什么SO有意义
  开发者和架构师经常问我,“为什么我们需要面向服务?”我的回答很简单:可伸缩性、维护性、互操作性和灵活性。过去,分布式组件技术像COM紧紧地把所有的组件绑定到一起。最低限度上,这些分布式技术必须分享公共类型系统,并且常常是一个运行时。有了这些依赖,升级和软件升级变得复杂、费时和费力的。面向服务的应用系统,恰恰相反,不需要相同类型的依赖,因此显示出更加适合企业精算需求的行为。
版本升级
  应用系统的需求会随着时间的变化而变化。这个问题从计算机出现的时候就一只存在,而且并没有任何迹象表明这个行为会在将来减慢。开发者、架构师和项目经理已经付出了巨大的努力到软件开发过程的中去,希望能够调节和控制应用系统变化的数量和步骤。在整个应用系统的声明周期里,开发过程里的一些设想将会证明是徒劳的。某些情况下,最后集成应用系统的改变将会导致一系列级联的其它应用系统部分的改变。自治的、边界清晰的、基于契约的面向服务的应用提供了几层封装来缓冲这些系统部分版本升级带来的影响。在面向服务的应用系统里,消息发送者和接收者之间的唯一协定就是契约。两者都可以根据自己的期望自由改变自己的实现,只要保持契约不变。这些同样适用于组件架构,面向服务契约的普遍自然属性把发送者和接收者从实现中解耦,因此使得版本升级周期变短。面向服务并没有去掉了一个好的版本化升级过程的需求。
负载均衡
  每个应用都有一些瓶颈,优势这些瓶颈可能阻止一个应用为了增加吞吐量需求而进行的扩展。
2-4:一个传统的面向组件的应用
  在这个场景里,数据检索或许成为性能瓶颈。如果真是这个情况,一种扩展组件驱动的Web网站的方式如图2-5所示。
2-5:伸缩一个组件应用
  本质上,我们可以在另外的服务器上重新创建整个Web应用,使用负载均衡器去重定向请求到不是很忙的Web服务器上。这个类型的伸缩性在过去证明是很有效的,但是却效率低下和成本过高,并且产生配置问题,尤其是版本升级的时候。
扩展订单处理系统的一个面向服务的方法在图2-5里,例子在图2-6里。
2-6:使用服务
  面向服务的应用可以更容易地收缩应用系统需要变化的部分。这减少了总的成本和简化了配置管理。
平台随时改变
  平台变化,随着时间的过去,有时候会很快。这个确实在任何厂商的平台里存在,像补丁和服务包,并且平台的新版本经常发布。对于分布式组件,会经常有一个平台组件运行时的依赖。比如,一个系统架构师如何知道一个DCOM组件能够在Microsoft Windows Server 2000、Windows Professional 2000、 Windows XP或者 Windows Server 2003上行为一致?因为一个DCOM组件依赖于每个系统的组件运行时,许多测试场景看起来无中生有。当你开始思考测试每个可能的配置、服务包和热补丁的时候,你也许会紧张的直流鼻血。
当应用变为面向服务的时候许多这些问题消失了。这个很大程度上因为使用了平台独立的XML语法来表示消息契约。这个契约把发送者和接受者解耦。发送者就是遵守契约产生和发送消息,而接受者就是接受和处理消息。不需要序列化平台规范到消息里,所以终结点可以不受他们关注的平台版本更新的影响。进一步说,测试更简单,因为终结点必须测试的只是一个清晰的服务边界。
基于内容的路由
  过去,面向服务的消息在面临路由场景的时候一直非常困难。为了演示,围绕我们的订单处理例子我们可以建立一些商业规则:
  • 订单可以订购新商品和维修现有商品。
  • 新商品的订单会发送给制造管理系统
  • 维修订单会发送到维修管理系统
  • 两个订单,在发送给最终目标系统以前必须发送到财务系统和调度系统。
  面向服务的消息应用系统非常好地适应了这些类型的需求。本质上,路由的信息可以放置到消息头里,被终结点用来判断消息路径。
端到端的安全  
  许多分布式系统在传输级别通过点对点方式保证通信安全。传输是安全的,但是被传输的数据在传输结束以后也许就不安全了。日志文件和其它审核机制经常包含传输时保护的信息,结果,他们经常成为许多安全攻击的目标。可以使用标准的XML安全机制通过面向服务的消息来提供端到端的安全。即使消息被持久化到日志文件或者被破解攻击,如果消息使用标准的XML安全机制加密,消息里的数据是可以保证机密的。
互操作性
  当一个初始发送者发送消息给一个最终接受者时,初始发送者不需要依赖最终接受者运行的平台。如你看到的二进制消息编码,没有恒定不变的情况。一些消息格式能够引入平台依赖,但是这个是选择的问题。在纯正意义上,面向服务的应用系统式平台独立的。平台独立是XML 语法表述消息契约的普遍本性。真的可能(不是理论上)是发送一个消息给一个终结点而不知道它所运行的平台。这与生意人和管理人员产生了共鸣,因为它不需要用一个单一平台的一个同质应用的集合来取代现有的应用系统。
本章小结  
  本章阐述了面向服务的动机,和面向服务系统的一些基本概念。面向服务需要专注于应用发送、接受和处理的消息上。面向服务的系统能够取代以前传输的功能,并且把他们放到一个消息结构里(地址,安全信息,相关信息等等)。专注于消息使其能够独立于平台、硬件和运行时环境。我的观点,面向服务应用的版本弹性是 IT 组织最大的胜利,因为系统级别的升级是最贵的维护部分之一。下一章,我们会看一些构建高级消息应用系统的不同的方式,并介绍一些必备概念。



 本文转自 frankxulei 51CTO博客,原文链接: http://blog.51cto.com/frankxulei/318613 ,如需转载请自行联系原作者




相关文章
|
前端开发
WCF更新服务引用报错的原因之一
WCF更新服务引用报错的原因之一
|
C# 数据安全/隐私保护
c#如何创建WCF服务到发布(SqlServer版已经验证)
c#如何创建WCF服务到发布(SqlServer版已经验证)
171 0
|
安全 数据库连接 数据库
WCF服务创建到发布(SqlServer版)
在本示例开始之前,让我们先来了解一下什么是wcf? wcf有哪些特点? wcf是一个面向服务编程的综合分层架构。该架构的项层为服务模型层。 使用户用最少的时间和精力建立自己的软件产品和外界通信的模型。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案。且能与已有系统兼容写作。 简单概括就是:一组数据通信的应用程序开发接口。
311 0
|
C++
WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题
WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题
277 0
WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题
WCF使用纯代码的方式进行服务寄宿
服务寄宿的目的是为了开启一个进程,为WCF服务提供一个运行的环境。通过为服务添加一个或者多个终结点,使之暴露给潜在的服务消费,服务消费者通过匹配的终结点对该服务进行调用,除去上面的两种寄宿方式,还可以以纯代码的方式实现服务的寄宿工作。
1017 0
|
Windows
WCF服务寄宿到IIS
一.WCF简介: Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有HTTP和FTP的相关技术。
1232 0
WCF服务自我寄宿
WCF服务的寄宿方式 WCF寄宿方式是一种非常灵活的操作,可以寄宿在各种进程之中,常见的寄宿有: IIS服务、Windows服务、Winform程序、控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者方便、高效提供服务调用。
1145 0
|
C#
C#面向服务编程技术WCF从入门到实战演练
一、WCF课程介绍 1.1、Web Service会被WCF取代吗? 对于这个问题阿笨的回答是:两者在功能特性上却是有新旧之分,但是对于特定的系统,适合自己的就是最好的。不能哪一个技术框架和行业标准作比较,任何对于二者的比较都是错误的,因为两者根不不在同一个范畴里。
1604 0
|
网络架构
(纯代码)快速创建wcf rest 服务
因为有一个小工具需要和其它的业务对接数据,所以就试一下看能不能弄一个无需配置快速对接的方法出来,百(以)度(讹)过(传)后(讹),最后还是对照wcf配置对象调试出来了: 1.创建WebHttpBinding 2.
1114 0