【架构之路之WCF全析(一)】--服务协定及消息模式

       上周微软开发布会说.NET支持完全跨平台和并开放Core源码的新闻,让我们顿时感到.NET要迎来它的春天。虽然早在几年前.NET就能开发Android和IOS,但是这次的跨平台把Linux都放到了微软战略之中,以后的.NET Developer就可以使用Vs开发Linux应用了,Developer又有了新的选择,从微软的战略转型也可以看出互联网已经步入到了新的模式,以后不再是PC的时代,移动互联和云时代已经到来。

       最近做项目时使用到了WCF,项目把数据层和程序层进行了分割,相互之间的数据传输使用的就是WCF,这次的项目是为英国银行Enumis做的一整套银行的系统,从业务上整体划分为e-Banking、Corporate Panel、Etam、e-Commerce它们整体上构成了这家银行的一个网上管理系统,其实这种网上系统跟中国的银行是很类似的,这些系统之间是通过相互之间提供数据或者接口来协同工作。


        WCF全称是Windows Communication Fundation,提供了统一的,可用于建立安全、可靠地面向服务的应用的高效开发平台。WCF是基于属性的开发,它统一了各种分布式技术,也就是说它在应用程序和数据之间、应用程序与应用程序之间提供了一个桥梁,通过使用WCF来管理数据之间的互操作。这里说所的统一分布式技术说的是它把Windows中所有的通信技术做了整合封装,把它们都封装到了WCF架构里面,这样无论是采用何种通信方式只需要添加一个WCF服务接口,然后所有基于WCF的应用都可以互相通信,这样增强了程序之间的灵活性。


        如上图,在不使用WCF的时候要想实现之间的互通信可能就需要使用不同的技术来实现,这样在开发的时候就会耗费大量的时间来整合封装通信模块,如果采用WCF就可以减少模块的封装,使用WCF的属性来定义不同的通信接口,这样不同的程序之间或者程序与数据之间就可以通过WCF解耦,使得不同的模块间只需要关注自己本身的服务即可。
        WCF不但封装了相互之间的通信服务,而且还封装了安全性和事务性的模块,为应用之间提供更加安全及高效的事务管理。


WCF导图

        在WCF配置节中有三个主要的数据,分别为消息、服务和终结点。三个数据中服务的概念包含的最广,一个WCF可以称作一个服务,它类似于一个dll,每一个service文件都会独立的生成一个服务,在使用服务的一方添加服务引用。其中的应用程序在调用服务时所发送的信息被称为一个消息,它是一个数据单元,和计算机网络中的消息是类似的,包括消息的正文和消息头。在应用程序一端想用调用服务就必须引用创建的服务,其实是在配置文件中添加一个服务的终结点,每个服务的引用可以理解为一个终结点,在终结点中会配置服务所在的地址,互相通信的方式(如Http、Tcp等),服务的消息定义。

        WCF是基于属性开发的,也就是说可以通过对类和方法采用属性标记法来指明服务及消息。在定义一个WCF时可以使用两种服务协定类和接口,这两种服务协定在产生的效果上是相同的,但是建议使用接口的方式,有更好的扩展性,而且有助于保持服务协定不变,在服务的版本变更时只需要重新实现新接口即可。

一、服务协定


        WCF创建服务时是通过使用属性来指明的,在接口或类的定义上方使用ServiceContract(服务契约)来指明一个服务,在方法定义上方使用OperationContract(方法契约)来指明一则消息。这样就完成了一个WCF的定义工作,如果使用的是接口那么需要实现相应的接口才可。具体的定义方法来看下面的示例,使用的是接口方式来定义服务契约。


  1、添加一个WCF


        添加一个WCF应用程序集,然后在程序集中添加一个WCF,在添加时Item时可以选择WCF Service这样Vs会根据自带的模板新增一个接口的服务协定,并添加一个新的svc文件来实现接口,这个svc文件就是对应的wcf的实现类。另外也可以手动的编写一个服务协定接口,并实现相应的方法。如下代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值