我有一个2层应用程序(一个用C ++编写的重客户端连接到面向对象的数据库)。数据库本身是InterSystems Cache',它实际上是 数据库和应用程序服务器( Cache'也是MUMPS解释器。)
出于性能原因,我想设计一个客户端缓存(或者更常见的是持久性管理器)。
InterSystems Cache'确实有像ODBC / JDBC这样的“快速”接口,但我正在处理许多遗留客户端代码,这些代码已经使用Object Binding多年了。所以我无法改变客户端的架构,但必须加快协议的速度。协议本身最初是非常详细:所有类/方法/属性名称都是逐字发送的,因此,例如,创建单个对象服务器端会“花费”50k流量。
服务器端的类支持继承,并且可以具有属性和方法。因此,使用缓存'对象绑定意味着我可以:
这里重要的是,服务器端方法调用通常执行代码,其性质是客户端未知的。由于此代码可能会改变数据库中对象的状态,因此在方法调用之后可能需要使客户端缓存无效。这与常规CRUD操作不同,客户端可以跟踪对对象所做的更改,并相应地更新缓存。
问题:
答案 0 :(得分:1)
ORM框架(Wt :: Dbo)似乎做了这个工作:
http://www.webtoolkit.eu/wt/doc/tutorial/dbo/tutorial.html
Wt
看起来像是一个用C ++实现现代Web应用程序的非常有趣的工具。