小步前进之WCF简介
2024-09-08 04:08:03
前言
在 .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);
}
}
最新文章
- CodeChef COUNTARI Arithmetic Progressions(分块 + FFT)
- div居中方法
- QLineEdit 仿QQ签名框(思路很独特:用QSS::hover显示额外的图片)
- JavaScript:单选钮的事件处理
- HTML页面上获取鼠标的位置(备忘)
- TCP非阻塞通信
- linux下配置固定ip
- java克隆总结
- C#操作EXCEL的时候出现“ 无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application” ”问题
- shell script中的$*和$@
- Android清单文件具体解释(三)----应用程序的根节点&;lt;application&;gt;
- 【翻译】在Mac上使用VSCode创建你的第一个Asp.Net Core应用
- 2017";百度之星";程序设计大赛 - 复赛1001&;&;HDU 6144 Arithmetic of Bomb【java大模拟】
- Kafka概述(一)
- CCF CSP 201503-2 数字排序 (map+自定义排序)
- win10 再次重装系统
- Nginx 学习笔记(六)引入线程池 性能提升9倍
- java的局部变量和成员变量以及区别
- cd4与cd8比值的意义
- VB6 对象库未注册问题
热门文章
- 第一个开源控件:Google 官方下拉刷新控件 SwipeRefreshLayout 强化版,支持上拉刷新
- JAVA 实体类List<;Entity >;转 List<;Map>;
- java文本获取
- 利用Comparable接口实现对对象数组的排序
- [leetcode]207. Course Schedule课程表
- Android ADB原理及常用命令
- 讲讲Java8的Optional类
- 【JDBC核心】DAO 相关
- Rabbitmq可靠消息投递,消息确认机制
- 关于 percona monitoring plugins插件报slave is stoped on ip地址