当前位置:
首页 > 网站开发 > ASP.net 4.0教程 >
-
asp.net教程之消息操作
消息操作
由于WCF的客户端和服务器之间都是通过消息响应和通信的,那么在WCF应用的运行过程中,消息是如何在程序之间进行操作的,这就需要通过XML文档来获取相应的结果。在客户端和服务器之间出现信息通信,并且客户端调用了服务器的方法时,就会产生消息,如GetSum方法。GetSum方法在接口中的代码如下所示。[OperationContract] //标识方法
int GetSum(DateTime time); //定义方法
在GetSum方法的实现过程中,只需要进行简单的操作即可,示例代码如下所示。
public int GetSum(DateTime time) //实现方法
{
int BreadNum = 10; //声明必要字段
int Milk = 5; //声明必要字段
int HotDryNuddle = 20; //声明必要字段
int today = BreadNum + Milk + HotDryNuddle; //实现计算
return today; //返回值
}
上述代码执行后,客户端会调用服务器的GetSum方法,服务器接受响应再返回给客户端相应的值,如图18-14和图18-15所示。
图18-14 执行服务器方法 图18-15 返回的XML格式文档
在运行后,测试客户端能够获取请求时和响应时的XML文档,其中请求时产生的XML文档如下所示。
<s:Envelope
xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">
<s:Header>
<a:Action s:mustUnderstand="1">http://tempuri.org/IService1/GetSum</a:Action>
<a:MessageID>urn:uuid:dcc8a76e-deaf-45c4-a80c-2034b965d001</a:MessageID>
<a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</a:ReplyTo>
</s:Header>
<s:Body>
<GetSum xmlns="http://tempuri.org/">
<time>2008-10-03T17:30:00</time>
</GetSum>
</s:Body>
</s:Envelope>
从上述代码可以看到在Action节中,使用了相应的方法GetSum,在WCF服务库编程中可以通过使用OperationContract.Action捕获相应的Action消息,示例代码如下所示。
[OperationContract(Action = "GetSum", ReplyAction = "GetSum")]
Message MyProcessMessage(Message m);
MyProcessMessage实现示例代码如下所示。
public Message MyProcessMessage(Message m)
{
CompositeType t = m.GetBody<CompositeType>(); //获取消息
Console.WriteLine(t.StringValue); //输出消息
return Message.CreateMessage(MessageVersion.Soap11,
"Add", new CompositeType("Hello World!")); //返回消息
}
上述代码将操作转换为消息后发送,开发人员可以通过Windows应用程序或ASP.NET应用程序获取修改后消息的内容。在进行消息的操作时,WCF还允许开发人员使用 MessageContractAttribute / MessageHeaderAttribute 来控制消息格式,这比 DataContractAttribute 要更加灵活。
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式