WCF 最佳性能设置

2024-03-03

您好,我正在使用 WCF 创建一个 API。我的问题可以分为两个单独的问题

1)我有很多电话,例如我有与客户、产品、订单、员工有关的电话。

我的问题是所有这些都应该进入一个公共接口类,例如

public interface IRestService
public class RestService : IRestService

或者我应该为每次通话准备一个,例如

public interface ICustomer
public class Customer : ICustomer

public interface IProducts
public class Products: IProducts

2) 如果您有一个 API,将被数以万计的用户和数千个用户同时访问,您将如何设置,您的 Web 配置设置是什么,例如在限制方面。另外你会给你什么设置InstanceContextMode, or ConcurrencyMode。最后,考虑到网站和手机可以访问 api,它会是哪种类型的绑定。


为了良好的实践,我会将 API 分解为单独的接口,以便您将来可以选择将它们拆分为单独的实现。您仍然可以只让一个服务类实现所有接口,如下所示:

public class RestService : ICustomer, IProducts, IOrders

然而,听起来好像你可能想让它们单独实现。

在并发设置方面,问问自己每次调用需要使用哪些资源。如果您的服务类的构造函数可以编写而无需任何冗长的启动,那么请使用 PerCall。如果您需要初始化昂贵的资源,那么我建议使用 InstanceContextMode.Single 和 ConcurrencytMode.Multiple 并确保编写线程安全的代码。例如:在使用任何类属性或其他共享资源之前,请确保对它们进行 lock() 。

数据库连接将not不过,这算作“初始化成本很高”,因为 ADO 将为您进行连接池并消除该开销。

正如拉迪斯拉夫提到的,你的节流设置将通过测试来揭示。您想要对您的服务进行压力测试,并使用结果来了解需要多少台机器来为您的预期负载提供服务。然后,您将需要一个专用的负载均衡器来以循环方式路由请求,或者检查每个服务器的运行状况。负载均衡器可以设置为获取“systemhealth.asp”页面并检查结果。如果您返回“OK”,则该计算机将保留在池中,或者如果超时或返回任何其他状态,则可以暂时从池中删除。

您的绑定需要是 REST 的 WebHTTPBinding。例如,BasicHTTPBinding 适用于 SOAP 接口,不支持 [WebGet]。

如果它不必是 REST 服务,那么您可以通过使用 NetTcpBinding 获得更高的性能。

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

WCF 最佳性能设置 的相关文章

