У меня есть двухуровневое приложение (тяжелый клиент, написанный на C ++, который подключается к объектно-ориентированной базе данных). Сама база данных InterSystems Cache ‘, и это на самом деле и то и другое база данных и сервер приложений (Cache» также MUMPS переводчик).
Из соображений производительности я хочу разработать клиентскую часть кэш (или, в более общем менеджер персистентности).
InterSystems Cache ‘ действительно имеет «быстрые» интерфейсы, такие как ODBC / JDBC, но я имею дело с большим количеством устаревшего клиентского кода, который уже используется Привязка объекта на века. Поэтому я не могу изменить архитектуру клиента, но должен сделать протокол быстрее. Сам протокол изначально очень verbose: все имена классов / методов / свойств передаются дословно, поэтому, например, создание единого объекта на стороне сервера «стоит» мне трафика в 50 тыс.
Классы на стороне сервера поддерживают наследование и могут иметь свойства и методы. Итак, используя Привязка кеша значит я могу:
Здесь важно то, что при вызове метода на стороне сервера обычно выполняется код, природа которого неизвестна клиенту. Поскольку этот код может потенциально изменить состояние объектов в базе данных, кэш на стороне клиента может потребоваться сделать недействительным после вызова метода. Это отличается от обычного CRUD операции, в которых клиент может отслеживать изменения, внесенные в объекты, и соответствующим образом обновлять кэш.
Вопросы:
ORM Framework (Wt :: Dbo), кажется, делает эту работу:
http://www.webtoolkit.eu/wt/doc/tutorial/dbo/tutorial.html
Wt
Похоже, очень интересный инструмент для реализации современного веб-приложения на C ++.
Других решений пока нет …