Гость
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Обсуждение этапа проектирования бизнес логики / 25 сообщений из 54, страница 1 из 3
29.09.2011, 00:07
    #37460072
PavluxaF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
Доброго времени суток!
Хочу поднять актуальную для меня тему.
Есть распределенная БД и СПО работы с данной базой. На текущий момент 90% функциональных возможностей СПО реализовано в хранимых процедурах базы.
Текущая архитектура построения БД и СПО устарели. Переписываться будет все с нуля. В связи с этим интересно узнать Ваше мнение как правильно распределить бизнес логику между СУБД и программным продуктом?
Прогаю на c#. Основными операциями работы с данными являются: выборки, различные виды сортировок (включая многоуровневые)
Количество пользователей СПО маленькое порядка 2-4 одновременно работающих экземпляра. А вот объемы данных здоровые - около 30 терабайт.
Мне посоветовали посмотреть hibernate. Нашел несколько manual-ов по данной технологии для языка java. Кто-нибудь пробовал использовать при построении бизнес логики? Буду благодарен если подкините ссылочек на примеры или описание технологии!
...
Рейтинг: 0 / 0
29.09.2011, 00:25
    #37460085
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
30 Тб и ОРМ? Будете делать двойную работу: сначала напишите систему с использованием ОРМ, а потом без. Граблетерапия, так сказать...
...
Рейтинг: 0 / 0
29.09.2011, 03:07
    #37460139
NoLock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
Как человек, пострадвший от Хибернейта, советую: используйте LINQ to SQL.
http://msdn.microsoft.com/en-us/library/bb386976.aspx
(...сам предпочитаю АДО... хватит.... наигрались...)
...
Рейтинг: 0 / 0
29.09.2011, 09:15
    #37460239
SignOff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
PavluxaF,

Да - как видишь многие юзали ОРМ - и пострадали от этого.
НО лично мое ИМХО - все это нормально юзать но.... только через процедуры.
Таблицы не трогать никаким боком. Это конечно мое ИМХО. Ну а сами как хотите :)
...
Рейтинг: 0 / 0
29.09.2011, 09:26
    #37460251
SomewhereSomehow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
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".
...
Рейтинг: 0 / 0
29.09.2011, 10:30
    #37460349
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
SomewhereSomehowTransaction Script - процедурный подход, при котором вся логика сосредоточена в процедурах (в БД или слое доступа к данным) - такой подход более естественен для субд, его проще реализовать и он более естественный для субд, основным минусом называется дублируемость когда.
PavluxaFТекущая архитектура построения БД и СПО устарели. Переписываться будет все с нуля. В связи с этим интересно узнать Ваше мнение как правильно распределить бизнес логику между СУБД и программным продуктом?Думаю, что для такой большой системы (и по логике, и по объёму) правильным будет подход Transaction Script.
...
Рейтинг: 0 / 0
29.09.2011, 11:01
    #37460413
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
PavluxaF,

базу данных не трогать, интерфейсы, если считаете их устаревшими - перепишите постепенно на своем сишарпе.
...
Рейтинг: 0 / 0
29.09.2011, 12:13
    #37460656
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
NoLock Как человек, пострадвший от Хибернейта
)
SomewhereSomehowу нас используется transaction script + domain model, так называемый anemic domain model, при этом логика в хранимых процедурах на сервере и в слое доступа к данным, дублировать код иногда действительно приходится - но ничего смертельного в целом.

а зачем смешивать-то?
Проба пера была или унаследовано от разных идеологов?
______________________________________________
"Сложнее всего в мире достигнуть простоты — это крайняя граница опыта и последнее усилие гения". © George Sand.
...
Рейтинг: 0 / 0
29.09.2011, 12:54
    #37460792
SomewhereSomehow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
Petro123,

Я в разработке архитектуры участия не принимал, так что ответить на этот вопрос не могу.
...
Рейтинг: 0 / 0
29.09.2011, 13:32
    #37460918
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
Petro123SomewhereSomehowу нас используется transaction script + domain model, так называемый anemic domain model, при этом логика в хранимых процедурах на сервере и в слое доступа к данным, дублировать код иногда действительно приходится - но ничего смертельного в целом.

а зачем смешивать-то?
Проба пера была или унаследовано от разных идеологов?Встречал такой подход - для простого чтения/редактирования записей используется ОРМ, для чего то более сложного - серверные процедуры.
...
Рейтинг: 0 / 0
29.09.2011, 13:52
    #37460998
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
SomewhereSomehowЯ в разработке архитектуры участия не принимал, так что ответить на этот вопрос не могу.
ok. По крайней мере, обзор технологий вы сделали хороший.

