用于许多并发客户端和数据库访问的 WCF 服务

2024-01-09

我是 WCF 服务的新手,想知道解决以下问题的最佳方法是什么。

我有很多客户(~200 - ~500),他们在工作日期间不断地向我提出服务请求。大多数请求都涉及询问底层数据库以反馈正确的响应。

我关心的是传入请求产生的数据库连接的潜在数量。如果所有客户端同时发出请求,那么数据库服务器将受到严重打击。如果可能的话,我想避免与数据库的愚蠢连接。

限制 WCF 服务的并发连接数是否会更好,从而无意中减少可能的数据库连接数?

我已经考虑过使该服务成为一个单例,它生成线程来执行数据库事务,以便我可以控制线程的数量,但这是否太过分了,限制与服务的连接就足够了吗?

非常感谢您的任何建议。


正如 Marcos 已经提到的 - WCF 具有内置的服务限制功能,您可以在服务器上进行调整。这可以防止您的数据库服务器同时被太多请求淹没。

默认值是:

<serviceThrottling 
      maxConcurrentCalls="16"
      maxConcurrentSessions="10" 
      maxConcurrentInstances="26" />

See the 有关 ServiceThrotdlingBehavior 的 MSDN 文档 http://msdn.microsoft.com/en-us/library/system.servicemodel.description.servicethrottlingbehavior.aspx更多细节。

这意味着 WCF 最多同时处理 16 个调用 - 即,IF您的 WCF 服务类允许同时多个调用者!

与马科斯相反,我会not建议将您的 WCF 服务类设置为单例。常见的最佳实践是拥有一个简单的 WCF 服务类,并以每次调用的方式使用它 - 例如每个传入请求都将获得其自己的、完全独立的、新创建的 WCF 服务类实例 - 最大数量由服务限制行为定义并由 WCF 运行时控制。

如果您将 WCF 服务类设置为单例,则必须将其 ConcurrencyMode 设置为 Multiple,但是您需要极其小心,不要让类中的两个同时线程相互更改相同的值;或者将其 ConcurrencyMode 设置为 Multiple。多线程安全编程是一个重大挑战!或者您没有将并发模式设置为“Multiple”,但是您的唯一一个 WCF Service 类实例只能以串行方式处理请求,一次一个 - 可扩展性不太好!

每次调用和每个请求一个服务实例绝对是更简单的方法。通过适当的服务限制和 ADO.NET 连接池,可以构建一个非常强大且表现良好的环境!

