zoukankan      html  css  js  c++  java
  • 一步一个脚印学习WCF系列之WCF概要—WCF与SOA(二)

        阅读目录

      一:什么是WCF?

      二:WCF与SOA之间的关系

      三:对比SQA架构和非SQA架构

        一:什么是WCF?

        .Windows Communication Foundation

          WCF全称叫做Windows Communication Foundation(Windows通信基础),从全称可以看到是为我们提供基于Windows平台下关于通信方面的一个基础架构,利用这个WCF我们能够实现基于Windows平台下的各种通信技术的开发以及应用。

        .NET FrameWork 3.0的组成部分

        WCF本身是.NET FrameWork 3.0的组成部分之一,从图一中大家可以看到WCF和WF,WPF,CardSpace一样都作为.NET FrameWork 3.0的组件存在于.NET FrameWork 3.0当中的,在Windows Vista和Windwos Server 2008操作系统当中,WCF作为操作系统的一部分存在的,也就是说如果你现在使用的是这两个操作系统,意味着你现在操作系统本身已经支持WCF了,如果你是Windows XP或者Windows Server 2003操作系统的话,要使用WCF的话请去微软网站上下载.NET FrameWork 3.0,就可以在开发当中使用WCF的特性了。

                        

                                    图一

        .Microsoft平台上的SOA架构

        WCF能给我们带来哪些好处或者说它具体的作用是什么?WCF是Microsoft平台上的一个SOA架构,主要作用是构建分布式和可交互操作的应用程序。

        .统一ASMX,.NET Remoting,Enterprise Service的开发模型

        它的一个最大的特点是把以前的多种的开发模型统一了起来,在WCF以前的话,我们要开发一个分布式的系统的话,我们可以使用ASMX也可以使用NET Remoting等,对于不同的问题我们要使用不同的开发模型来解决,这样的话给我们带来了一个问题,就是说作为我们开发人员来说,我们在解决不同的问题要学习不同的技术,这样无疑为了我们增加了学习量,WCF的出现统一了各种不同的开发模型,使得我们在一个统一的编程模型当中来使用不同的技术去解决不同应用中的需求,它的另外一个特点是在WCF当中它把配置提高到了非常灵活的一个层面,像一些协议的选择,消息的格式,进程的分配等等我们可以通过配置文件来完成。

        .面向服务

        WCF是面向服务的基础架构。

        .松耦合

        在传统的分布式应用程序当中,如果我们有新的需求或者说我们的部署环境发生了变化的话,我们要去修改我们的代码,我们的项目需要编译,需要重新在客户的生产服务器上来部署,这样给开发人员和客户带来了非常麻烦的工作。现在在WCF当中我们只需要修改配置文件就可以了。

        .可交互

        WCF提供了非常好的可交互性,可交互性主要体现在两个方面,第一个方面是遵循基于Web Services的核心标准,这种核心标准实际上是WS*的行业的Web Services标准,这方面的好处体现在,我们利用WCF构建出来的Web Service它具有了很强的跨平台的特性。也就是说我们这个服务是利用WCF构建的,那么我们使用了行业认可的WS*这种标准的核心协议,使用其他技术来构建的客户端可以无障碍的来访问基于WCF构建的服务或者Host,WCF在设计的时候充分考虑了可扩展性的需求,一但出现新的协议,或者原有的协议发生改变,WCF能够快速的更新。

        .整合性

        把早期的微软的一些构建分布式应用程序的技术,整合成WCF。

      二:WCF与SOA之间的关系

        .WCF与SOA之间的关系

        大家看这个图二,下面这个图二是典型的三层架构图,分为客户层,业务逻辑层,数据访问层,客户层调用业务逻辑层,业务逻辑层根据不同的业务进行处理,当涉及数据访问的时候,会调用下面的数据访问层,来进行数据的获取和更新,这样就存在一个问题,客户层和业务逻辑层是直接暴露的,这种直接暴露的关系一方面会与具体的技术产生强烈的耦合性,比如说我们的业务逻辑层是使用Com技术来构建的,那么客户层就必须使用Com的方式来访问业务逻辑层。随着Web Service的发展,现在基于SQA的架构是在业务逻辑层和客户层之间,我们封装成一个Service层(服务层)如图三,这个服务层里面,它把一个一个业务逻辑封装成为Service暴露给用户,Web Service是通过Http协议来走的,并且由于Web Service是行业标准的一个协议,就破除了前面所讲的基于技术强烈的耦合性。另一方面非SOA架构,比如面向对象的设计中,作为业务逻辑层而言它暴露给客户层的是一个一个的对象以及一个一个方法,面对一些比较复杂的业务逻辑,可能会涉及到多个对象以及多个方法的互操作,由于在传统的非SOA架构下业务逻辑层与客户层是直接暴露的关系,客户层的开发人员会直接看到业务逻辑层的相应对象以及相应的方法,在SOA出现以后呢,通过服务层它可以把一个一个对象封装成一个服务,通过把这个服务暴露给客户层,再有客户层的开发人员调用这些服务最终来满足用户的需求,这样当用户的相应的业务逻辑大发生变化的时候,我们只需要修改业务逻辑层里面相应的代码,只要我们的服务没有发生变化我们的服务就不需要去进行修改,也就意味着客户层不需要去修改,这样的话客户层和业务逻辑层就形成了松耦合的关系。

      三:对比SQA架构和非SQA架构

      1:安全性

      非SOA架构,比如面向对象的设计中,作为业务逻辑层而言它暴露给客户层的是一个一个的对象以及一个一个方法,比如:User user = UserControl.GetUser(1);我们从这段代码中能够看出客户层在调用的时候需要传入一个user id为1的数,业务逻辑层UserControl.GetUser返回的是个user对象,这就是业务逻辑层对于客户层是直接暴露的关系

      2:耦合性

      当我们业务逻辑层的代码发生变化时,比如:改为UserControl.GetUser(id,name);以前需要传入一个id就能返回user对象,现在得传入id和name才能返回一个user对象,那么处于调用角色的客户层就得修改它的代码User user = UserControl.GetUser(1,"张三");这样意味着修改了业务逻辑层的代码,你得告诉客户,它调用的的代码也得响应的更改,如果:客户层调用的是服务的名称,比如:MyService,而MyService指向UserControl.GetUser这个方法,那么无论我们的UserControl.GetUser怎么变化,只要客户层调用的是服务的名称没有发生变化那么客户层就不需要去修改代码了 

    图二
    图三
     
  • 相关阅读:
    获取短信验证码(60s)-input
    springboot环境搭建(基于eclipse插件)
    【python】hanio【汉诺塔】
    Integer 和 Long 类型之间转换
    ora-12638 credential retrieval failed
    win7变热点
    MyEclipse的Expressions没有结果的解决办法
    MyEclipse运行到断点也跳过的问题
    org.hibernate.PropertyNotFoundException: Could not find a getter for employee in class com.itcast.f_hbm_oneToMany.Department
    "Debugging not possible in single session mode"
  • 原文地址:https://www.cnblogs.com/menglin2010/p/2189992.html
Copyright © 2011-2022 走看看