随机推荐

  • gwt 中的会话管理

    我正在开发 GWT ext 应用程序 在此应用程序中 我管理客户端会话 为此我写了下面的代码 管理会话 导入 com google gwt user client Timer public class ClientTimers privat
  • 创建霍夫曼树时增加权重时哪个节点向左或向右

    我正在尝试创建一棵霍夫曼树 但阅读互联网上的几个链接时我有点困惑 有些在左侧添加较大 就权重而言 的子节点 有些在右侧添加 所以我的问题是 1 在哪里添加节点 左边还是右边 真的有问题吗 2 我可以在右侧添加权重较大的节点还是在左侧添加权重
  • 使用映射与记录之间的差异以及何时使用

    我正在尝试将一些使用 Map 的 Java 代码映射到 Typescript 代码 我最初的想法是在 Typescript 中使用 Map 但对于我创建的界面来说这并没有成功 相反 我发现 Records 似乎完美地模拟了 Java 的 M
  • Nodejs API 调用将未定义返回到 lambda 函数

    这是将调用 api 的 aws lambda 函数 use strict var request require request exports handler function event context callback let url
  • 添加对旧变更日志文件的更改。液体碱

    我有很多包含数据库初始数据的变更日志文件 之前所有表都位于 Postgres 公共模式中 但现在我已将它们分布在不同模式之间 以便初始数据的更改无法到达表 我可以用初始数据更改所有旧文件并添加 schemaName my schema 还是
  • 从电子邮件标头转换数据

    有谁可以帮助我如何转换电子邮件标题中的数据 我有电子邮件标题中的下一个日期格式 Wed 28 Apr 2010 21 59 49 0400 我需要将它们转换为 mysql 日期或时间戳 谢谢 你应该使用DateTime http php n
  • 让其他人可以在 Xcode 中访问我的开发团队

    我有一个 单一会员 Apple 会员资料 与我合作的一位开发人员需要访问我的开发团队来测试他在其设备上构建的应用程序 Xcode 不允许他在没有该资料的情况下构建应用程序 我怎样才能让他访问开发团队 而不必向他提供我帐户的登录凭据 由于您拥
  • 如何从另一张表中获取精确匹配的数据?

    我在 数据库 工作表中有数据 如下所示 我编写了一个简短的代码来获取与 数据库 工作表中的某些条件匹配的数据 并将其粘贴到另一张 选定记录 工作表上 这是我的代码 Sub CopyData Dim db As Worksheet Dim r
  • 我应该将私有类方法设置为静态吗?

    是否有将类中的私有方法设为静态的最佳实践 我有一堂有几种方法的课 其中一些可以很容易地静态化 因为它们只是处理数据 我应该让它们静态还是让它们保持原样 这更多的是风格问题吗 有性能方面的考虑吗 Edit 方法可以变成静态的 但是应该吗 ht
  • 为什么 strdup 被认为是邪恶的

    我看过一些海报说strdup是邪恶的 对此有共识吗 我使用它时没有任何负罪感 并且看不出为什么它比使用它更糟糕malloc memcpy 我唯一能想到的可能是赚钱strdup众所周知 调用者可能会滥用它 例如 没有意识到他们必须释放返回的内
  • 将秒转换为分钟、小时和天的函数

    问题 编写一个程序 要求用户输入秒数 其工作原理如下 一分钟有 60 秒 如果用户输入的秒数大于或等于 60 则程序应显示该秒数中的分钟数 一小时有 3600 秒 如果用户输入的秒数大于或等于 3600 则程序应显示该秒数内的小时数 一天有
  • 添加 Sprite 的多个实例?

    我正在构建一个自定义图像选择器 它显示 6 个替代版本 然而 照片只显示在第 6 件商品上 model selectedPhoto返回一个 Sprite 并且不会让应用程序正常运行 但是当我使用 model photos ii 每个项目都添
  • 何时在 TypeScript / Angular 中使用接口和模型

    我最近观看了有关 Angular 2 with TypeScript 的教程 但不确定何时使用接口以及何时使用数据结构模型 接口示例 export interface IProduct ProductNumber number Produc
  • Blazor 服务器端应用程序上的子 Blazor 应用程序

    将客户端 Blazor 应用添加到服务器端 Blazor 应用 Hi 继续这里的有用答案 升级到预览版 6 后 Blazor 子应用程序出现 404 错误 https stackoverflow com questions 56586677
  • 如何在新的 AppDomain 中运行 WPF 应用程序?执行程序集失败

    我正在尝试使用应用程序域从控制台应用程序启动 WPF 应用程序 但当我这样做时 我会收到意想不到的错误 独立运行 WPF 应用程序可以正常工作 这段代码也有效 var baseDirectory AppDomain CurrentDomai
  • 更多 coproc 问题

    这是后续bash coproc 和剩余的 coproc 输出 https stackoverflow com questions 7651946 我最终决定一次一行处理文件的习惯用法是 coproc cat auto etc build c
  • 如何使用 isalnum、isdigit、isupper 来测试字符串的每个字符? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试制作一个密码强度模拟器 它要求用户输入密码 然后返回分数 我在用 islanum isdigit isupper 尝试看看输入的
  • 在 C 中编译/匹配 POSIX 正则表达式

    我正在尝试匹配字符串中的以下项目pcode u后跟 1 或 2 位数字 phaseu phasep x 被非单词字符包围 y 被非单词字符包围 z 被非单词字符包围 我尝试使用 POSIX 正则表达式函数 如下所示 实现正则表达式匹配 但有
  • GoogleHadoopFileSystem 无法转换为 hadoop FileSystem?

    原来的问题是尝试在 Google Cloud 上部署 Spark 1 4 https stackoverflow com questions 31466206 spark 1 4 image for google cloud 下载并设置后
  • WCF 最佳性能设置

    您好 我正在使用 WCF 创建一个 API 我的问题可以分为两个单独的问题 1 我有很多电话 例如我有与客户 产品 订单 员工有关的电话 我的问题是所有这些都应该进入一个公共接口类 例如 public interface IRestServ