另请参阅Dan Rigsby 关于 WCF 服务限制的精彩博客文章 http://www.danrigsby.com/blog/index.php/2008/02/20/how-to-throttle-a-wcf-service-help-prevent-dos-attacks-and-maintain-wcf-scalability/了解更多详细信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于许多并发客户端和数据库访问的 WCF 服务 的相关文章

  • 在 MySQL 数据库中保持 TEXT 字段唯一的最佳方法

    我想让 TEXT 字段的值在我的 MySQL 表中唯一 经过小型研究 我发现由于性能问题 每个人都不鼓励在 TEXT 字段上使用 UNIQUE INDEX 我现在想用的是 1 创建另一个字段来包含 TEXT 值的哈希值 md5 text v
  • 为什么大多数 C 开发人员使用 Define 而不是 const? [复制]

    这个问题在这里已经有答案了 在许多程序中 define与常量具有相同的用途 例如 define FIELD WIDTH 10 const int fieldWidth 10 我通常认为第一种形式优于另一种形式 它依赖于预处理器来处理基本上是
  • 向 ExpandoObject 添加方法时,“关键字 'this' 在静态属性、静态方法或静态字段初始值设定项中无效”

    我尝试向 ExpandoObject 添加一个动态方法 该方法将返回属性 动态添加 给它 但它总是给我错误 我在这里做错了什么吗 using System using System Collections Generic using Sys
  • 32 位应用程序的特征最大矩阵大小

    所以 我正在寻找Eigen http eigen tuxfamily org index php title Main Page当我尝试声明大于 10000x10000 的矩阵时 包崩溃 我需要声明一个像这样的矩阵 可靠地大约有 13000
  • 为什么要序列化对象需要 Serialized 属性

    根据我的理解 SerializedAttribute 不提供编译时检查 因为它都是在运行时完成的 如果是这样 那么为什么需要将类标记为可序列化呢 难道序列化器不能尝试序列化一个对象然后失败吗 这不就是它现在所做的吗 当某些东西被标记时 它会
  • C++:重写已弃用的虚拟方法时出现弃用警告

    我有一个纯虚拟类 它有一个纯虚拟方法 应该是const 但不幸的是不是 该接口位于库中 并且该类由单独项目中的其他几个类继承 我正在尝试使用这个方法const不会破坏兼容性 至少在一段时间内 但我找不到在非常量方法重载时产生警告的方法 以下
  • Clang 编译器 (x86):80 位长双精度

    我正在尝试在 x86 Windows 平台上使用本机 80 位长双精度 海湾合作委员会选项 mlong double 80 https gcc gnu org onlinedocs gcc x86 Options html似乎不适用于 cl
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • C 语言中 =+(等于加)是什么意思?

    我碰到 与标准相反 今天在一些 C 代码中 我不太确定这里发生了什么 我在文档中也找不到它 In ancientC 版本 相当于 它的残余物与最早的恐龙骨头一起被发现 例如 B 引入了广义赋值运算符 使用x y to add y to x
  • 如何在c#中的内部类中访问外部类的变量[重复]

    这个问题在这里已经有答案了 我有两个类 我需要声明两个类共有的变量 如果是嵌套类 我需要访问内部类中的外部类变量 请给我一个更好的方法来在 C 中做到这一点 示例代码 Class A int a Class B Need to access
  • 尚未处理时调用 Form 的 Invoke 时出现 ObjectDisposeException

    我们得到一个ObjectDisposedException从一个电话到Invoke在尚未处理的表格上 这是一些演示该问题的示例代码 public partial class Form2 Form void Form2 Load object
  • 结构体指针的动态数组

    我必须使用以下代码块来完成学校作业 严格不进行任何修改 typedef struct char firstName char lastName int id float mark pStudentRecord pStudentRecord
  • 什么是 __declspec 以及何时需要使用它?

    我见过这样的例子 declspec在我正在阅读的代码中 它是什么 我什么时候需要使用这个构造 这是 Microsoft 对 C 语言的特定扩展 它允许您使用存储类信息来赋予类型或函数属性 文档 declspec C https learn
  • 转到定义:“无法导航到插入符号下的符号。”

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我今天突然开始在我的项目中遇到一个问题 单击 转到定义 会出现一个奇怪的错误 无法导航到
  • 使用 C# 从 DateTime 获取日期

    愚蠢的问题 给定日期时间中的日期 我知道它是星期二 例如我如何知道它的 tue 2 和 mon 1 等 Thanks 您正在寻找星期几 http msdn microsoft com en us library system datetim
  • Googletest:如何异步运行测试?

    考虑到一个包含数千个测试的大型项目 其中一些测试需要几分钟才能完成 如果按顺序执行 整套测试需要一个多小时才能完成 通过并行执行测试可以减少测试时间 据我所知 没有办法直接从 googletest mock 做到这一点 就像 async选项
  • 实例化 Microsoft.Office.Interop.Excel.Application 对象时出现错误:800700c1

    实例化 Microsoft Office Interop Excel Application 以从 winforms 应用程序生成 Excel 时 出现以下错误 这之前是有效的 但突然间它停止工作了 尽管代码和 Excel 版本没有变化 我
  • 是否可以在 C# 中强制接口实现为虚拟?

    我今天遇到了一个问题 试图重写尚未声明为虚拟的接口方法的实现 在这种情况下 我无法更改接口或基本实现 而必须尝试其他方法 但我想知道是否有一种方法可以强制类使用虚拟方法实现接口 Example interface IBuilder
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检
  • 错误:无效使用不完整类型“类 Move”/未定义对 Move::NONE 的引用

    拜托 我不知道为什么这个简单的代码被拒绝 它给了我 2 个编译错误 请帮帮我 I use 代码 块 20 03 我的编译器是GNU GCC 移动 hpp class Move public Move Move int int public

