背景:

高校平台马上就要进入编程阶段了,对于没怎么做过正式项目的我们来说,要学的东西实在太多了。一下子面对这么多学习资料时,我们也不能着急,还是踏踏实实,一个一个地去了解,其实他们都没那么神秘。这篇博客主要介绍SOA与WCF的基础知识。

SOA

软件设计思想的发展,从面向过程,到我们所推崇的面向对象,接着到SOA面向服务的思想演变。SOA,Service-Oriented
Architecture,核心就是服务
。在面向服务的应用程序中,我们关注于业务逻辑的编写。然后就是客户端调用,而不是服务代码或者它的实现包。SOA架构比传统的三层架构多了一层Service。

在SOA中,每个服务具有明确的边界,服务都是独立的。这样也符合低耦合的思想。还有,SOA中,采用标准的契约定义和通信协议,是一个规范的体系。它的服务是自解释的。它帮助企业工程师们站在一个新的高度理解企业级架构中的各种组件开发部署,帮助企业更迅速,更可靠、更具重用性的架构整个业务系统。与之前相比,更能从容的面对业务的变化。

WCF

WCF,英文全称Windows Communication Foundation,意为Windows通讯开发平台。是一系列支持数据通信的应用程序框架,本质上来说,它是一套软件开发包。

为什么要使用WCF开发?如下图所示:

由上图可知:WCF整合了原有的一些机制,并融合了HTTP和FTP等相关技术。它实现了跨平台性,与平台无关。WCF很好的实现了SOA,SOA即面向服务的架构。

WCF主要分服务端和客户端两部分。我们需要在服务端创建服务,然后将服务通过终结点EndPoint与客户端进行通信。客户端在使用服务时,需要首先创建一个代理服务,然后调用这个代理服务。这里所说的EndPoint中,即我们接下来要说的ABC。

服务的三要素,简单概括来说,即ABC。

1)A——Address(地址)

Where?在哪里

地址,是一个路径。每个服务都关联到一个唯一的地址。它包括两部分内容:服务位置和传输协议。

地址例子:

http://localhost:80

http://localhost:80/HelloService

2)B——Binding(绑定)

How?如何实现

绑定,是制定好的通道栈,它是负责具体实现。

我们需要了解如何进行绑定的基本设置。

3)C——Contracts(契约)

What?做什么

契约,也叫协定。它描述了服务的特征和功能。

四种契约

Service Contract
 :主要是客户端所能执行的操作。

Data Contract  :与服务交互的数据类型。

Message Contract
:允许程序员直接操纵服务消息的内容和格式。

Fault Contract

相关博客:

《初识MVC框架》  《Linq与扩展方法》 
《Axure+SVN》

小结:

SOA,是面向服务架构,但对于其具体的定义,还是存在很大的争议。但需要指出的是,WCF是一种SOA解决方式。因此,WCF主要功能和工作原理等都是围绕着“服务”而展开。

总的来说,无论是SOA还是WCF,看着是新的东西,但是从它们的目的或功能来看,并不新,都是为了提高可靠性、可重用性,更好的解耦。在这一点上,和之前的东西有很多的共鸣。了解了这些,剩下的就是怎样好好使用WCF了。

