WCF服务

WCF服务

概述

Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分。由 .NET Framework 3.0 开始引入。

WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Internet收发客户和服务之间的消息。

WCF合并了Web服务、.Net Remoting、消息队列和Enterprise Services的功能并集成在Visual Studio中。

WCF专门用于面向服务开发。

SOA

面向服务的架构

SOA即为Service-Oriented Architecture缩写,翻译过来也就是面向服务的软件架构。通过将软件功能或者是业务流程进行服务化发布,从而达到一种面向于契约和服务,独立于使用平台的效果。而这种效果是跨平台,跨语言的。

如果要简述SOA,那么就必须去简述一下SOA的发展历史。如同设计模式每一个模式书写的那样,SOA的出现必然有其意图和”模式是做什么的”这两方面的内容。那么让我先来简述一下SOA出现的原因。

SOA的意图

SOA的出现主要是为了解决如下两个问题:

  1. 程序模块或者是软件之间调用关系杂乱,导致某个地方要进行修改,对于其他的调用方来说,也要进行一些反复的配置或者修改。通过隔离各个软件之间的关系,统一进行调用接口的管理,改变杂乱的调用关系

  2.  

  3. 随着企业软件的日益发展,单模块已经不能满足发展的需要,从而重构形成了多模块的整体架构,这一步通常会使各个模块之间的调用更加的明确,也会使重复功能更加的少,使软件的模块代码功能更加的明确。于此同时对于各个模块所控制的数据库部分,也会进行相应的水平分库或者是进行垂直分表,来满足日益提高的业务需求。如果这样“模块化”之后,还是不能满足需求,那么就需要将一个软件的各个功能在进行相应的细化拆分。使得软件的各个功能从原来的模块化,变成为服务化。这样软件的功能可以分布在不同的服务器上,而不需要将一个软件的所有功能发布在同一个服务器上

  4.  

SOA的实现

SOA的实现有很多种,例如:webservice、web api等等,我们比较常用的服务发布http接口,通过post json来进行交互。

WCF的作用

整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有HTTPFTP的相关技术。

简单的归结为四大部分

  1. 网络服务的协议,即用什么网络协议开放客户端接入。

  2. 业务服务的协议,即声明服务提供哪些业务。

  3. 数据类型声明,即对客户端与服务器端通信的数据部分进行一致化。

  4. 传输安全性相关的定义。

通信双方的沟通方式,由合约来订定。通信双方所遵循的通信方法,由协议绑定来订定。通信期间的安全性,由双方约定的安全性层次来订定。

WCF 的基本概念

是以契约(Contract) 来定义双方沟通的协议,契约必须要以接口的方式来体现,而实际的服务代码必须要由这些契约接口派生并实现。契约分成了四种:

  1. 数据契约(Data Contract),订定双方沟通时的数据格式。

  2. 服务契约(Service Contract),订定服务的定义。

  3. 操作契约(Operation Contract),订定服务提供的方法。

  4. 消息契约(Message Contract),订定在通信期间改写消息内容的规范。

WCF 实现上已经支持了传输层次安全性 (Transport-level security) 以及消息层次安全性 (Message-level security) 两种。

传输层次安全性:在数据传输时期加密,例如 SSL。

消息层次安全性:在数据处理时就加密,例如使用数字签名,散列或是使用密钥加密法等。

WCF的优势

  1. 统一性:它是由多种技术的整合,但仍然可以向.net一样面向对象代码编写,因为它采用托管代码编写方式。

  2. 互操作性:它采用SOAP通讯机制,保证了系统之间的互操作性,可以跨进程、跨机制。甚至跨平台通信,只要他支持web Service。

  3. 安全与可靠性:因为它包含多种协议,故有多种协议的安全机制,尤其是SOAP的。

  4. 兼容性:它可以在新旧平台上使用。

WCF学习

WCF概念

                                                           

 

在基于.NET的应用程序开发中,我们由客户机的浏览器访问应用程序服务器,然后通过应用程序服务器中的数据库连接去连接数据库服务器,读取或是操作数据,有时候可能会多一个文件服务器。大家可以观察到,基本上所有的应用都放在了一台服务器上,但对于一个,由于业务上的需要(如:与外部系统交互),一台服务器很难支持所有的应用。我们再看下面的图

 

客户机使用浏览器访问服务器A,服务器A为了业务需要与其他各种应用部署在服务器B、C、D....再通过WCF技术互相通信,相互访问...然而面向服务的好处不仅仅在此,他还提供了不同语言不同操作系统的可交互性

第一个WCF程序

  1. 新建立空白解决方案,并在解决方案中新建项目,项目类型为:WCF服务应用程序。建立完成后如下图所示

  2.  

 

  1. 删除系统生成的两个文件IService1.cs与Service1.svc。

  2. 添加自定义的WCF【服务文件】CalcService.svc,此时VS2019会自动生成WCF接口文件ICalcService.cs,我们在ICalcService中定义WCF方法Add、Mul、Max、Div,在CalcService.svc.cs对该接口的方法进行实现。

  3. ICalcService.cs

        [ServiceContract]
        public interface ICalcService
        {
            [OperationContract]。
            double Add(double a,double b);
            [OperationContract]
            double Mul(double a,double b);
            [OperationContract]
            double Max(double a,double b);
            [OperationContract]
            double Div(double a,double b);
        }

    CalcService.svc.cs

        public class CalcService : ICalcService
        {
            public double Add(double a, double b)
            {
                return a + b;
            }
    ​
            public double Div(double a, double b)
            {
                return a - b;
            }
    ​
            public double Max(double a, double b)
            {
                return a * b;
            }
    ​
            public double Mul(double a, double b)
            {
                return a / b;
            }
        }

    大家可以看到,在WCF中的接口与普通接口的区别只在于两个上下文,其他的和我们正常学习的接口一样。

    定义这个上下文要添加System.ServiceModel的引用。

    [ServiceContract]:来说明接口是一个WCF的接口,如果不加的话,将不能被外部调用。

    [OperationContract]:来说明该方法是一个WCF接口的方法,不加的话同上。

    此时我们的第一个WCF服务程序就建立好了,将CalcService.svc“设为起始页”,然后F5运行一下试试

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值