好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

WCF Service Hosting的线程关联性Mono实现比.NET统一?

WCF Service Hosting的线程关联性Mono实现比.NET统一?

WCF Service Hosting的线程关联性Mono实现比.NET统一?

WCF Service Hosting的线程关联性Mono实现比.NET统一?

 

Mono 3.0.2 基于双工通信的WCF应用 Demo  的讨论中  深蓝医生  提到了一个问题:

楼主,找了几天,终于明白我的程序错误在哪里了,在服务契约上加入下面的接口方法: 
[OperationContract] 
double Sub(double x, double y); 
这样客户端调用的时候,能够直接得到Sub方法的返回值,但同样功能的服务在mono 上面运行的时候,出现下面的错误: 
Unhandled Exception: 
System.NullReferenceException: Object reference not set to an instance of an object 
at System.ServiceModel.Description.CallbackDebugBehavior.System.ServiceModel.Description.IEndpointBehavior.ApplyClientBehavior (System.ServiceModel.Description.ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.ClientRuntime behavior) [0x00000] in <filename unknown>:0 
at System.ServiceModel.Description.ServiceEndpoint.CreateClientRuntime (System.Object callbackDispatchRuntime) [0x00000] in <filename unknown>:0 
--------------- 
所以,问题出在mono的WCF双工服务中,方法不支持 
IsOneWay = false 的情况,也就是服务的双向调用。 
============ 
向楼主求解,万分感谢!

这样的方法在Windows 下运行良好,把它放到了Mono环境下不正常了。有时候需要“同步”的回调,这也是合理的需求呀,我把他这个方法进去进行测试:

然后在服务的实现上加上ServiceBehavir的UseSynchronizationContext 进行设定。UseSynchronizationContext 的默认值为true。

WCF的service操作默认实现了对Host service的当前线程的SynchonizationContext实现了关联。与Callback操作的线程关联性通过CallbackBehavior的UseSynchronizationContext 进行控制,我们将CalculateService的UseSynchronizationContext 设为false。

客户端的调用代码:

然后放到Mono上去运行,成功了。

在Windows From的UI线程下使用的时候是需要明确指定UseSynchronizationContext 为false的,在控制台下是不需要的。在Mono的运行环境都需要明确的指定UseSynchronizationContext 为false。这是否可以说明Mono的实现更加统一呢?

代码下载

相关文章:

WCF 中的同步环境

WCF后续之旅(11): 关于并发、回调的线程关联性(Thread Affinity)

作者:  自由、创新、研究、探索……
出处: http://shanyou.cnblogs.com/
版权:本文版权归作者和博客园共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任 

翻译此页 阿拉伯语 爱沙尼亚语 白苗语 保加利亚语 波兰语 波斯语 朝鲜语 丹麦语 德语 俄语 法语 繁体中文 芬兰语 海地克里奥尔语 荷兰语 加泰隆语 捷克语 拉脱维亚语 立陶宛语 罗马尼亚 挪威语 葡萄牙语 日语 瑞典语 斯洛伐克语 斯洛文尼亚语 泰语 土耳其语 乌克兰语 西班牙语 希伯来语 希腊语 匈牙利语 意大利语 印地语 印度尼西亚语 英语 越南语

Microsoft ®  Translator

 

分类:  WCF ,  Linux/Mono

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于WCF Service Hosting的线程关联性Mono实现比.NET统一?的详细内容...

  阅读:40次