创建WCF Restful服务,并发问题

创建WCF Restful服务,并发问题,第1张

概述嗨,我正在使用WCF创建一个宁静的服务,该服务可能会在任何给定时间被至少500人使用.我需要设置什么设置才能解决这个问题.请给我任何积分和提示,谢谢. 这是我到目前为止的样本; [ServiceBehavior(IncludeExceptionDetailInFaults = true, InstanceContextMode = InstanceContextMode.Single, Concu 嗨,我正在使用WCF创建一个宁静的服务,该服务可能会在任何给定时间被至少500人使用.我需要设置什么设置才能解决这个问题.请给我任何积分和提示,谢谢.

这是我到目前为止的样本;

[ServiceBehavior(IncludeExceptionDetailinFaults = true,InstanceContextMode = InstanceContextMode.Single,ConcurrencyMode = ConcurrencyMode.Multiple)]

这是一个被调用方法的例子;

public UsersAPI getUserInfo(string UserID)    {        UsersAPI users = new UsersAPI(int.Parse(UserID));        return users;    }    [OperationContract]    [WebGet(BodyStyle = WebMessageBodyStyle.bare,ResponseFormat = Webmessageformat.Json,UriTemplate = "User/{UserID}")]    [WebHelp(Comment = "This returns a users info.")]    UsersAPI getUserInfo(string UserID);
解决方法 最好的方法是使用:

> InstanceContextMode.PerCall
> ConcurrencyMode.Single

这将为每个调用者创建一个新的服务类实例,使您不必担心代码的多线程并发访问,因为每个请求都有自己的服务类实例(它本身就是单线程的 – 它一次只能为一个呼叫者服务).

此外,通过这种方法,您可以轻松地“向外扩展”,例如只需添加更多服务器即可处理更高的负载(您所在位置的服务器或“云端”服务器,例如windows Azure工作人员).

使用ServiceThrottling服务行为,您可以非常轻松地控制允许的并发呼叫者数量 – 这取决于您的计算机的类型和大小.

<serviceBehaviors>  <behavior name="Throttling">     <serviceThrottling              maxConcurrentCalls="16"             maxConcurrentInstances="16"             maxConcurrentSessions="10" />  </behavior></serviceBehaviors>

这些是WCF 3.5的默认值 – maxConcurrentCalls设置定义了可以同时处理多少个调用者.

查看MSDN docs on Service throttling以获取更多详细信息.

总结

以上是内存溢出为你收集整理的创建WCF Restful服务,并发问题全部内容,希望文章能够帮你解决创建WCF Restful服务,并发问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1087485.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存