WCF随录(1)—从面向对象到面向服务

WCF的由来

  想要了解一门技术,首先需要知道它为何而生。任何技术都不是凭空出世,一定都有它存在的价值。WCF也一样,它并不是一个从来就有的东西,也不完全是一个全新的概念。它也是伴随着老技术的变革而生。

  在WCF这项技术出现之前,分布式通讯的应用开发可以说处在一个纷乱的战国时期。微软更是其中的领导者之一,从.NET  Remoting,WebSerivce,到WSE,Enterprise Service, MSMQ 。这一系列产品都表明了微软不断创新变革的新举措。特别是WebSerivce的出现更是使分布式开发达到了一个新的应用高度。较之前的技术而言,它不仅可以实现跨网络,跨平台,高度系统集成,不受通讯协议限制,且具有较好的安全性。伴随其推出的SOAP(Simple Object Access Protocol)由于得到了IBM,莲花(Lotus),康柏(Compaq)等公司的支持也成为业界的标准消息交换协议。另外作为服务描述的WSDL(Web Services Description Language)更得以一统天下。微软以其强大的技术和市场优势,用标准牢牢掌握了整个分布式开发领域,令其对手望尘莫及。

  且不谈这种垄断是否对行业有何消极因素,但它的优势是显而易见的。我们再也不必担心要在众多的方案中去选择其一了,因为微软已经为我们做好了一切。我个人认为,这种统一带来的积极意义更加明显,相对于尚未完全成熟的市场,一个稳定而强有力的技术保障是最为必要的。而微软秉承了一贯的风格,他并没有在WEB SERVICE的老路上停留不前,而是在对手尚未来得及喘息之时,又紧接着推出一个更加强力的炸弹。这就是WCF(Windows Communication Foundation)。从这个名字上,我们就看出了微软的野心。事实也证明了它将一统windows平台下未来的分布式通讯领域。

先谈SOA

  讲WCF就不能不谈SOA(Service Oriented Architecture)面向服务的架构。W3C对于SOA的定义是“服务提供者完成一组工作,为服务使用者交付所需的最终结果。最终结果通常会使使用者的状态发生变化,但也可能使提供者的状态改变,或者双方都产生变化”。这句话虽然如此的绕口,但从这里可以看出,它的核心就是服务。

  就像本文一开头所谈到的,SOA绝不是一朝一夕就变出来的。在《学习WCF从原理到实践》这本书上就讲到“达成SOA的路径是逐渐累加的硅步”。它是企业需求深化到一定阶段才演变出来的。在这之前,人们津津乐道的一直是(OOP)面向对象。因为这段时期,企业的需求是部门到部门、部门到个人之间。对于系统的要求则拘束于应对业务需求的变化,因此类封装就是其核心。

  当系统复杂度进一步加深时,延伸到了COP(Component Oriented Programming)面向组件的程序设计,它仅向外界暴露其接口,而自身却有着独立的物理单元。但这样仍然没有完全解决消息传递、安全性、以及跨平台的问题。最终解决这一问题的重任又回到了WEB Service和WCF所支持的面向服务的体系结构(Service-Oriented Architecture,SOA)身上。它通过契约和接口将应用程序的不同功能单元(称为服务)联系起来。接口是采用中立的方式进行定义的,它独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以一种统一和通用的方式进行交互。

   这种体系结构实现了服务之间的松耦合,它应对整个系统间各种服务内部所发生变化的能力更加突出。也能够灵活的适应外部环境的变化和业务的需要。通过WSDL来描述的接口,使得这种灵活性展现无疑。下图展示了面向服务的架构在分层系统中所处的位置。

     可以看出,在传统的业务逻辑层上,增加了一个服务层。这与传统架构不同的是,服务层使业务逻辑层不再直接暴露给客户端,而是通过服务这个中介来访问。这样,当业务逻辑发生变化时,只要保持服务的稳定,就达到了系统的相对稳定,而客户层是面向服务而不是面向业务逻辑,因此不需要做大的变动。即使客户使用不同的技术,比如JAVA或其它。只要服务提供的接口相同,就不需要担心访问无法完成。 另外一点是,每一个服务在系统中都是一个自治的单元(使用虚线划分的区域),因此,整个服务就是可以移动并可替换的,这更加增强了系统应对变化的能力。

WCF与SOA

  WCF对于SOA来说,其关系就好比汽车与发动机。决定一辆好车的最直接因素就是发动机(这也是为何国产车一直不能翻身的主要原因)。 当然通过优化的设计能使普通的发动机在一辆车上发挥最大功效(框架设计也是决定系统系能的重要因素)。但要想有质的变革还是需要解决心脏问题。虽然在这之前业界早已出现了众多的解决方案,比如微软、IBM、BEA系统、Sun微系统、Oracle、Tibco、惠普、佳能、Commerce One、富士通,Software AG、北电、Verisign与WebMethods(由此也可见SOA的市场价值)。但WCF却是实现所有标准及功能的集大成者。使用WCF开发SOA的架构不再需要开发者过多去考虑网络、平台、安全性等难以控制的东西,而是简单到使用一个配置文件来完成这一切。最为重要的是,这样配置文件加上WCF的契约和接口,真正完全实现了松耦合的架构,更为适应SOA系统的实际需要。在后面的章节中,我们会详细讲解这种架构的应用。

  WCF为我们带来了面向服务架构新的设计体验。它整合了微软之前的所有相关技术。可以认为,它的出现意味着微软的SOA战略迈入了重要的一个阶段。也给用户提供了一个简单、优秀、完整的开发平台。

原文地址:https://www.cnblogs.com/jinqi79731/p/1380795.html