首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >WCF服务契约接口的不同形式

WCF服务契约接口的不同形式
EN

Stack Overflow用户
提问于 2014-03-25 09:38:22
回答 1查看 4.4K关注 0票数 22

似乎我可以在以下三个不同版本的同一个WCF合约接口API之间自由切换,而不会破坏客户端:

[ServiceContract]
interface IService
{
    // Either synchronous
    // [OperationContract]
    // int SomeMethod(int arg);

    // Or TAP
    [OperationContract]
    Task<int> SomeMethodAsync(int arg);

    // Or APM
    // [OperationContract(AsyncPattern = true)]
    // IAsyncResult BeginSomeMethod(int arg, AsyncCallback callback, object state);
    // int EndSomeMethod(IAsyncResult ar);
}

现有的测试客户端应用程序在没有任何重新编译或接触的情况下继续工作。如果我重新编译服务并将其引用重新导入到客户端应用程序中,WSDL定义仍然是相同的,即1:1。

我的问题:

  • Is it是我可以依赖的合法行为吗?它在任何地方都有文档吗?

其思想是将一组同步的SomeMethod-style方法转换为TAP SomeMethodAsync-style方法,以便在其实现中使用async/await,从而在不破坏现有客户端的情况下提高WCF服务的可扩展性。

此外,在WCF3.5和.NET 4.0下,.NET服务伸缩也存在一些已知的问题。它们记录在MSKB文章"WCF service may scale up slowly under load"和CodeProject文章"Tweaking WCF to build highly scalable async REST API"中。基本上,仅将服务契约API实现为自然异步是不够的,WCF运行时仍然阻塞请求线程。

  • 有人知道 .NET 4.5.x开箱即用解决了这个问题吗?或者仍然需要进行额外的调整?
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22623922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档