wcf消息模式(随记)
----------------------------------------------消息模式:
1.request\reply(默认)
2.one-way(单工)[Isoneway=true]
客户端有些情况希望保证消息能正确送达;(msmq(持久性的,机子重启后依然有效)和可靠性消息(短暂的)这两种技术保证)
应用:日志或发布,操作需要大量时间轮训场景,这样不需要等待;
3.Duplex(回调;双工)
操作必须声明为oneway;防止发生死锁;
回调接口不需要声明servicecontract
tcp和命名管道支持双工,http不支持;
--duplex案例:
--------------------------------------------双工:
[ServiceContract(SessionMode = SessionMode.Required, CallbackContract =typeof(IReturnuser))]
public interface Iuser
{
[OperationContract(IsOneWay=true)]
void SetName(string name);
}
public interface IReturnuser
{
[OperationContract(IsOneWay = true)]
void ReturnName(string name);
}
-----------
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)]
public class ServicUser:Iuser
{
IReturnuser callback
{
get { return OperationContext.Current.GetCallbackChannel<IReturnuser>(); }
}
public void SetName(string name)
{
callback.ReturnName(name+"123");
}
}
-----------
public class CallbackHandler : myService.IService1Callback
{
public void Calculate(int result)
{
System.Windows.Forms.MessageBox.Show("结果为:" + result);
}
}
---------
InstanceContext ic = new InstanceContext(new CallbackHandler());
myService.Service1Client client = new wcfClient.myService.Service1Client(ic);
client.AddNumer(3, 4);
-----大型消息传输:
比如:上传和下载数据;
1.在wcf的配置文件制定消息大小的配额;从而支持较大消息的支持;
21.开销解决方案:
消息传输优化机制:MTOM;(删除过多无用的信息并且处理base64编码多带来的数据开销,改进消息传输的整体性能;)
通过配置文件配置Binding节点信息;messageEncoding="Mtom",
MTOM,会加载到内存中;为了降低内存使用,使用流传输;
配置:
<bindings>
<wsHttpBinding>
<binding name="sdf" maxReceivedMessageSize="5000000" messageEncoding="Mtom">
<readerQuotas maxArrayLength="5000000"/>
</binding>
</wsHttpBinding>
</bindings>
22流传输;特点:降低内存的使用量;但可靠性和安全性降低;
--标记流传输:
<bindings>
<basicHttpBinding>
<binding name="sdf" transferMode="Streamed">
</binding>
</basicHttpBinding>
</bindings>
--流传递支持三种绑定:netnamedpipebinding,nettcpbinding,basichttpbinding;
transferMode:值默认buffered(缓冲式),Streamed流传输;
23将消息切分成较小的切片;
wcf消息模式(随记)的更多相关文章
- 【WCF全析(一)】--服务协定及消息模式
上周微软开发布会说.NET支持完全跨平台和并开放Core源码的新闻,让我们顿时感到.NET要迎来它的春天.虽然早在几年前.NET就能开发Android和IOS,但是这次的跨平台把Linux都放到了微软 ...
- 【架构之路之WCF全析(一)】--服务协定及消息模式
上周微软开公布会说.NET支持全然跨平台和并开放Core源代码的新闻,让我们顿时感到.NET要迎来它的春天.尽管早在几年前.NET就能开发Android和IOS,可是这次的跨平台把Linux都放到了微 ...
- WCF初探-4:WCF消息交换模式之请求与答复模式
请求与答复模式( Request/Reply) 这种交换模式是使用最多的一中,它有如下特征: 调用服务方法后需要等待服务的消息返回,即便该方法返回 void 类型 相比Duplex来讲,这种模式强调的 ...
- WCF消息交换模式之双工通讯(Duplex)
WCF消息交换模式之双工通讯(Duplex) 双工通讯Duplex具有以下特点: 1它可以在处理完请求之后,通过请求客户端中的回调进行响应操作 2.消息交换过程中,服务端和客户端角色会发生调换 3.服 ...
- WCF系列教程之WCF消息交换模式之单项模式
1.使用WCF单项模式须知 (1).WCF服务端接受客户端的请求,但是不会对客户端进行回复 (2).使用单项模式的服务端接口,不能包含ref或者out类型的参数,至于为什么,请参考C# ref与out ...
- wcf中的消息模式
1请求响应模式 a.wcf中的消息模式默认是请求响应模式 b.返回值是void默认也是请求响应模式,可返回服务端的错误信息 c.客户端在请求后,当前线程停止真到接受收服务器的响应 [Opereatio ...
- 利用WCF双工模式实现即时通讯
概述 WCF陆陆续续也用过多次,但每次都是浅尝辄止,以将够解决问题为王道,这几天稍闲,特寻了些资料看,昨晚尝试使用WCF的双工模式实现了一个简单的即时通讯程序,通过服务端转发实现客户端之间的通讯.这只 ...
- WCF入门教程3——WCF通信模式
本章内容 请求/响应模式 单工模式 双工模式 WCF异步调用 请求与响应模式 请求/响应 请求/响应通信是指客户端向服务端发送消息后,服务端会向客户端发送响应.这也意味着在接收到服务的响应以前 ...
- [SignalR]SignalR与WCF双工模式结合实现服务端数据直推浏览器端
原文:[SignalR]SignalR与WCF双工模式结合实现服务端数据直推浏览器端 之前开发基于WinForm监控的软件,服务端基于Wcf实现,里面涉及双工模式,在客户端里面,采用心跳包机制保持与服 ...
随机推荐
- TCP/IP的经典网络编程
TCP/IP网络编程之四书五经 ...
- 使用reserve要再次避免不必要的分配
关于STL容器,最了不起的一点是,它们会自己主动增长以便容纳下你放入当中的数据,仅仅要没有超出它们的最大限制就能够.对于vector和string,增长过程是这样来实现的:每当须要很多其它空间时 ...
- SQL2000 MD5加密
原文:SQL2000 MD5加密 /***************************************************************************** * Na ...
- DevExpress Report的简单应用
原文:DevExpress Report的简单应用 创建一个简单的WPF应用程序包含一个报告的过程中,使用Microsoft®Visual Studio®中.您将学习如何添加一个静态文本一份报告,为您 ...
- 数学思想方法-sasMEMO(17)
SAS日期及时间格式 data _null_;input mydate YYMMDD10.;put mydate YYMMDDB10.;put mydate YYMMDDC10.;put mydat ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(6)- EF上下文实例管理
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(6)- EF上下文实例管理 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 ( ...
- "错: void 值不被忽略,因为预期"解决
在C陷阱与缺陷,实现assert什么时候,在这个过程很聪明,化为一个表达式,在当条件为假时就会调用_assert_error报错并终止程序. 刚開始_assert_error 的返回值类型是 void ...
- 利用缓存、Timer间隔时间发送微信的实例,很有用的例子
//Class WechatOfferExcutor 此类为微信触发类,属于上层调用类,其中有用到用静态变量缓存offer信息,Task异步执行发送方法等 using Newtonsoft.Json. ...
- Studio-Class Diagram
UML Design Via Visual Studio-Class Diagram 用过几个建模设计工具,小的有staruml,大的有rational rose,EA.最后发现还是Visual St ...
- java_log4j 经典配置
程序加载制定日志文件 public static final String log4j = "log4j.xml"; /** * @declare 加载log4j * @throw ...