Re[8]: К барьеру: как организовать DAL
От: Darth Jurassic  
Дата: 14.06.08 17:16
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Мне уже надоело намекать, поэтому спрошу прямо — когда ты наконец опишешь то, что предлагаешь?


Сразу бы спросил прямо, чай не в прятки играем. А то уже с темы съехали.

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

Метод состоит в том, чтобы описывать объекты в виде XML (что-то вроде UML-описания, только со своими особенностями), после чего наложением различных XSLT-шаблонов получать скрипты создания базы, исходники классов и интерфейсов DAL-уровня и заглушки для классов бизнес-уровня. Метод обкатан и готов к тому, чтобы им делиться.

Я видел местами применение XSLT для генерации исходников в других местах, эта идея не нова. Но возможно в таком приложении она упростит кому-то жизнь.

P.S. Кстати первая часть генерила классы именно для NHibernate, но в других решениях я предпочёл NHibernate не использовать.
Re[9]: К барьеру: как организовать DAL
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.06.08 18:00
Оценка:
Здравствуйте, Darth Jurassic, Вы писали:

DJ>Метод состоит в том, чтобы описывать объекты в виде XML (что-то вроде UML-описания, только со своими особенностями), после чего наложением различных XSLT-шаблонов получать скрипты создания базы, исходники классов и интерфейсов DAL-уровня и заглушки для классов бизнес-уровня. Метод обкатан и готов к тому, чтобы им делиться.


Метод этот называется DSL — Domain Specific Language. Про него масса чего написана и есть море инструметов. Те же новые DSL Tools от Microsoft. А XSLT там или TT, дело десятое. И с ORM это пересекается слабо. Как и с SRP. Разный уровень.
... <<RSDN@Home 1.2.0 alpha 4 rev. 1090 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[7]: К барьеру: как организовать DAL
От: Lloyd Россия  
Дата: 14.06.08 21:32
Оценка:
Здравствуйте, Darth Jurassic, Вы писали:

L>>LINQ to SQL смотрел?


DJ>Нет


А что смотрел?
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[9]: К барьеру: как организовать DAL
От: samius Япония http://sams-tricks.blogspot.com
Дата: 16.06.08 09:26
Оценка:
Здравствуйте, Darth Jurassic, Вы писали:

DJ>Метод состоит в том, чтобы описывать объекты в виде XML (что-то вроде UML-описания, только со своими особенностями), после чего наложением различных XSLT-шаблонов получать скрипты создания базы, исходники классов и интерфейсов DAL-уровня и заглушки для классов бизнес-уровня. Метод обкатан и готов к тому, чтобы им делиться.


Проект на котором обкатывался этот метод уже завершен? (праздный интерес)
Дело в том, что наверняка вся кодогенерация заточена под специфичные требования проекта и может быть применена только для проектов со схожими требованиями. Кроме того, когда речь зайдет об гранулировании обращений к БД, более-менее сложных запросах, lazy load и прочей оптимизации, то скорее всего, метод придется выкинуть.
В общем, универсальных решений не существует. И перед тем, как изобретать новое универсальное решение, следует поинтересоваться судьбой прочих. Хотя бы для того, чтобы представлять, чем Ваше решение лучше подходит для решения вопросов вечности
Re[3]: К барьеру: как организовать DAL
От: ZevS Россия  
Дата: 16.06.08 14:33
Оценка:
Здравствуйте, Darth Jurassic, Вы писали:

DJ>>>2. Приветствуются аргументы за и против.

C>>Аргумент простой: single responsibility principle. Т.е. класс данных не должен заниматься загрузкой себя из базы.

DJ>Какие риски я преобретаю, нарушая этот принцип?


Сложность тестирования, в частности, при написании юнит тестов.
Re[10]: К барьеру: как организовать DAL
От: Darth Jurassic  
Дата: 16.06.08 15:14
Оценка:
Здравствуйте, samius, Вы писали:

S>Проект на котором обкатывался этот метод уже завершен? (праздный интерес)

Два проекта завершены, два в процессе разработки.

S>Дело в том, что наверняка вся кодогенерация заточена под специфичные требования проекта и может быть применена только для проектов со схожими требованиями. Кроме того, когда речь зайдет об гранулировании обращений к БД, более-менее сложных запросах, lazy load и прочей оптимизации, то скорее всего, метод придется выкинуть.

Шаболоны приходилось дорабатывать для полного соответствия, так что ещё есть куда развиваться. В частности приходилось делать динамическую загрузку и выгрузку объектов. Но сейчас реюзабилити процентов 90. Хотя минус есть: для остальных 10% надо знать XSLT.

S>В общем, универсальных решений не существует. И перед тем, как изобретать новое универсальное решение, следует поинтересоваться судьбой прочих. Хотя бы для того, чтобы представлять, чем Ваше решение лучше подходит для решения вопросов вечности

Это решение не универсально, просто оно автоматизирует много рутинной работы.
Re[11]: К барьеру: как организовать DAL
От: samius Япония http://sams-tricks.blogspot.com
Дата: 16.06.08 15:47
Оценка: 1 (1)
Здравствуйте, Darth Jurassic, Вы писали:

S>>В общем, универсальных решений не существует. И перед тем, как изобретать новое универсальное решение, следует поинтересоваться судьбой прочих. Хотя бы для того, чтобы представлять, чем Ваше решение лучше подходит для решения вопросов вечности

DJ>Это решение не универсально, просто оно автоматизирует много рутинной работы.

Все же почитайте LINQ to SQL, Entity Framework. Думаю, что именно эти технологии объясняют пониженный интерес к Вашей автоматизации рутиной работы. Хотя, они тоже, к сожалению, не универсальны.
Re: К барьеру: как организовать DAL
От: Darth Jurassic  
Дата: 19.06.08 16:05
Оценка:
Всем спасибо, много полезных советов. Отднльное спасибо за ссылку на LINQ to SQL и отдельнейшее спасибо за EJB Entity Beans with BMP Architecture — это действительно близко к тому, о чём собираюсь писать.

В общем, начинаю работать. Если будут ещё какие-то замечания/уточнения — милости просим.
Re[2]: К барьеру: как организовать DAL
От: Нахлобуч Великобритания https://hglabhq.com
Дата: 22.06.08 09:40
Оценка:
Здравствуйте, Darth Jurassic, Вы писали:

DJ>В общем, начинаю работать.


Над чем?
HgLab: Mercurial Server and Repository Management for Windows
Re[3]: К барьеру: как организовать DAL
От: Darth Jurassic  
Дата: 26.06.08 14:30
Оценка:
Здравствуйте, Нахлобуч, Вы писали:

Н>Над чем?


Над статьёй… В головном сообщении же написал, что поделиться идеями в виде статьи.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.