|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
Доброго времени суток! Хочу поднять актуальную для меня тему. Есть распределенная БД и СПО работы с данной базой. На текущий момент 90% функциональных возможностей СПО реализовано в хранимых процедурах базы. Текущая архитектура построения БД и СПО устарели. Переписываться будет все с нуля. В связи с этим интересно узнать Ваше мнение как правильно распределить бизнес логику между СУБД и программным продуктом? Прогаю на c#. Основными операциями работы с данными являются: выборки, различные виды сортировок (включая многоуровневые) Количество пользователей СПО маленькое порядка 2-4 одновременно работающих экземпляра. А вот объемы данных здоровые - около 30 терабайт. Мне посоветовали посмотреть hibernate. Нашел несколько manual-ов по данной технологии для языка java. Кто-нибудь пробовал использовать при построении бизнес логики? Буду благодарен если подкините ссылочек на примеры или описание технологии! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 00:07 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
30 Тб и ОРМ? Будете делать двойную работу: сначала напишите систему с использованием ОРМ, а потом без. Граблетерапия, так сказать... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 00:25 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
Как человек, пострадвший от Хибернейта, советую: используйте LINQ to SQL. http://msdn.microsoft.com/en-us/library/bb386976.aspx (...сам предпочитаю АДО... хватит.... наигрались...) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 03:07 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
PavluxaF, Да - как видишь многие юзали ОРМ - и пострадали от этого. НО лично мое ИМХО - все это нормально юзать но.... только через процедуры. Таблицы не трогать никаким боком. Это конечно мое ИМХО. Ну а сами как хотите :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 09:15 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
PavluxaF, Есть много вариаций, но в основном, люди делятся на два лагеря и два подхода, Transaction Script и Domain Model. Подробное описание достоинств и недостатков каждого подхода можно найти в книжке "Мартина Фаулера - Архитектура корпоративных программных приложений". Если вкратце то: Transaction Script - процедурный подход, при котором вся логика сосредоточена в процедурах (в БД или слое доступа к данным) - такой подход более естественен для субд, его проще реализовать и он более естественный для субд, основным минусом называется дублируемость когда. Domain Model - объектный подход, логика реализуется в объектах предметной области - такой подход плохо ложится в концепцию реаляционных бд, по этому как правило требуется отдельный слой доступа который бы занимался трансляцией реляционных данных в объекты и наоборот (ORM - object relational mapping). Для джавы таким популярным механизмом является hibernate, а если вы пишете на си-шарпе, то в .net популярны в основном следующие orm: - NHibernate (вроде как самый зрелый и "взрослый" орм для дот нета, сам не использовал подробнее не скажу) - Entity Framework (орм от майкрософта, интересная весчь, сейчас активно развивается, много документации с примерами на сайте майкрософт и блоге адо.нет) - Linq to SQL (легковесный орм, подходит для простых задач, говорят что многого не умеет - сам активно не использовал, насчет правда или нет не скажу) Далее гугл вам в помощ, почитайте фаулера, можете еще до кучи про доменную модель почитать эрика эванса - предметноориентирвоанное проектирование) и выбирайте. Из личного опыта скажу что у нас используется transaction script + domain model, так называемый anemic domain model, при этом логика в хранимых процедурах на сервере и в слое доступа к данным, дублировать код иногда действительно приходится - но ничего смертельного в целом. Модератор: Тема перенесена из форума "Microsoft SQL Server". ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 09:26 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
SomewhereSomehowTransaction Script - процедурный подход, при котором вся логика сосредоточена в процедурах (в БД или слое доступа к данным) - такой подход более естественен для субд, его проще реализовать и он более естественный для субд, основным минусом называется дублируемость когда. PavluxaFТекущая архитектура построения БД и СПО устарели. Переписываться будет все с нуля. В связи с этим интересно узнать Ваше мнение как правильно распределить бизнес логику между СУБД и программным продуктом?Думаю, что для такой большой системы (и по логике, и по объёму) правильным будет подход Transaction Script. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 10:30 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
PavluxaF, базу данных не трогать, интерфейсы, если считаете их устаревшими - перепишите постепенно на своем сишарпе. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 11:01 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
NoLock Как человек, пострадвший от Хибернейта ) SomewhereSomehowу нас используется transaction script + domain model, так называемый anemic domain model, при этом логика в хранимых процедурах на сервере и в слое доступа к данным, дублировать код иногда действительно приходится - но ничего смертельного в целом. а зачем смешивать-то? Проба пера была или унаследовано от разных идеологов? ______________________________________________ "Сложнее всего в мире достигнуть простоты — это крайняя граница опыта и последнее усилие гения". © George Sand. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 12:13 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
Petro123, Я в разработке архитектуры участия не принимал, так что ответить на этот вопрос не могу. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 12:54 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
Petro123SomewhereSomehowу нас используется transaction script + domain model, так называемый anemic domain model, при этом логика в хранимых процедурах на сервере и в слое доступа к данным, дублировать код иногда действительно приходится - но ничего смертельного в целом. а зачем смешивать-то? Проба пера была или унаследовано от разных идеологов?Встречал такой подход - для простого чтения/редактирования записей используется ОРМ, для чего то более сложного - серверные процедуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 13:32 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
SomewhereSomehowЯ в разработке архитектуры участия не принимал, так что ответить на этот вопрос не могу. ok. По крайней мере, обзор технологий вы сделали хороший. alexeyvgPetro123пропущено... а зачем смешивать-то? Проба пера была или унаследовано от разных идеологов?Встречал такой подход - для простого чтения/редактирования записей используется ОРМ, для чего то более сложного - серверные процедуры. imho я так понял, это от клиента зависело: - Delpgi - ORM не нужен, т.к. используется ActiveRecod. Перегонять из записей в классы нет нужды - C# тоже есть такая технология (можно с ОРМ, можно без него) - Java - сплошной ORM, ActiveRecod - практически не используется. ______________________________________________ "Сложнее всего в мире достигнуть простоты — это крайняя граница опыта и последнее усилие гения". © George Sand. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 13:52 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
Petro123, От клиента как раз почти не зависит, особенно в таких похожих по парадигме языках как c#, java, object pascal. Зависит от задачи и какое решение примет в связи с этим архитектор. Настоятельно рекомендую вам прочесть-таки фаулера (можно только введение, самые первые несколько глав, для общего развития), там многие вопросы, которые чувствуется у вас вертятся в голове - рассмотрены, когда где что применять, по каким критериям выбирать и т.д. Еще про недостатки и достоинства, а так же холивары на тему "что лучше", можете почитать погуглив по фразам: "Anemic Domain model", "Rich Domain Model". На РСДН-е много попадается обсуждений. Вот сходу Anemic Domain Model vs Rich Domain Model Вот еще статейка Старые песни о главном: роль ООП при работе с данными... Вот немножко про Domain Driven Design от майкрософта Введение в проблемно-ориентированное проектирование Изучайте, думаю вкупе с перечисленными книгами, материала вам хватит надолго и скорее всего поможет выяснить все вопросы! =) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 15:14 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
фаулера читал, в гугл не посылать :) SomewhereSomehowPetro123, От клиента как раз почти не зависит, == зависит. Я бы посмотрел, как вы в Delphi ORM будете мастрячить. Зависит от задачи и какое решение примет в связи с этим архитектор. ===== а также от библиотек, а также от ..... Настоятельно ....(вода пропущена) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 15:27 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
Petro123, Пардоньте, перепутал вас с автором темы. alexeyvg, Да, есть такое. Но у нас не совсем так, у нас вообще нет ОРМ, есть слой доступа к данным в виде служб, есть объекты, которые являются по сути просто контейнерами для данных. Службы и клиент общаются при помощи этих объектов, сами объекты поведения не несут. Логика в основном в БД в ХП. Система распределенная, так что службы реализованы ввиде xml web services. Такая вот архитектурка. Мое предположение ответа на вопрос Petro123 "зачем так сделали" такое что: 1) распределенная архитектура а веб-сервисы легко пролазят через инет и прочие каналы 2) тогда, году в 2004 веб-сервисы были "в тренде" и МС активно их пиарила =) - но почему точно, я конечно не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 15:28 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
Petro123== зависит. Я бы посмотрел, как вы в Delphi ORM будете мастрячить. А вы наберите в поиске ORM Delphi и что-то там такое вылезет ведь, значит есть умельцы =) То, что никто не хочет писать серьезный ОРМ фреймворк для дельфи не значит что его нельзя сделать впринципе. Другое дело - кому это нужно? Ведь большинство проектов на дельфи уже лохматые-прелохматые, а новые сейчас большинство предпочитает начинать на майнстримовых платформах. От клиента зависит только в том плане, что если используется другая парадигма, то против нее идти не стоит. Вот в sql нет объектов, попробуй тут в объектном стиле попиши, отнаследуй таблицу от таблицы =) Petro123===== а также от библиотек, а также от ..... Скорее уж набор библитек зависит от того что выберет архитектор. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 15:39 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
SomewhereSomehowPetro123, Пардоньте, перепутал вас с автором темы. alexeyvg, Да, есть такое. Но у нас не совсем так, у нас вообще нет ОРМ, есть слой доступа к данным в виде служб, есть объекты, которые являются по сути просто контейнерами для данных. Службы и клиент общаются при помощи этих объектов, сами объекты поведения не несут. Логика в основном в БД в ХП. Система распределенная, так что службы реализованы ввиде xml web services. Такая вот архитектурка. Мое предположение ответа на вопрос Petro123 "зачем так сделали" такое что: 1) распределенная архитектура а веб-сервисы легко пролазят через инет и прочие каналы 2) тогда, году в 2004 веб-сервисы были "в тренде" и МС активно их пиарила =) - но почему точно, я конечно не знаю. +1 полностью с вами согласен. Тогда веб-сервисы были в тренде :), и это всё объясняет. Удачи аффтару! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 15:42 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
SomewhereSomehowА вы наберите в поиске ORM Delphi :) там ЭТО не нужно, т.к. там MVC встроен в IDE. Таблица.Данные = DAL (забиндили или привязались) Эта парадигма появилась в Java-GWT от Гугла Т.е. это ваши обёртки без состояния для веб-сервиса. ЗЫ В Net это DataSet ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 15:47 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
Petro123:) там ЭТО не нужно, т.к. там MVC встроен в IDE. Таблица.Данные = DAL (забиндили или привязались) Эта парадигма появилась в Java-GWT от Гугла Т.е. это ваши обёртки без состояния для веб-сервиса. ЗЫ В Net это DataSet Если под MVC имеется ввиду Model View Controller, то вряд ли. Как раз все эти RAD среды ругали за то, что они пропагандировали кодирование в стиле "Smart UI". Когда логика пишется прямо в обработчиках события навешанных на контролы. А mvc - это когда вы взяли, к примеру, одно представление, отсоединили и поменяли его на другое, не тронув логику. Так что, для кодирования на дельфи в стиле mvc требуется предпринять кое-какие усилия (по крайней мере в том дельфи, точнее билдере, который я знал в 2005 году =). Я согласен с вами в том, что ОРМ для дельфи просто не нужен, но не потому что оно такое "дельфи", а потому что вроде как вышел язык из моды. Кстати насчет "В Net это DataSet" - это тема активно у фаулера в книге муссируется, но, ИМХО, просто это было в те времена когда .нет только-только появлялся, не было linq, EF и прочих красивостей - сейчас бы, думается мне, он так не написал. Жаль что нет современных дополненных и исправленных изданий этой книги. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 16:13 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
SomewhereSomehow, в Delphi в событиях НИЧЕГО нет и не пишут. Всё в ХП. Т.е. пишут _тонкий клиент_ морду - exe. Меняй морду, как сказал iscrafm и нет проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 16:17 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
Petro123, Ну так я и не говорю что нельзя, я в том сымсле чтоб без усилий. Кстати не совсем в тему, но так чисто поржать. Насколько быстро устаревает информация в ит сообществе. Из той-самой книги фаулера. Некисло он так википедию приложил! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 16:29 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
SomewhereSomehowТак что, для кодирования на дельфи в стиле mvc требуется предпринять кое-какие усилия нет, не нужно просто в обработчиках событий логику писать. Если для выбора места в файле, где написать логику требуются усилия, то тогда да - согласен. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 16:37 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
SomewhereSomehowпотому что вроде как вышел язык из моды. здесь что, гламурная тусовка? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 16:39 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
iscrafm, имеете ввиду что напишете: buttonOnclick() { myfunction() } и рядышком в этом же файле myfunction() {...} ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 16:41 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
iscrafm, И еще, попутно вопрос, если например вам надо в зависимости от той или иной логики - кнопку задизейблить, вы где это напишете? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 16:48 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
SomewhereSomehowiscrafm, И еще, попутно вопрос, если например вам надо в зависимости от той или иной логики - кнопку задизейблить, вы где это напишете? я думал, у нас бОльшие проблемы. А у нас тут: "кнопку выключить" :)) Давай лучше offtop ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 17:02 |
|
|
start [/forum/topic.php?fid=33&msg=37460998&tid=1547974]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 129ms |
0 / 0 |