【问题标题】:WCF service Multiple Users at same timeWCF同时服务多个用户
【发布时间】:2014-04-24 16:15:36
【问题描述】:

我将部署我的第一个基于 WCF 的应用程序,并且想知道最好的部署方式。这是我的架构。请看附图。

我们有一个使用 4.0 框架编写的 WCF,并且有 3 个方法。前端 ASP.NET 网站 (www.site.com) 调用 WCF 来保存数据以及读取数据。图中method1是保存到数据,method2和3是从SQL server 2008 R2数据库读取数据。

在我的 ASP.Net 网站中...

  1. 我正在调用 Method1 并关闭连接......就像这样...... ServiceClient client = new ServiceClient(); client.Method1(data to be saved) client.close();

  2. 我调用方法2和3如下 ServiceClient client = new ServiceClient(); dropDown1list.datasource = client.Method2() dropDown2list.datasource = client.Method3() client.close();

多个用户可以同时使用该网站来提交数据。考虑到这种架构......部署 WCF 以便它可以同时处理多个用户的最佳方式是什么?我阅读了文章http://www.codeproject.com/Articles/89858/WCF-Concurrency-Single-Multiple-and-Reentrant-andhttp://www.codeproject.com/Articles/86007/ways-to-do-WCF-instance-management-Per-call-Per

我现在认为我需要将 WCF 服务作为

 [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple ,  InstanceContextMode = InstanceContextMode.PerCall )]
public class Service : IService
{
   public bool Method1(data to be saved)
    {

    }

    public List<string> Method2()
    {

    }
    public List<string> Method2()
    {

    }

}

我说的对吗?有什么建议么 ?。

【问题讨论】:

标签: c# asp.net wcf concurrency multiple-instances


【解决方案1】:

昨天刚回答了一个类似的问题。根据您的描述和图片,我认为不需要更改您的架构。如果您使用主要的 WCF 绑定之一(webHttpBinding、wsHttpBinding 或 BasicHTTPBinding),您部署的服务应该能够轻松处理数十个并发用户,同时保存和读取所有用户。

每个客户端请求都会生成自己的连接和 Web 服务对象,每个对象都可以与您的数据库同时通信,无论该请求是读取数据还是写入数据。当响应被发送回客户端时,只要您没有做一些奇怪的事情,您的 WCF 服务就会为您销毁对象并清理内存。

过去两年我一直致力于工业规模的 WCF Web 服务。最近我一直在从事一个负载测试/基准测试项目,该项目启动了数百个并发用户,每个用户都在使用加载到数据库中的 XML 工件来猛烈攻击我们的 WCF 测试服务器。我们已经设法每秒加载多达 160 个包(大约 110kb - 每个客户端)。 WCF 并不完美,但它快速、干净并且可以很好地扩展。

我的经验是,您的数据库将成为您的瓶颈,而不是您的 WCF Web 服务。如果您的客户想要将此架构扩展到 Amazon 大小的 Web 服务,那么您需要引入 F5 负载均衡器并以这种方式对其进行扩展。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    相关资源
    最近更新 更多