随机推荐

  • 连接 SQL 查询中一个字段的多个结果

    我不确定这是否可以通过 SQL 查询实现 但我会尝试一下 我正在用 C 开发一个 SharePoint Web 部件 它连接到 SQL 数据库并运行查询 然后将该结果集数据绑定到网格视图 它工作正常 但我有一个小障碍 在大多数情况下 我的查
  • http 标头中是否允许存在多个线性空白

    我试图理解http www w3 org Protocols rfc2616 rfc2616 sec2 html sec2 2 http www w3 org Protocols rfc2616 rfc2616 sec2 html sec2
  • 使用 boost:asio 和 select?阻塞 TCP 输入或文件更新

    我原本打算在程序中设置一个线程 该线程将等待两个文件描述符 一个用于套接字 第二个用于描述文件系统的 FD 特别是等待查看是否将新文件添加到目录中 由于我预计很少会看到添加的新文件或传入的新 TCP 消息 因此我希望有一个线程等待任一输入并
  • 如何使用 Gradle 构建 Google protocol buffers 和 Kotlin?

    我正在尝试使用 Gradle 构建一个同时使用 Google 协议缓冲区和 Kotlin 的项目 我希望将 proto 文件编译为 Java 源代码 然后从我的 Kotlin 代码中调用该源代码 我的源文件是这样排列的 src main p
  • 使用 SearchView 过滤 RecyclerView 的 LiveData 内容列表

    我创建了 RecyclerView 其中包含简单的单词列表 GroupVc 对象的字符串名称 由于列表可能很长 我想使用工具栏中的 SearchView 对其进行过滤 我的应用程序的架构基于 Android 架构组件 其中所有 GroupV
  • 如何将一个输入框中的值传递到另一个输入框

    我正在尝试在框之间传递值 因此 当用户在第一个文本框中键入时
  • 根据另一个数组的顺序对数组进行有效排序

    假设我有这个 struct Pet let name String let pets Pet name Z Pet name F Pet name A Pet name E let petNames E F Z A 我的预期输出是 Pet
  • 使用 requireJS 优化器时,buildlayered javascript 有什么优势?

    我正在尝试我的第一次尝试requireJs optimizer r js here http requirejs org docs optimization html 准备生产申请 我可以让一切正常工作 并且可以将我的所有 js 丑化为一个
  • React Navigation:使用 this.props.navigation.state.params 接收“未定义”

    当我将道具传递到另一个屏幕时 我遇到了一个奇怪的问题 我传递两个参数 title and body 转到文章正文屏幕 class ListButtonWrapper extends React Component constructor p
  • 如何列出可用的泡沫工厂类型

    简而言之 我试图弄清楚是否有一种方法可以在加载 WSDL 后列出可用于调用 Client factory create 的所有类型 我有一个复杂类型的参数 其中包含另一个复杂类型的数组 suds 工厂似乎不知道如何创建属于数组的类型 所以我
  • PHP 的 glob() 可以以不区分大小写的方式查找文件吗?

    我希望所有 CSV 文件都在一个目录中 所以我使用 glob my dir CSV 但是 这不会找到具有小写 CSV 扩展名的文件 I could use glob my dir CSV csv GLOB BRACE 但是有没有办法允许所有
  • Xcode6中如何获取设备控制台?

    我正在探索 iOS8 测试版 我在 窗口 gt 设备 gt MyiPad 中找不到设备控制台日志 有人可以告诉我如何获取控制台日志吗 你走在正确的道路上 只需单击向下的小箭头 参见图片 它就会向您显示日志
  • chrome 视频 src 更改不起作用

    我使用以下代码来更改视频src视频结束后的属性 我预加载第二个视频 我更改 src 以链接到第二个视频 In IE and Firefox这很好用but在Chome 27 X X视频元素 改变后似乎死了src 奇怪的是 如果我使用断点来单步
  • 在 java 中禁用 XML DOM 解析器的自动解码

    这是我的程序 public class XMLTest static String XMLdata section section
  • 将字符串转换为日期时类型不匹配

    发现问题 日期语言为俄语 但下一个问题是 如何根据特定用户的日期格式转换日期字符串 可能是简单的问题 把我的头撞到墙上 我的 txt 文件中有日期 它被读取为 21 年 9 月 1 日 VBA 中将其用作日期的任何操作都会导致类型不匹配 D
  • 使用 Visual Studio Code 进行调试不起作用

    我希望能够使用 Visual Studio Code 调试 Angular2 应用程序 这是我的环境 OS Ubuntu 16 10 x64 Browser Chromium53 0 2785 143 Node 6 8 0 Angular
  • cUrl 设置语言标头

    如何为我的 cURL 请求设置语言标头 例如现在我得到了 facebook com 的荷兰语主页 可能是因为我的服务器位于荷兰 通过标头发送的默认语言 在这种情况下 我更喜欢英语而不是荷兰语 所以我尝试在curl中设置一个httpheade
  • php 函数将 %3c 转换回 html

    我有一个字符串需要转换回 html 它的格式如下 3cli 3e 这应该是 li 我可以使用什么 php 函数来转换它 尝试了 html entity decode 但这不起作用 urldecode http www php net man
  • RSA 密码系统蒙哥马利模乘法的最终减法

    我对如何绕过模数的最终减法感到困惑radix 2 蒙哥马利模乘法 https pdfs semanticscholar org cbfd 5f286cf3a54025356cff90cd17ab083fafc1 pdf 当用于模幂算法时 下
  • 用于许多并发客户端和数据库访问的 WCF 服务

    我是 WCF 服务的新手 想知道解决以下问题的最佳方法是什么 我有很多客户 200 500 他们在工作日期间不断地向我提出服务请求 大多数请求都涉及询问底层数据库以反馈正确的响应 我关心的是传入请求产生的数据库连接的潜在数量 如果所有客户端