Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 缓存会话中的数据集以按需获取_C#_Performance_Wcf_Delphi_Rest - Fatal编程技术网

C# 缓存会话中的数据集以按需获取

C# 缓存会话中的数据集以按需获取,c#,performance,wcf,delphi,rest,C#,Performance,Wcf,Delphi,Rest,我正在考虑使用WCF或mormot作为RESTful服务的框架,其中需要访问的业务/遗留代码是用Delphi编写的。绩效是项目的前提。 应用程序必须为负载平衡做好准备。REST服务桌面的客户端是Windows应用程序。这些桌面客户端允许用户查看大量数据,并在SQL语句中显示大量结果集。实现缓存记录集并通过REST服务慢慢使用它的服务的最佳方式是什么。你能举个好例子吗?记录集必须缓存在会话中,直到客户端完成协商或决定执行完全获取。我在寻找合适的架构 在WCF中启用负载平衡是否有效?由于记录集缓存在

我正在考虑使用WCF或mormot作为RESTful服务的框架,其中需要访问的业务/遗留代码是用Delphi编写的。绩效是项目的前提。 应用程序必须为负载平衡做好准备。REST服务桌面的客户端是Windows应用程序。这些桌面客户端允许用户查看大量数据,并在SQL语句中显示大量结果集。实现缓存记录集并通过REST服务慢慢使用它的服务的最佳方式是什么。你能举个好例子吗?记录集必须缓存在会话中,直到客户端完成协商或决定执行完全获取。我在寻找合适的架构

在WCF中启用负载平衡是否有效?由于记录集缓存在一台服务器上,因此行提取请求(如果有)必须落在同一台服务器上。

WCF和mORMot都共享同一个高性能内核模式http.sys服务器。两者都具有IOCP和多线程功能

为了提高性能,mORMot将分配(少得多)更少的内存,不会受到垃圾收集器冻结的影响,并且能够直接从数据库引擎获取JSON内容(通过传递大多数临时数据转换和分配),因此您可以。简言之,mORMot设计用于从一开始就使用多线程内核提供REST/JSON内容(而node.js是单线程的)。如果您的目的也是缓存一些数据,那么mORMot与64位本机服务一样工作得很好,可以在需要时访问所有系统RAM,并且具有内置功能

WCF是一个伟大的通用通信库,它可以是RESTful的,但从其(历史)根源来看不是RESTful的。我在WCF中看到的主要问题是很难在应用程序之间配置它(.exe.config调优可能会令人困惑),而且它是一个很大的黑匣子。例如,当服务器作为Windows服务托管时,不可能使用WCF实现(WCF将删除
访问控制允许源代码:
HTTP头!):您必须在IIS中托管它-并且无法修复该问题,而使用完整的开源解决方案,您可以修复任何问题

负载平衡可以用相同的算法在mORMot和WCF中实现。在您的案例中,不使用round robbin算法,而使用基于内容的简单路由就足够了

使用WCF服务于用Delphi编写的业务逻辑速度慢,容易出错,并且难以维护。混合技术导致了不必要的复杂性。我不会朝这个方向走


如果您有一个现有的Delphi代码库和一些Delphi技能,我想mORMot可能是一个更好的选择。例如,生产环境中的一台服务器每天能够处理超过一百万个请求,为数千个并发客户端提供服务,而服务器端的数据则是如此。mORMot的设计目标之一是。但我不是100%公平的,因为我是这个开源项目的主要维护者

您的结果集内容如何?一些巨大的二进制blob和许多简单的值行?您希望使用的数据库引擎是什么?