编程三大核心内容之二:通信

WCF是.NET提供的具备高度灵活性的通信管理框架。

一.特点

1.灵活的服务端支持: asp.net、windows服务、com+进程、windows窗体等。

2.编程方便:不需要共同基类。

3.信道可选:http、tcp、ipc、自定义信道。

4.安全:支持wse 3.0标准。

5.扩展性:soap注入。

6.集成性:支持dcom和asp.net web服务的集成。

二、核心服务

1.SOAP 简单对象访问协议

2.WSDL Web服务描述语言

3.REST 代表性状态传输

4.JSON JavaScript对象标记

三、自定义服务宿主

1.继承自System.ServiceModel.ServiceHost

2. 实例.Open() 启动监听器信道

3.实例.Close() 关闭服务

4. 用WCF Service Configuration Editor 工具编辑 WCF配置文件

四、客户端

1.添加一个服务引用(服务使用了mexHttpBinding 绑定MEX端点)

2.添加System.Runtime.Serialization、System.ServiceModel 程序集引用,和绑定信息与端点的配置文件

3.生成代理类,和实体类,该实体类包含[DataMember]标注的元素

五、诊断

可使用Service Configuration Editor工具配置。用Service Trace Viewer(svctraceviewer.exe)工具查看跟踪文件。

六、协定

1.数据协定[DataMember] :  .Name字段名 .Order 序列化顺序 .IsRequired 可选性 .EmitDefaultValue 默认值是否序列化

2.数据版本[DataContract]: .Namespace xml命名空间 (删除字段和添加必要字段应修改命名空间来区分不同版本)

3.服务协定[ServiceContract]:标注服务接口 .ConfigurationName 服务配置名 .CallbackContract 双工通信客户端 .Name <portType>的名字 .Namespce <portType>的名称空间 .SessionMode 会话类型 .ProtectionLevel 保护通信类型

4.操作协定[OperationContract]: .Action 请求链接,默认是xml名称空间、协定名、操作名和响应类型(Response结尾)的组合 .ReplyAction 回应链接 .AsyncPattern 异步链接 .IsInitiating 初始会话 .IsTeminating 结束会话 .IsOneWay 无响应操作 .Name 操作名 .ProtectionLevel 安全类型

5.传输协定:[DeliveryRequirements]、[RequireOrderedDelivery]、[QueuedDeliveryRequirements]

6.消息协定:[MessageContract]、[MessageHeader]、[MessageBodyMember]

七、实现服务

1.[ServiceBehavior]标注实现类:

.TransactionAutoCompleteOnSessionClose 会话类型 .TransactionIsolationLevel 事务隔离级别 .ReleaseServiceInstanceOnTransactionComplete 会话完成时 .AutomaticSessionShutdown 会话关闭 .InstanceContexMode 对象状态 .ConcurrencyMode 并发 .UseSynchronizationContext 窗口线程 .IncludeExceptionDetailInFaults 异常处理 .MaxItemsInObjectGraph 序列化对象的数目 .ValidateMustUnderstand 理解标题

2.实现服务接口

3.[OperationBehavior] :

.AutoDisposeParameters 参数自动释放 .Impersonation 调用者身份运行 .ReleaseInstanceMode 生命周期 .TransactionScopeRequired 事务 .TransactionAutoComplete 自动完成事务

八、编程实现客户端

1.ChannelFactory类例子:

var binding = new WSHttpBinding();

var address = new EndpointAddress(链接);

var factory = new ChannelFactory<I服务>(binding, address);

I服务 channel = factory.CreateChannel();

factory.Close();

2.visual studio 添加服务引用

3.ServiceModel 元数据实用工具(Svcutil.exe) 产生代理类:

var client = new XXServiceClient();

client.RegisterForCourse(…);

client.Close();

4.双工通信

必须在客户端中实现指定协定接口。

服务器端:

public interface IMyMessageCallback{

[OperationContract(IsOneWay=true)]

void OnCallback(string message);}

[ServiceContract(CallbackContract=typeof(IMyMessageCallback))]

public interface IMyMessage{

[OperationContract]

void MessageToServer(string message);}

客户端:

class ClientCallback: IMyMessageCallback{

public void OnCallback(string message){}}

 

九、异常处理

1.[FaultContract] 标注操作关联的异常数据类

2.抛出FaultException<异常数据类>

十、绑定

绑定描述了服务的通信方式。包括:传输协议、安全性、编码格式、事务流、可靠性、形状变化、传输升级。

预定义绑定:

按功能分:

 

十一、消息队列

消息队列是通信任务的重要辅助工具。System.Messaging 空间封装了windows操作系统的消息队列读写功能。

时间: 2024-10-10 06:32:52

编程三大核心内容之二:通信的相关文章

编程三大核心内容之一:数据处理

