WCF 第二章 契约 单向操作
2011-06-23 21:01 DanielWise 阅读(1091) 评论(0) 编辑 收藏 举报当一个客户端需要向一个服务端发送消息但是不接受返回消息时,但不消息交换模式很有用。使用这个模式,客户端只需要消息成功传递的确认;它不需要服务端返回一个精确的消息。有时单步模式被错误的称作"发后不理"。在实际应用中,它是"发送和理解"因为调用者接收到一个消息成功提交到通信信道的确认。
WCF支持在服务操作层次的单向消息交换模式。服务操作可以被标记为单向而且基础结构将会使那种情况更完善。当一个客户端调用服务端的一个单项方法时,或者更准确的说,当一个客户端发送一条消息给一个操作被标记为单向的服务终结点时,控制端在服务操作完成之前就返回给调用方。单向操作通过在属性[OperationContract]上使用IsOneWay=true修饰词语来确定的。列表2.5暴露一个有两个服务操作的服务契约。两者的实现方式是相同的,但是一个表标记成单向操作。当一个客户端应用程序调用DoBigAnalysisFast,客户端代理调用立即返回而且不会等待10秒即便服务正在执行Thread.Sleep语句。当客户端调用DoBigAnalysisSlow时,客户端代理调用阻塞10秒钟当服务正在执行Thread.Sleep语句时。
需要注意的是与其他消息形式相比,代码并不知道传输消息的绑定或者通信协议。仅仅因为netTcpBinding支持双向通信而且basicHttpBinding支持请求-回复模式,两者都可以用来支持单向模式。
列表2.5 单向操作契约
[ServiceContract] public interface IStockService { [OperationContract(IsOneWay = true )] void DoBigAnalysisFast( string ticker); [OperationContract] void DoBigAnalysisSlow( string ticker); } public class StockService : IStockService { public void DoBigAnalysisFast( string ticker) { Thread.Sleep(10000); } public void DoBigAnalysisSlow( string ticker) { Thread.Sleep(10000); } } |
作者:DanielWise
出处:http://www.cnblogs.com/danielWise/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述