У меня есть двухуровневое приложение (тяжелый клиент, написанный на C++, который подключается к объектно-ориентированной базе данных). Сама база данных InterSystems Cache', и это на самом деле какбазы данных и сервер приложений (Cache» также MUMPS переводчик).Реализация менеджера сохранения на стороне клиента в C++
По причинам производительности, я хочу создать на стороне клиента кэш (или, более общо, настойчивость менеджер).
InterSystems Cache» имеет„быстрые“интерфейсы, такие как ODBC/JDBC, но я имею дело с большим количеством коды клиента унаследованной, который уже с помощью Object Binding в течение веков. Поэтому я не могу изменить архитектуру клиента, но должен сделать протокол быстрее. Сам протокол изначально очень verbose: все имена класса/метода/свойства передаются дословно, так что, например, создание одного объекта на стороне сервера «стоит» мне 50 тыс. Трафика.
Занятия наследования на стороне сервера и могут иметь свойства и методы. Таким образом, используя Cache»Объект Binding означает, что я могу:
- создавать и удалять объекты,
- свойства чтения и обновления, и
- методы вызова.
Что важно здесь, вызов метода на стороне сервера обычно выполняет код, характер которого неизвестен клиенту. Так как этот код может потенциально изменить состояние объектов в базе данных, кеш-клиент может быть недействительным после вызова метода. Это отличается от обычных операций CRUD, где клиент может отслеживать изменения, внесенные им в объекты, и соответственно обновлять кеш.
Вопросы:
- Какие менеджеры инерционности Java стоит смотреть на, так что я могу взять эту идею и изобретать колесо? Я думаю о J2EE объектных бобах, JPA и сетях с памятью, таких как Coherence.
- Какие администраторы персистентности C++ могут быть адаптированы для использования API InterSystems? В частности, Protocol Buffers подходит для моей задачи?
- Какие методы могут быть использованы для «сжатия» протокола, который изначально очень многословный на проводе? Моим первым вызовом является сжатие ZIP-данных и идентификаторов класса/метода/свойств хэширования (кодирования) (так что структура TLV, содержащая целые числа вместо имен, отправляется по сети). Любые другие идеи?
- Что вы читаете в Enterprise Patterns (в частности, на C++), применимом в моем случае, можете ли вы предложить?
Это пограничный ответ только для ссылок. Ответные ссылки на этом сайте на самом деле не являются ответами. Рассмотрите возможность улучшения сообщения и используйте ссылку только в качестве ссылки. – gunr2171