gpt4 book ai didi

c# - 在 session 中缓存数据集以按需获取

转载 作者:行者123 更新时间:2023-12-01 18:35:32 25 4
gpt4 key购买 nike

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

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

最佳答案

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

对于性能,mORMot will be lighter ,将分配(少得多)的内存,不会受到垃圾收集器卡住的影响,并且能够直接从数据库引擎获取 JSON 内容(绕过大多数临时数据转换和分配) - 这样您 can achieve amazing speed 。简而言之,mORMot 的设计目的是为了从头开始提供 REST/JSON 内容的性能 - 使用多线程内核(而例如 node.js 是单线程的)。如果您的目的还在于缓存一些数据,mORMot 作为 64 位 native 服务可以很好地工作,可以在需要时访问所有系统 RAM,并且内置 real-time content compression .

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

可以使用相同的算法在mORMot和WCF中实现负载平衡。在您的情况下,无需使用循环算法,基于内容的简单路由可能就足够了。

使用 WCF 来服务用 Delphi 编写的业务逻辑会很慢、容易出错并且难以维护。混合技术会带来不必要的复杂性。我不会朝这个方向发展。

如果您有现有的 Delphi 代码库和一些 Delphi 技能,我想mORMot可能是更好的选择。它was reported例如生产中的单个服务器每天能够处理超过一百万个请求,为数千个并发客户端提供服务,dedicated JavaScript process在服务器端。 mORMot 设计目标之一是 help working with existing code and legacy projects 。但我并不是 100% 公平,因为我是这个开源项目的主要维护者。 :)

关于c# - 在 session 中缓存数据集以按需获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23199982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com