2013-07-28 2 views
0

Я планирую написать приложение, использующее RMI, который использует JDO в качестве базы данных. Я думаю о том, чтобы брать те же классы и компилировать RMI-заглушки и улучшать их для использования с JDO. Таким образом, клиенты общаются с сервером, используя те же объекты, которые хранятся в базе данных. Это возможно?RMI и JDO: Насколько они совместимы?

+0

Я тоже видел ваш другой вопрос. Моя последняя программа RMI - пару лет назад, поэтому я не помню всех деталей RMI и не могу дать действительно хороший ответ, но мне кажется странным, что объекты домена удаляются из удаленных объектов. Возможно, лучше подходит архитектура с хорошо определенным интерфейсом сервера и, возможно, объектами передачи данных (DTO). Также я рекомендую сначала ознакомиться с требованиями. Во-вторых, попытаться удовлетворить ваши требования технически приведет вас в правильном направлении. Альтернативная альтернатива: передача сообщения, например. с Аккой (www.akka.io). Удачи. – user573215

+0

Есть много более практичных деталей для объектов JDO, чем только данные домена. Существуют методы жизненного цикла (реализация JDO-специфических интерфейсов), вспомогательный код, который создает зависимость от самой реализации JDO и т. Д. Вы направляетесь именно в том направлении, о котором я упомянул вам в вашем другом вопросе: у вас будет полный набор зависимостей JAR как на клиенте, так и на сервере. –

ответ

0

Я раньше не использовал JDO, но если бы я отказался от этого, я сделал бы эти данные неизвестными клиенту.

Клиент не должен заботиться о том, где и как возникают объекты, из которых он запрашивается. Это позволяет вам определить интерфейс (или интерфейсы), с которым клиенту будет разрешено взаимодействовать, но освобождая вас от реализации, по вашему усмотрению.

Проблема с разоблачением клиента деталями означает, что с трудом (если не невозможно) перейти позже к другой реализации.

На мой взгляд, я бы рассматривал его так же, как любой другой удаленный API (например, веб-RPC), где у вас есть серия хорошо определенных интерфейсов, которая позволяет клиенту взаимодействовать с сервером, но сохранить детали как это взаимодействие действительно работает на стороне сервера.

Это отделяет сферу ответственности и, если вы хорошо ее проектируете, означает, что если вам понадобится изменить модель сервера в будущем, это должно практически не повлиять на клиента, поскольку у вас есть четко определенный контракт, согласно которому вы может работать через

Так что мой ответ будет, да, это может быть сделано, но нет, клиент не должен ничего знать о том, как это делается

ИМХО

0

Это должно работать, если вы убедитесь, что для отсоединения JDOs, прежде чем они будут сериализованы над RMI. См. http://db.apache.org/jdo/attach_detach.html

+0

Но могу ли я прикрепить их позже и сделать их еще доступными для удаленного доступа? – tbodt

+0

Да, хотя присоединение полезно только на сервере в сценарии, когда ваш удаленный клиент сделал обновление JDO, и вы хотите сохранить изменения в вашем хранилище данных. – TheArchitect

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