WCF编程系列(二)了解WCF

 

面向服务
    服务是复用进化的结果,起初的复用是函数,面向对象编程的出现使复用从函数上升到对象,随后面向组件编程又将复用从对象上升到组件,现在面向服务编程将复用提升到服务层次。

在面向服务的应用程序中,开发者只需要关注业务逻辑的编写,以及通过可交换的、可互操作的服务终结点暴露业务逻辑。客户端调用这些终结点,而不是服务代码
或它的实现包。客户端与服务终结点的交互基于标准的消息交换,服务发布各种标准元数据,描述服务的功能,以及客户端调用服务操作的方式。正因为是基于标准
的交互,所以实现服务端与客户端的技术与品台可以完全不同。

WCF的优势
    在WCF之前,.NET
Framework提供了多种分布式技术,如ASP.NET Web服务、.NET
Framework远程处理、企业服务、WSE以及Microsoft消息队列。一般我们在编写一个应用程序时通常会同时使用多项技术,现在WCF已经将
这些技术整合,通过WCF即可实现这些技术的所有功能。
    WCF的基本通信机制是基于SOAP的Web服务,因此基于WCF的应用程序可以与运行在各种不同坏境中的软件进行通信:
      1.运行在同一台Windows计算机的不同进程中、基于WCF的应用程序
      2.运行在另一台Windows计算机的基于WCF的应用程序
      3.基于J2EE应用服务器等其他技术构建的、支持标准Web服务的应用程序。

WCF的体系结构

如上图所示,WCF为四层体系结构。在上一篇的示例中我们实际上已经接触到了这四层结构:
协定(契约)层:在我们的IFirstService接口中通过ServiceContract以及OperationContract特性创建了一个服务契约
服务运行时层:在我们的Host项目中,通过配置文件控制了我们服务的元数据行为:即公开服务元数据:

隐藏行号 复制代码 ? App.config
  1. <behaviors>
  2.   <serviceBehaviors>
  3.     <behavior name="behaviorConfiguration">
  4.       <serviceMetadata httpGetEnabled="true"/>
  5.     </behavior>
  6.   </serviceBehaviors>
  7. </behaviors>

消息传递层:同样在Host项目中,通过配置文件,我们指定终结点的绑定为basicHttpBinding预定义绑定,该预定义表示我们的服务采用http通道及标准的文本SOAP编码方式

激活和承载层:即对应于我们示例中的Host项目的控制台程序,该程序承载了我们的服务,即服务的宿主程序。

Next,我们将进入WCF的殿堂……

WCF编程系列(二)了解WCF的更多相关文章

  1. WCF编程系列(一)初识WCF

    WCF编程系列(一)初识WCF   Windows Communication Foundation(WCF)是微软为构建面向服务的应用程序所提供的统一编程模型.WCF的基本概念:  地址:定义服务的 ...

  2. WCF学习系列二---【WCF Interview Questions – Part 2 翻译系列】

    http://www.topwcftutorials.net/2012/09/wcf-faqs-part2.html WCF Interview Questions – Part 2 This WCF ...

  3. WCF编程系列(五)元数据

    WCF编程系列(五)元数据   示例一中我们使用了scvutil命令自动生成了服务的客户端代理类: svcutil http://localhost:8000/?wsdl /o:FirstServic ...

  4. WCF编程系列(三)地址与绑定

    WCF编程系列(三)地址与绑定   地址     地址指定了接收消息的位置,WCF中地址以统一资源标识符(URI)的形式指定.URI由通讯协议和位置路径两部分组成,如示例一中的: http://loc ...

  5. WCF编程系列(七)信道及信道工厂

    WCF编程系列(七)信道及信道工厂   信道及信道栈 前面已经提及过,WCF中客户端与服务端的交互都是通过消息来进行的.消息从客户端传送到服务端会经过多个处理动作,在WCF编程模型中,这些动作是按层 ...

  6. WCF编程系列(六)以编程方式配置终结点

    WCF编程系列(六)以编程方式配置终结点   示例一中我们的宿主程序非常简单:只是简单的实例化了一个ServiceHost对象,然后调用open方法来启动服务.而关于终结点的配置我们都是通过配置文件来 ...

  7. WCF编程系列(四)配置文件

    WCF编程系列(四)配置文件   .NET应用程序的配置文件 前述示例中Host项目中的App.config以及Client项目中的App.config称为应用程序配置文件,通过该文件配置可控制程序的 ...

  8. 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(中)

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 四.创建一个Blazor应用程序 1. 第一种创 ...

  9. 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(下)

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

随机推荐

  1. JavaScript一道面试题求y的值是? z 的值是? s的值是?

    原文:http://www.zhufengpeixun.cn/JavaScriptmianshiti/2014-04-01/287.html < script type = "text ...

  2. openstack系列阅读目录

    一 keystone系列 keystone基础 网关协议cgi,fastcgi,wsgi,uwsgi keystone源码分析 keystone部署及使用 keystone客户端工作介绍 二 glan ...

  3. 完全分布式Hadoop2.3安装与配置

    一.Hadoop基本介绍 Hadoop优点 1.高可靠性:Hadoop按位存储和处理数据 2.高扩展性:Hadoop是在计算机集群中完成计算任务,这个集群可以方便的扩展到几千台 3.高效性:Hadoo ...

  4. Codeforces Round #268 (Div. 1) A. 24 Game 构造

    A. 24 Game Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/468/problem/A D ...

  5. hibernate 使用C3P0数据源

    1.导入jar包: hibernate-release-4.3.5.Final/lib/optional/*.jar 2.增加配置: <!-- 配置 C3P0 数据源 --> <pr ...

  6. SQLSERVER复制表的方法

    1.复制表结构及数据     格式:select * into 新表名 from 要复制的表名     --例如:select * into temp from users 2.只复制表数据   格式 ...

  7. firefly的rpc。。

    firefly使用了twisted的pb 来实现rpc: http://twistedmatrix.com/documents/current/core/howto/pb-usage.html 服务端 ...

  8. 101个直接可以拿来用的JavaScript实用功能代码片段(转)

    1.原生JavaScript实现字符串长度截取 function cutstr(str, len) { var temp; var icount = 0; var patrn = /[^x00-xff ...

  9. Qt数据库(sqlite) — 总结

    #include <QtSql>QT += sql QSqlDatabase类实现了数据库连接的操作QSqlQuery类用来执行SQL语句QSqlRecord类 封装数据库所有记录 第一: ...

  10. php单引号、双引号与数据库

    /**  * 初始化http参数数据  */ public static function init () {  if (!get_magic_quotes_gpc()) {   $_POST  = ...