WCF 服务的ABC之契约(七)】的更多相关文章

契约 Contract WCF的所有服务都会公开为契约(Contract),契约与平台无关,是描述服务功能的标注方式. 服务契约(Service Contract) 服务契约描述的是一个服务,它定义了 服务向外界公开的功能,这些功能表现为服务操作(Service Operation).服务契约包括服务定义的各个方面.服务的操作.每个操作的消息交换模式以及每个操作使用的消息. 数据契约(Data Contract) 数据契约定义了与服务交互的数据类型. WCF把内建类型隐式定义为数据契约,也可以将…
绑定 Binding 绑定是开发人员控制WCF程序与其他消息交互的主要手段.从功能上看,绑定创建了通道工厂惑通道侦听器的堆栈对象.绑定直接惑间接创建的对象是WCF实现各种消息功能(例如,传输.安全性.事务性)的主要方式.一个绑定封装了诸如传输协议.消息编码.通信模式.可靠性.安全性.事务传播,以及互操作性等相关选项,使得它们保持一致. 五种常用绑定 基本绑定 对应BasicHttpBinding类 基本绑定能够将WCF服务公开为传统的ASMX Web服务,使得原客户端能够与新的服务协作 TCP绑…
地址 Address 在WCF中,每个服务都有一个唯一的地址(Address). 地址包含两个重要的元素:服务位置及传输协议. 服务位置包含目标机器名.站点.通信端口.管道(或队列),以及一个可选的特定路径或URI.   WCF支持下列传输协议 HTTP/HTTPS HTTP地址可以使用http/https协议传输.如: http://localhost:81 HTTP地址默认端口为80,HTTPS则为443. HTTP地址可以共享一个端口,甚至一台机器 TCP TCP地址采用net.tcp协议…
一. 创建消息队列    1 1) 创建一个非事物性的私有队列    1 2)设置消息队列访问权限    2 二.创建WCF服务并绑定消息队列    4 1)创建HelloService服务    4 2) 设置WCF服务的配置文件    6 3) WCF服务服务端和客户端代码实现    7 四. 启用远程访问MSMQ    10 1) 在远程服务器上创建消息队列,具体步骤参见前面    10 2) 设置MSMQ身份验证    10 3) 修改服务端和客户端消息队列地址绑定.    12 五.通…
通过前面的笔记我们知道WCF服务是不能独立存在,必须“寄宿”于其他的应用程序中,承载WCF服务的应用程序我们称之为“宿主”.WCF的多种可选宿主,其中比较常见的就是承载于IIS服务中,在这里我们来学习如何使用IIS承载WCF服务. 在前面的笔记的示例中我们使用自己创建的控制台应用程序来承载WCF服务,现在我们将使用IIS来作为这个示例程序的宿主.将IIS作为宿主只需要正确的配置好IIS就可以了,同时在IIS中运行WCF服务不需要编写任何承载代码. 注意: 使用IIS( IIS 5.1 和 IIS…
引言 随着手机及移动设备的普及,移动端的应用也进入了热潮.以前PC端的门户网站,大多也均推出了适配移动设备的网站或者APP,再差的也注册了个公众号.在移动应用开发中,目前据我所了解到的解决方案有:1.原生态APP开发:2.适配移动设备的JS+HTML网站,套上跨平台的“马甲”:3.微信小程序及公众号(其实和第2点一样,套了微信的壳).其中运用JS+HTML的应用占据大部分,这个比例是多少我没有统计和查询相关数据,反正就是很多吧.而JS+HTML移动开发中,大多采用的框架是,前端页面加上WebSe…
上一节我们学习了WCF分布式开发步步为赢(5)服务契约与操作重载部分.今天我们来继续学习WCF服务契约继承和服务分解设计相关的知识点.WCF服务契约继承有何优势和缺点?实际项目里契约设计有什么原则和依据?面向对象的设计经验有何值得借鉴的地方?这里我们会一一给出详细的介绍.本文首先介绍的是WCF服务中契约继承的一些概念.例子代码分析,其次来讲解服务契约的设计问题.首先介绍的也是进行服务设计的必要性,服务设计的原则,示例代码分析.最后是全文的总结部分.结构如下:[1]OO面向对象设计原则,[2]服务…
操作重载诸如 C++ 和 C# 等编程语言都支持方法重载,即允许具有相同名称的两个方法可以定义不同的参数.例如,如下的 C# 接口就是有效的定义: interface ICalculator { int Add(int arg1,int arg2); double Add(double arg1,double arg2); } 然而,基于 WSDL 的操作却不支持操作重载.因此,在编译如下的契约定义时,装载服务宿主就会抛出 InvalidOperationException异常: // 无效的契…
WCF序列化流程 序列化 默认用户自定义类型(类和结构)并不支持序列化,因为.NET无法判断对象状态是否需要反射到流. 用户自定义类的实例支持序列化 需要添加[Serialazable].若要允许可序列化类型包含非序列化的成员变量可使用[NonSerializad] .Net格式器 BinaryFormatter 序列化为二进制格式 SoapFormatter 使用.NET 特定的SOAP XMl格式 两者格式器都实现IFormatter接口 两种格式器都要将类型的程序集及版本控制器信息持久化到…
费自托管WCF服务的整个过程,一步步地解释以及充足的编码和屏幕截图是非常有必要. 第1步:服务托管,现在我们需要实现的代理类客户端.创建代理的方式不同. 使用svcutil.exe,我们可以创建代理类和配置文件以及端点. 添加服务引用到客户端应用程序. 实现 ClientBase<T> 类 这三种方法,实现ClientBase<T>类是最好的做法.如果使用了两个rest方法,需要创建一个代理类,每一次当我们做出改变服务的实现.但是,这不是对ClientBase<T>类情…