SOA与WCF的更多相关文章

  1. SOA和WCF&WebAPI

    SOA http://www.cnblogs.com/leslies2/archive/2011/12/12/2272722.html WCF开发框架形成之旅--如何实现X509证书加密 WebAPI ...

  2. RDIFramework.NET框架SOA解决方案(集Windows服务、WinForm形式与IIS形式发布)-分布式应用

    RDIFramework.NET框架SOA解决方案(集Windows服务.WinForm形式与IIS形式发布)-分布式应用 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架 ...

  3. SOA与C#

    What is SOA? SOA or Service oriented architecture is an architecture style for building business app ...

  4. Service Oriented Architecture and WCF 【转】

    http://www.codeproject.com/Articles/515253/Service-Oriented-Architecture-and-WCF Introduction This a ...

  5. NET框架SOA解决方案(集Windows服务、WinForm形式与IIS形式发布)-分布式应用

    NET框架SOA解决方案(集Windows服务.WinForm形式与IIS形式发布)-分布式应用 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.N ...

  6. 通过 WCF 实现点对点文件共享 z

    下载免费的项目源代码 下载项目的数据库 目录 简介 背景 为什么是WCF? WCF历史简述 WCF基础 点对点概念 代码分析(它是怎么工作的) 核心转化引擎层 下载管理层 服务层 代码的使用(如何运行 ...

  7. 前面部分(WCF全面解析1)

    WCF全面解析 [同力推荐] 我经历了COM时代,一直把Don BOx的<COM本质论>奉为我的指路明灯.能把SOA机理和WCF这种特定厂商实现的技术讲得如<COM本质论>一样 ...

  8. RDIFramework.NET框架SOA解(集Windows服务、WinForm形式和IIS发布形式)-分布式应用程序

    RDIFramework.NET框架SOA解决方式(集Windows服务.WinForm形式与IIS形式公布)-分布式应用 RDIFramework.NET,基于.NET的高速信息化系统开发.整合框架 ...

  9. 我大中华微软MVP中国区人才库

    刘海峰:国内知名微软开源技术网站51Aspx 创始人,十年以上的Asp.net从业经验,微软MSDN特约讲师.Teched讲师.ImagineCup大赛评委.人大出版社研修班特约讲师,曾多次受邀访问美 ...

随机推荐

  1. 前端css之文本操作及块级元素和行内元素

    1.文本操作 1.1文本颜色(color) 颜色指定方式: 十六进制值 - 如: #FF0000 一个RGB值 - 如: RGB(255,0,0) 颜色的名称 - 如:  red 1.2水平对齐方式 ...

  2. hdu_1452_Happy 2004 (乘法逆元

    Consider a positive integer X,and let S be the sum of all positive integer divisors of 2004^X. Your ...

  3. 局域网内使用ssh连接两台计算机总结

    因为家里有两台电脑,一个centos7 系统,一个Mac,都是笔记本,感觉两个拿来拿去的用太麻烦了,所以就想用ssh连接cenots7 的电脑,这样就没那么麻烦了.欢迎大家指正 配置静态ip cent ...

  4. linux C 数组与指针

    linux C 数组与指针 一.数组 数组是同一数据类型的一组值:属于引用类型,因此数组存放在堆内存中:数组元素初始化或给数组元素赋值都可以在声明数组时或在程序的后面阶段进行. 定义一维数组的一般格式 ...

  5. xml的应用与dtd约束

    1.xml的应用 *不同的系统之间的传输数据(qq消息传输) *用来表示生活中有关系的数据(省市区的包含关系) *经常用在文件配置 **比如现在连接数据库,肯定知道数据库的名称和密码及用户名.    ...

  6. 使用file_get_contents()和curl()抓取网络资源的效率对比

    使用file_get_contents()和curl()抓取网络资源的效率对比 在将小程序用户头像合成海报的时候,用到了抓取用户头像对应的网络资源,那么抓取方式有很多,比如 file_get_cont ...

  7. 字典--数据结构与算法JavaScript描述(7)

    字典 字典是一种以键-值对形式存储数据的数据结构. Dictionary 类 Dictionary 类的基础是Array 类,而不是Object 类. function Dictionary( ){ ...

  8. spider_main.py

    coding=UTF-8 import html_download import html_outputer import html_parser import url_maneger class S ...

  9. PHP.33-TP框架商城应用实例-后台9-商品相册-修改、删除(AJAX)

    商品相册图片删除 当商品删除时,把相册中的图片一并从硬盘和数据库中删除,根据商品id[因为每一张商品相片都会生成三张缩略图,所以删除时要将其缩略图一并删除] //钩子方法_before_delete: ...

  10. 2599: [IOI2011]Race

    2599: [IOI2011]Race 链接 分析 被memset卡... 点分治,对于重心,遍历子树,记录一个数组T[i],表示以重心为起点的长度为i的路径中最少的边数是多少.然后先遍历子树,更新答 ...