alexeyvgPetro123пропущено...
а зачем смешивать-то?
Проба пера была или унаследовано от разных идеологов?Встречал такой подход - для простого чтения/редактирования записей используется ОРМ, для чего то более сложного - серверные процедуры.
imho
я так понял, это от клиента зависело:
- Delpgi - ORM не нужен, т.к. используется ActiveRecod. Перегонять из записей в классы нет нужды
- C# тоже есть такая технология (можно с ОРМ, можно без него)
- Java - сплошной ORM, ActiveRecod - практически не используется.
______________________________________________
"Сложнее всего в мире достигнуть простоты — это крайняя граница опыта и последнее усилие гения". © George Sand.
...
Рейтинг: 0 / 0
29.09.2011, 15:14
    #37461297
SomewhereSomehow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
Petro123,

От клиента как раз почти не зависит, особенно в таких похожих по парадигме языках как c#, java, object pascal. Зависит от задачи и какое решение примет в связи с этим архитектор. Настоятельно рекомендую вам прочесть-таки фаулера (можно только введение, самые первые несколько глав, для общего развития), там многие вопросы, которые чувствуется у вас вертятся в голове - рассмотрены, когда где что применять, по каким критериям выбирать и т.д. Еще про недостатки и достоинства, а так же холивары на тему "что лучше", можете почитать погуглив по фразам: "Anemic Domain model", "Rich Domain Model". На РСДН-е много попадается обсуждений.
Вот сходу Anemic Domain Model vs Rich Domain Model
Вот еще статейка Старые песни о главном: роль ООП при работе с данными...
Вот немножко про Domain Driven Design от майкрософта Введение в проблемно-ориентированное проектирование
Изучайте, думаю вкупе с перечисленными книгами, материала вам хватит надолго и скорее всего поможет выяснить все вопросы! =)
...
Рейтинг: 0 / 0
29.09.2011, 15:27
    #37461342
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
фаулера читал, в гугл не посылать :)
SomewhereSomehowPetro123,
От клиента как раз почти не зависит,

== зависит. Я бы посмотрел, как вы в Delphi ORM будете мастрячить.

Зависит от задачи и какое решение примет в связи с этим архитектор.

===== а также от библиотек, а также от .....

Настоятельно ....(вода пропущена)
...
Рейтинг: 0 / 0
29.09.2011, 15:28
    #37461344
SomewhereSomehow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
Petro123,
Пардоньте, перепутал вас с автором темы.

alexeyvg,
Да, есть такое. Но у нас не совсем так, у нас вообще нет ОРМ, есть слой доступа к данным в виде служб, есть объекты, которые являются по сути просто контейнерами для данных. Службы и клиент общаются при помощи этих объектов, сами объекты поведения не несут. Логика в основном в БД в ХП. Система распределенная, так что службы реализованы ввиде xml web services. Такая вот архитектурка. Мое предположение ответа на вопрос Petro123 "зачем так сделали" такое что: 1) распределенная архитектура а веб-сервисы легко пролазят через инет и прочие каналы 2) тогда, году в 2004 веб-сервисы были "в тренде" и МС активно их пиарила =) - но почему точно, я конечно не знаю.
...
Рейтинг: 0 / 0
29.09.2011, 15:39
    #37461385
SomewhereSomehow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
Petro123== зависит. Я бы посмотрел, как вы в Delphi ORM будете мастрячить.
А вы наберите в поиске ORM Delphi и что-то там такое вылезет ведь, значит есть умельцы =) То, что никто не хочет писать серьезный ОРМ фреймворк для дельфи не значит что его нельзя сделать впринципе. Другое дело - кому это нужно? Ведь большинство проектов на дельфи уже лохматые-прелохматые, а новые сейчас большинство предпочитает начинать на майнстримовых платформах.
От клиента зависит только в том плане, что если используется другая парадигма, то против нее идти не стоит. Вот в sql нет объектов, попробуй тут в объектном стиле попиши, отнаследуй таблицу от таблицы =)

Petro123===== а также от библиотек, а также от ..... Скорее уж набор библитек зависит от того что выберет архитектор.
...
Рейтинг: 0 / 0
29.09.2011, 15:42
    #37461393
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
SomewhereSomehowPetro123,
Пардоньте, перепутал вас с автором темы.
alexeyvg,
Да, есть такое. Но у нас не совсем так, у нас вообще нет ОРМ, есть слой доступа к данным в виде служб, есть объекты, которые являются по сути просто контейнерами для данных. Службы и клиент общаются при помощи этих объектов, сами объекты поведения не несут. Логика в основном в БД в ХП. Система распределенная, так что службы реализованы ввиде xml web services. Такая вот архитектурка. Мое предположение ответа на вопрос Petro123 "зачем так сделали" такое что: 1) распределенная архитектура а веб-сервисы легко пролазят через инет и прочие каналы 2) тогда, году в 2004 веб-сервисы были "в тренде" и МС активно их пиарила =) - но почему точно, я конечно не знаю.
+1
полностью с вами согласен. Тогда веб-сервисы были в тренде :), и это всё объясняет.
Удачи аффтару!
...
Рейтинг: 0 / 0
29.09.2011, 15:47
    #37461412
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
SomewhereSomehowА вы наберите в поиске ORM Delphi

