这是我到目前为止的样本;
[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服务,并发问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)