ADO.NET Entity Framework 是对象-关系映射架构,使用CSDL概念架构定义语言和SSDL存储架构定义语言给出数据库和实体类之间的映射信息.这个架构是现阶段最易使用的高层次的数据处理方案. Visual Studio集成开发环境 自带的 实体数据模型设计器 使用.edmx文件保存信息,生成 CSDL概念架构定义语言.csdl文件.SSDL存储架构定义语言.ssdl文件和MSL映射规范语言.msl文件. 一.概念层csdl 1.杂项 实体容器:System.Data.Objec

JAVA多线程之并发编程三大核心问题

概述 并发编程是Java语言的重要特性之一,它能使复杂的代码变得更简单,从而极大的简化复杂系统的开发.并发编程可以充分发挥多处理器系统的强大计算能力,随着处理器数量的持续增长,如何高效的并发变得越来越重要.但是开发难,并发更难,因为并发程序极易出现bug,这些bug是比较诡异的,跟踪难,且难以复现.如果要解决这些问题就要正确的发现这些问题,这就需要弄清并发编程的本质,以及并发编程要解决什么问题.本文主要讲解并发要解决的三大问题:原子性.可见性.有序性. 基本概念 硬件的发展 硬件的发展中,一直存

(转载)ASP.NET三大核心对象及基础功能解析

原文链接:http://tech.it168.com/a2011/1207/1284/000001284879_all.shtml 想当初在只使用WebForms框架并以服务端为中心的开发模式时,发现Asp.net好复杂.一大堆服务端控件,各有各的使用方法,有些控件的事件也很重要,必须在合适地时机去响应,还真有些复杂.后来逐渐发现这些复杂的根源其实就是服务器控件相关的抽象逻辑.随着Ajax越用越多,可能有些人也做过这些事情:[新建一个ashx文件,读取一些用户的输入数据,Form, QueryS

前端编程提高之旅(二)----网站常见特效的jquery实现

最好的编程语言是逻辑,前端各种交互特效的实现多可以用jquery实现,特效可以纷飞,内在逻辑则基本不变.这一篇文章主要介绍jquery实现常见特效背后的逻辑.    1.通过类名获取元素集合    首先来看一个js原生代码不支持的方法,通过类来获取元素集合. document.getElementsByClassName=function(classname){ var retnode = []; var myclass = new RegExp('\\b'+classname+'\\b');/

struts2框架的核心内容

 Struts1和Struts2的区别和对比: Action 类: • Struts1要求Action类继承一个抽象基类.Struts1的一个普遍问题是使用抽象类编程而不是接口,而struts2的Action是接口. • Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能.Struts2提供一个ActionSupport基类去 实现 常用的接口.Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Ac

基于.net开发chrome核心浏览器【二】

原文:基于.net开发chrome核心浏览器[二] 一: 上一篇的链接: 基于.net开发chrome核心浏览器[一] 二: 相关资源介绍: chrome Frame: 让IE有一颗chrome的心,看起来不错,但我没有深入研究这个东西. http://www.google.com/chromeframe?hl=zh-CN&quickenable=true https://developers.google.com/chrome/chrome-frame/ WebKit.Net 已经有一段时间没

spring三大核心学习(一)---控制反转

记得当年大学时候,java的企业级框架还是ssh的天下(spring,struts和hibernate),但是现在,感觉spring已经完全把那两个框架甩在后边了.用spring的人越来越多,用struts的人比原来少多了,用hibernate的就更少了.毕竟现在it人才流动性太大了,招人上来上手很重要,谁知道他什么时候就跑了..(hibernate太复杂了). 我最近只看spring,所以只说spring. 记得当初面试的时候被问到过spring的三大核心思想.相信多数javaer都被问到过这

MFC六大核心机制之二:运行时类型识别(RTTI)

上一节讲的是MFC六大核心机制之一:MFC程序的初始化,本节继续讲解MFC六大核心机制之二:运行时类型识别(RTTI). typeid运算子 运行时类型识别(RTTI)即是程序执行过程中知道某个对象属于某个类,我们平时用C++编程接触的RTTI一般是编译器的RTTI,即是在新版本的VC++编译器里面选用“使能RTTI”,然后载入typeinfo.h文件,就可以使用一个叫typeid()的运算子,它的地位与在C++编程中的sizeof()运算子类似的地方(包含一个头文件,然后就有一个熟悉好用的函数

Java面向对象编程三大特征 - 多态

Java面向对象编程三大特征 - 多态 本文关键字:Java.面向对象.三大特征.多态多态是面向对象编程的三大特征之一,是面向对象思想的终极体现之一.在理解多态之前需要先掌握继承.重写.父类引用指向子类对象的相关概念,对继承还没有完全明白的同学可进传送门:Java面向对象编程三大特征 - 继承. 一.抽象类 在继承中,我们已经了解了子父类的关系以及如何对子父类进行设计,如果已经存在多个实体类,再去定义父类其实是不断的抽取公共重合部分的过程,如果有需要将会产生多重继承关系.在抽取整理的过程中,除了