Перейти к содержанию
Fire Monkey от А до Я

Трехзвенка и объекты


Рекомендуемые сообщения

Добрый день,
Подскажите пожалуйста найти решение следующей задачи:
Хотелось бы реализовать технологию объектно-ориентированной БД + использование трехзвенной архитектуры.
1 Часть более-менее реализована, если кратко, то имеется базовый класс объекта, который при наследовании меняется под нужный  класс с указанием имени таблицы, а также списка полей (в области published). Этот объект умеет создавать новую запись в таблице, считывать имеющуюся (по уникальному ключевому полю), производить редактирование и удаление записи.
 
Хотелось бы узнать существует ли технология, при которой эти объекты будут создаваться (считываться) на сервере приложений, а конечному приложению будет передаваться сам объект? А также каким способом лучше реализовать свойства, которые будут возвращать в качестве результата другие объекты, т.е.
имеется два объекта Человек, и Подразделение. В объекте Человек имеются свойства (ФИО = Иванов И.И., Возраст = 21, Код подразделения = 2) и есть объект Подразделение №2 (Код подразделения = 2, Наименование подразделения = Администрация), хотелось бы иметь что-то вроде
 
property Podrazdelenie: TPodrazdelenie read GetPodrazdelenie;
...
function <Tsome>.GetPodrazdelenie : TPodrazdelenie;
begin
  Result := TPodrazdelenie.Create(Код подразделения);
end;
Естественно, что все объекты будут считываться из сервера приложений.
Ссылка на комментарий

с одной стороны, ответ - да

Datasnap позволяет передавать объекты

работает механизм маршаллинга - объект сериализуется, превращается в JSON строку, на одном конце, и обратно создается на другом.

но, если структура объекта хоть чуть-чуть сложна, например, объект содержит TObjectList из других объектов, на автомате это уже не работает, хотя должно бы. (на XE7 было так, 8-не проверял)

 

поэтому я в свое время принял решение делать то же самое самостоятельно

мой объект сам умеет себя сериализовать/десериализовать, а к передаче предъявляется строка.

либо, для тяжелых объектов - Stream

Ссылка на комментарий

Спасибо за ответ,

а можно Вас попросить скинуть пример реализации. К моему стыду я так и не разобрался как практически работает DataSnap, немного теории знаю, но вот углублено не изучал, буду рад, если дадите пару ссылок на эту тему

Ссылка на комментарий

пример рабочего сервера, я конечно не смогу скинуть, но pawel glowacki отличную серию сделал в свое время

http://www.embarcadero.com/rad-in-action/delphi-labs

Ссылка на комментарий

пример рабочего сервера, я конечно не смогу скинуть, но pawel glowacki отличную серию сделал в свое время

http://www.embarcadero.com/rad-in-action/delphi-labs

спасибо за ссылку

А подскажите, если у вас в качестве свойства объект, он тоже серилизуется в строку или создается в момент обращения к нужному свойству?

Изменено пользователем BurcevD
Ссылка на комментарий

эмм 

вопрос из разных имхо несвязанных областей

если в качестве свойства объект, то он тоже сериализуется

сериализация - это просто запись свойств объекта в строку, чтобы по этой строке можно было построить точно такой же объект

а создание объекта в момент обращения к нему - это техника, позволяющая отложить некоторые работы на момент, когда они действительно нужны

 

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

Ссылка на комментарий

Спасибо за разъяснения.

Я понимаю что такое серилизация, мне просто интересно как вы храните поля объектного типа.

P.S. Особенно спасибо за ссылку, автор довольно понятно разъясняет что к чему.

Ссылка на комментарий

там есть проблема схожая с проблемой ARC

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

тут только разработчик может правильно построить модель сериализации/десериализации объектов

особенно если объектов несколько и ссылки желательно на другом конце как-то восстановить.

 

а еще лучше постараться не доводить тонкого клиента до такой нужды )))

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...