:)
там ЭТО не нужно, т.к. там MVC встроен в IDE.
Таблица.Данные = DAL (забиндили или привязались)
Эта парадигма появилась в Java-GWT от Гугла
Т.е. это ваши обёртки без состояния для веб-сервиса.
ЗЫ
В Net это DataSet
...
Рейтинг: 0 / 0
29.09.2011, 16:13
    #37461483
SomewhereSomehow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
Petro123:)
там ЭТО не нужно, т.к. там MVC встроен в IDE.
Таблица.Данные = DAL (забиндили или привязались)
Эта парадигма появилась в Java-GWT от Гугла
Т.е. это ваши обёртки без состояния для веб-сервиса.
ЗЫ
В Net это DataSet
Если под MVC имеется ввиду Model View Controller, то вряд ли. Как раз все эти RAD среды ругали за то, что они пропагандировали кодирование в стиле "Smart UI". Когда логика пишется прямо в обработчиках события навешанных на контролы. А mvc - это когда вы взяли, к примеру, одно представление, отсоединили и поменяли его на другое, не тронув логику. Так что, для кодирования на дельфи в стиле mvc требуется предпринять кое-какие усилия (по крайней мере в том дельфи, точнее билдере, который я знал в 2005 году =). Я согласен с вами в том, что ОРМ для дельфи просто не нужен, но не потому что оно такое "дельфи", а потому что вроде как вышел язык из моды.

Кстати насчет "В Net это DataSet" - это тема активно у фаулера в книге муссируется, но, ИМХО, просто это было в те времена когда .нет только-только появлялся, не было linq, EF и прочих красивостей - сейчас бы, думается мне, он так не написал. Жаль что нет современных дополненных и исправленных изданий этой книги.
...
Рейтинг: 0 / 0
29.09.2011, 16:17
    #37461495
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
SomewhereSomehow,
в Delphi в событиях НИЧЕГО нет и не пишут. Всё в ХП.
Т.е. пишут _тонкий клиент_ морду - exe.
Меняй морду, как сказал iscrafm и нет проблем.
...
Рейтинг: 0 / 0
29.09.2011, 16:29
    #37461521
SomewhereSomehow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
Petro123,

Ну так я и не говорю что нельзя, я в том сымсле чтоб без усилий. Кстати не совсем в тему, но так чисто поржать. Насколько быстро устаревает информация в ит сообществе.
Из той-самой книги фаулера.

Некисло он так википедию приложил!
...
Рейтинг: 0 / 0
29.09.2011, 16:37
    #37461534
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
SomewhereSomehowТак что, для кодирования на дельфи в стиле mvc требуется предпринять кое-какие усилия
нет, не нужно просто в обработчиках событий логику писать. Если для выбора места в файле, где написать логику требуются усилия, то тогда да - согласен.
...
Рейтинг: 0 / 0
29.09.2011, 16:39
    #37461537
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
SomewhereSomehowпотому что вроде как вышел язык из моды.
здесь что, гламурная тусовка?
...
Рейтинг: 0 / 0
29.09.2011, 16:41
    #37461540
SomewhereSomehow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
iscrafm,

имеете ввиду что напишете:
buttonOnclick() { myfunction() }
и рядышком в этом же файле
myfunction() {...}
?
...
Рейтинг: 0 / 0
29.09.2011, 16:48
    #37461553
SomewhereSomehow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
iscrafm,

И еще, попутно вопрос, если например вам надо в зависимости от той или иной логики - кнопку задизейблить, вы где это напишете?
...
Рейтинг: 0 / 0
29.09.2011, 17:02
    #37461593
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обсуждение этапа проектирования бизнес логики
SomewhereSomehowiscrafm,
И еще, попутно вопрос, если например вам надо в зависимости от той или иной логики - кнопку задизейблить, вы где это напишете?
я думал, у нас бОльшие проблемы.
А у нас тут: "кнопку выключить" :))
Давай лучше offtop
...
Рейтинг: 0 / 0
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Обсуждение этапа проектирования бизнес логики / 25 сообщений из 54, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]