前言

在 .NET Framework2.0 以及前版本中,微软发展了 Web Service.NET Remoting 等通信支持。

如果要进行通信,对于开发人员来说,不同的选择会有不同的程序设计模型,且必须要重新学习,诸多不便。

同时,面向服务架构(SOA)也开始盛行于软件工业中,

因此微软重新查看了这些通信方法,并设计了一个统一的程序开发模型,对于数据通信提供了最基本最有弹性的支持,

WCF应运而生。

什么是WCF?

WCF是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。
整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有HTTP和FTP的相关技术。
是Windows平台上开发分布式应用最佳的实践方式。 --百度百科

通俗的说,它提供了个基础,使其能够编写代码,以在组件、应用程序、系统之间通信。WCF的设计遵循的是面向服务的原则。

服务是指可以通过消息与之交互的一段代码。

服务是接收者,它被动等待传入消息才开始工作。客户端是发起者,客户端将消息发送给服务来请求工作。

WCF有服务不能孤立地存在,需要寄宿于一个运行着的进程中,

我们把承载WCF服务的进程称为宿主,为服务指定宿主的过程称为服务寄宿(Service Hosting),

目前WPF、Asp.net、WinForm都是可以当做宿主寄宿的。

契约

WCF 的基本概念是以契约(Contract) 来定义双方沟通的协议,合约必须要以接口的方式来体现,而实际的服务代码必须要由这些合约接口派生并实现。

合约

数据契约 (Data Contract) 服务契约(Service Contract) 操作契约(Operation Contract) 消息契约(Message Contract)
订定双方沟通时的数据格式。 订定服务的定义。 订定服务提供的方法。 订定在通信期间改写消息内容的规范

代码示例:

using System;
using System.ServiceModel;
namespace Microsoft.ServiceModel.Samples{
[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")] // 服务契约
public interface ICalculator
{
[OperationContract] // 操作契约
double Add(double n1, double n2);
[OperationContract] //操作契约
double Subtract(double n1, double n2);
[OperationContract] // 操作契约
double Multiply(double n1, double n2);
[OperationContract] //操作契约
double Divide(double n1, double n2);
}
}

参考WCF简单实例
百度百科

最新文章

  1. CodeChef COUNTARI Arithmetic Progressions(分块 + FFT)
  2. div居中方法
  3. QLineEdit 仿QQ签名框(思路很独特:用QSS::hover显示额外的图片)
  4. JavaScript:单选钮的事件处理
  5. HTML页面上获取鼠标的位置(备忘)
  6. TCP非阻塞通信
  7. linux下配置固定ip
  8. java克隆总结
  9. C#操作EXCEL的时候出现“ 无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application” ”问题
  10. shell script中的$*和$@
  11. Android清单文件具体解释(三)----应用程序的根节点<application>
  12. 【翻译】在Mac上使用VSCode创建你的第一个Asp.Net Core应用
  13. 2017"百度之星"程序设计大赛 - 复赛1001&&HDU 6144 Arithmetic of Bomb【java大模拟】
  14. Kafka概述(一)
  15. CCF CSP 201503-2 数字排序 (map+自定义排序)
  16. win10 再次重装系统
  17. Nginx 学习笔记(六)引入线程池 性能提升9倍
  18. java的局部变量和成员变量以及区别
  19. cd4与cd8比值的意义
  20. VB6 对象库未注册问题

热门文章

  1. 第一个开源控件:Google 官方下拉刷新控件 SwipeRefreshLayout 强化版,支持上拉刷新
  2. JAVA 实体类List<Entity >转 List<Map>
  3. java文本获取
  4. 利用Comparable接口实现对对象数组的排序
  5. [leetcode]207. Course Schedule课程表
  6. Android ADB原理及常用命令
  7. 讲讲Java8的Optional类
  8. 【JDBC核心】DAO 相关
  9. Rabbitmq可靠消息投递,消息确认机制
  10. 关于 percona monitoring plugins插件报slave is stoped on ip地址