- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
决定是使用 PerSession 还是 PerCall 的一般经验法则是什么?
我有一个稍微繁重(我认为..)的 WCF 服务,包含对大约 80 个表的 CRUD 方法。
我已将 WCF 服务分成 1 个服务中的 7 个契约(Contract)(即 1 个服务中的 7 个端点),这样每个契约(Contract)都负责自己的领域,例如我有一个销售契约(Contract),所以所有与销售相关的表, 其对应的操作都在销售“限界上下文”内
所以我的 WCF 服务结构看起来像这样:
public partial class ABCService : ISalesService
{
//CRUD methods of all tables related to Sales
}
public partial class ABCService : IMarketingService
{
//CRUD methods of all tables related to Marketing
}
public partial class ABCService : ICustomerService
{
//CRUD methods of all tables related to Customer
}
public partial class ABCService : IProductService
{
//CRUD methods of all tables related to Products
}
我对 PerCall 的担忧是,因为我有一个相当大的 DB/WCF 服务,恐怕每次调用消耗的资源量乘以用户数量和他们调用该服务的速率, 太棒了。
我不知道详细信息,但我读到创建 channel 代理是昂贵的操作。
哦,我正在使用手工编码的代理而不是 VS 的添加服务引用来使用我的 WCF 服务。
那么,我的问题是,我应该使用哪个? PerSession 还是 PerCall?
更新:
最佳答案
在我看来,做决定要考虑这两点
InstanceContextMode.PerSession
一起去- 如果您的用户在服务器的 WCF 服务中存储了一些 session 值。InstanceContextMode.PerCall
一起去- 如果您的用户在服务器上的 WCF 服务 session 中没有存储任何内容,即 WCF 服务不需要将每个用户设置存储在内存中。需要可扩展性。一些关于When-And-Why的观点,
PerCall
中给定时间段内的任何 1000 个客户端请求在这种情况下,100 个事件 调用只会实例化 100 个对象。其次,如果服务器崩溃,则在 PerCall
情况下,唯一会发生的错误是 100 个正在进行的实际请求(假设快速故障转移)。其他 900 个客户端可以在下次调用时路由到另一台服务器。PerSession
中给定时间段内的任何 1000 个客户端请求情况下,您可能在服务器上实例化了 1000 个对象,但实际上只有 100 个在任何时候都处于事件调用状态。从而实例化了PerSession
对象可能会浪费资源,并可能影响在负载下处理请求的能力。其次,如果服务器崩溃,则在 PerSession
在该服务器上有 session 的所有 1000 个客户端都将丢失他们的 session 并且无法完成他们的工作。引用链接:
关于c# - PerSession 与 PerCall,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15104960/
决定是使用 PerSession 还是 PerCall 的一般经验法则是什么? 我有一个稍微繁重(我认为..)的 WCF 服务,包含对大约 80 个表的 CRUD 方法。 我已将 WCF 服务分成 1
WCF 中的 basicHttpBinding 是否支持服务行为中的 PerSession 值? 在哪里可以找到总结每个绑定(bind)及其选项的所有信息的表格? ? 最佳答案 不,由于 HTTP 协
WCF 中的 basicHttpBinding 是否支持服务行为中的 PerSession 值? 我在哪里可以找到总结每个绑定(bind)及其选项的所有信息的表格? ? 最佳答案 不,由于 HTTP
我是 WCF 的新手,正在尝试了解各种实例管理技术,我能够理解 Per-Call 和 Singleton 实例模式,但我对每个 session 实例模式感到困惑,在这种情况下,对于每个客户端,一个单独
无法理解为什么 PerSession/WCF 服务的类型构造函数调用了两次。 ConcurrencyMode 是Multiple。刚刚同时启动五个执行相同 WCF 服务方法调用的客户端,在日志中我看到
我有一个自承载的 WCF 服务,其 InstanceContextMode 设置为 PerSession。 如何从主机应用程序检测到我的服务的新客户端连接( session ),并使用该新 sessi
在 PerSession 中,如何让服务上的 Dispose() 触发?在下面的代码中 Dispose() 没有被调用。当我调用 .Close() 或让 session 超时时都不会。 如果我将服务更
我想在我的 wcf 服务中使用以下内容在日志消息中记录用户: log4net.ThreadContext.Properties["user"] = this.currentUser.LoginName
我有 AJAX 客户端使用 SOAP 1.2 使用的 WCF 服务 网络配置: 据我所知read , 我必须使用 因为使用“wsHttpBinding”绑
1.) 我有一个主要方法 Processing,它以字符串作为参数,该字符串包含一些 x 个任务。 2.) 我有另一种方法 Status,它通过使用两个变量 TotalTests 和 CurrentT
我正在尝试从同一个 session 同时处理多个消息,并希望保证 FIFO,它仅适用于 ServiceBusSessionProcessorOptions 上的处理器 MaxConcurrentCal
我有一个带有静态数据上下文的 WCF 服务,但没有并发性。它已经运行了一年,没有任何问题,但前几天我们看到了一些奇怪的行为,用户正确地传递了数据,但得到了意想不到的不正确的数据。这确实通过了 F5,所
我是一名优秀的程序员,十分优秀!