BurcevD Опубликовано 15 июля, 2015 Поделиться Опубликовано 15 июля, 2015 Добрый день, Подскажите пожалуйста найти решение следующей задачи: Хотелось бы реализовать технологию объектно-ориентированной БД + использование трехзвенной архитектуры. 1 Часть более-менее реализована, если кратко, то имеется базовый класс объекта, который при наследовании меняется под нужный класс с указанием имени таблицы, а также списка полей (в области published). Этот объект умеет создавать новую запись в таблице, считывать имеющуюся (по уникальному ключевому полю), производить редактирование и удаление записи. Хотелось бы узнать существует ли технология, при которой эти объекты будут создаваться (считываться) на сервере приложений, а конечному приложению будет передаваться сам объект? А также каким способом лучше реализовать свойства, которые будут возвращать в качестве результата другие объекты, т.е. имеется два объекта Человек, и Подразделение. В объекте Человек имеются свойства (ФИО = Иванов И.И., Возраст = 21, Код подразделения = 2) и есть объект Подразделение №2 (Код подразделения = 2, Наименование подразделения = Администрация), хотелось бы иметь что-то вроде property Podrazdelenie: TPodrazdelenie read GetPodrazdelenie; ... function <Tsome>.GetPodrazdelenie : TPodrazdelenie; begin Result := TPodrazdelenie.Create(Код подразделения); end; Естественно, что все объекты будут считываться из сервера приложений. Цитата Ссылка на комментарий
krapotkin Опубликовано 15 июля, 2015 Поделиться Опубликовано 15 июля, 2015 с одной стороны, ответ - да Datasnap позволяет передавать объекты работает механизм маршаллинга - объект сериализуется, превращается в JSON строку, на одном конце, и обратно создается на другом. но, если структура объекта хоть чуть-чуть сложна, например, объект содержит TObjectList из других объектов, на автомате это уже не работает, хотя должно бы. (на XE7 было так, 8-не проверял) поэтому я в свое время принял решение делать то же самое самостоятельно мой объект сам умеет себя сериализовать/десериализовать, а к передаче предъявляется строка. либо, для тяжелых объектов - Stream Цитата Ссылка на комментарий
BurcevD Опубликовано 15 июля, 2015 Автор Поделиться Опубликовано 15 июля, 2015 Спасибо за ответ, а можно Вас попросить скинуть пример реализации. К моему стыду я так и не разобрался как практически работает DataSnap, немного теории знаю, но вот углублено не изучал, буду рад, если дадите пару ссылок на эту тему Цитата Ссылка на комментарий
krapotkin Опубликовано 15 июля, 2015 Поделиться Опубликовано 15 июля, 2015 пример рабочего сервера, я конечно не смогу скинуть, но pawel glowacki отличную серию сделал в свое время http://www.embarcadero.com/rad-in-action/delphi-labs Brovin Yaroslav 1 Цитата Ссылка на комментарий
BurcevD Опубликовано 15 июля, 2015 Автор Поделиться Опубликовано 15 июля, 2015 (изменено) пример рабочего сервера, я конечно не смогу скинуть, но pawel glowacki отличную серию сделал в свое время http://www.embarcadero.com/rad-in-action/delphi-labs спасибо за ссылку А подскажите, если у вас в качестве свойства объект, он тоже серилизуется в строку или создается в момент обращения к нужному свойству? Изменено 15 июля, 2015 пользователем BurcevD Цитата Ссылка на комментарий
krapotkin Опубликовано 16 июля, 2015 Поделиться Опубликовано 16 июля, 2015 эмм вопрос из разных имхо несвязанных областей если в качестве свойства объект, то он тоже сериализуется сериализация - это просто запись свойств объекта в строку, чтобы по этой строке можно было построить точно такой же объект а создание объекта в момент обращения к нему - это техника, позволяющая отложить некоторые работы на момент, когда они действительно нужны если строить объект на принимающей стороне, то техника отложенного создания не может быть применена, т.к. строка единая и хранить ее, а потом вычленять из нее свойства одного внутреннего объекта - это лишний геморрой Цитата Ссылка на комментарий
BurcevD Опубликовано 16 июля, 2015 Автор Поделиться Опубликовано 16 июля, 2015 Спасибо за разъяснения. Я понимаю что такое серилизация, мне просто интересно как вы храните поля объектного типа. P.S. Особенно спасибо за ссылку, автор довольно понятно разъясняет что к чему. Цитата Ссылка на комментарий
krapotkin Опубликовано 16 июля, 2015 Поделиться Опубликовано 16 июля, 2015 там есть проблема схожая с проблемой ARC если один объект хранит ссылку на другой объект, то варианта два - либо он им владеет, и нужно встроенный объект передавать вместе с родителем, либо это просто ссылка на объект из к-нибудь например справочника. тут только разработчик может правильно построить модель сериализации/десериализации объектов особенно если объектов несколько и ссылки желательно на другом конце как-то восстановить. а еще лучше постараться не доводить тонкого клиента до такой нужды ))) Цитата Ссылка на комментарий
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.