2013-10-04 2 views
2

У меня есть двухуровневое приложение (тяжелый клиент, написанный на C++, который подключается к объектно-ориентированной базе данных). Сама база данных InterSystems Cache', и это на самом деле какбазы данных и сервер приложений (Cache» также MUMPS переводчик).Реализация менеджера сохранения на стороне клиента в C++

По причинам производительности, я хочу создать на стороне клиента кэш (или, более общо, настойчивость менеджер).

InterSystems Cache» имеет„быстрые“интерфейсы, такие как ODBC/JDBC, но я имею дело с большим количеством коды клиента унаследованной, который уже с помощью Object Binding в течение веков. Поэтому я не могу изменить архитектуру клиента, но должен сделать протокол быстрее. Сам протокол изначально очень verbose: все имена класса/метода/свойства передаются дословно, так что, например, создание одного объекта на стороне сервера «стоит» мне 50 тыс. Трафика.

Занятия наследования на стороне сервера и могут иметь свойства и методы. Таким образом, используя Cache»Объект Binding означает, что я могу:

  1. создавать и удалять объекты,
  2. свойства чтения и обновления, и
  3. методы вызова.

Что важно здесь, вызов метода на стороне сервера обычно выполняет код, характер которого неизвестен клиенту. Так как этот код может потенциально изменить состояние объектов в базе данных, кеш-клиент может быть недействительным после вызова метода. Это отличается от обычных операций CRUD, где клиент может отслеживать изменения, внесенные им в объекты, и соответственно обновлять кеш.

Вопросы:

  1. Какие менеджеры инерционности Java стоит смотреть на, так что я могу взять эту идею и изобретать колесо? Я думаю о J2EE объектных бобах, JPA и сетях с памятью, таких как Coherence.
  2. Какие администраторы персистентности C++ могут быть адаптированы для использования API InterSystems? В частности, Protocol Buffers подходит для моей задачи?
  3. Какие методы могут быть использованы для «сжатия» протокола, который изначально очень многословный на проводе? Моим первым вызовом является сжатие ZIP-данных и идентификаторов класса/метода/свойств хэширования (кодирования) (так что структура TLV, содержащая целые числа вместо имен, отправляется по сети). Любые другие идеи?
  4. Что вы читаете в Enterprise Patterns (в частности, на C++), применимом в моем случае, можете ли вы предложить?

ответ

1

ORM рамки (Wt :: ПСЭ), кажется, чтобы сделать эту работу:

http://www.webtoolkit.eu/wt/doc/tutorial/dbo/tutorial.html

Wt выглядит как очень интересный инструмент для реализации современного веб-приложения в C++.

+0

Это пограничный ответ только для ссылок. Ответные ссылки на этом сайте на самом деле не являются ответами. Рассмотрите возможность улучшения сообщения и используйте ссылку только в качестве ссылки. – gunr2171

Смежные вопросы