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

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

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

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

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

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

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

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

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

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

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

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

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

:)
там ЭТО не нужно, т.к. там MVC встроен в IDE.
Таблица.Данные = DAL (забиндили или привязались)
Эта парадигма появилась в Java-GWT от Гугла
Т.е. это ваши обёртки без состояния для веб-сервиса.
ЗЫ
В Net это DataSet
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #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
Обсуждение этапа проектирования бизнес логики
    #37461495
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomewhereSomehow,
в Delphi в событиях НИЧЕГО нет и не пишут. Всё в ХП.
Т.е. пишут _тонкий клиент_ морду - exe.
Меняй морду, как сказал iscrafm и нет проблем.
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37461521
Фотография SomewhereSomehow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

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

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

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

И еще, попутно вопрос, если например вам надо в зависимости от той или иной логики - кнопку задизейблить, вы где это напишете?
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37461593
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomewhereSomehowiscrafm,
И еще, попутно вопрос, если например вам надо в зависимости от той или иной логики - кнопку задизейблить, вы где это напишете?
я думал, у нас бОльшие проблемы.
А у нас тут: "кнопку выключить" :))
Давай лучше offtop
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37461606
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomewhereSomehowiscrafm,

имеете ввиду что напишете:
buttonOnclick() { myfunction() }
и рядышком в этом же файле
myfunction() {...}
?
не совсем. Есть процедуры/функции бизнес-логики. Для связи их запуска с внешними событиями есть Акции. У контролов, к которым относится та же кнопка, если привязка на акцию. Т.е., когда вы разрабатываете логику, то вам фиолетово на то, кто ее вызовет, кнопка или еще какое-то событие, но логика всегда одна. Конечно Делфи провоцирует щелкнуть мышкой на OnClick и настрочить там этот код, но это не более чем провокация, которая очень полезна для минутных приложений.
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37461612
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomewhereSomehowiscrafm,

И еще, попутно вопрос, если например вам надо в зависимости от той или иной логики - кнопку задизейблить, вы где это напишете?
в логике естественно или в "обновляторе" акций
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37461641
alneo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пишешь бизнес-логику в одном слое на сервере приложений. досуп к бд через адо.нет или орм (ентити, хибернейт).
но между слоем бизнес-логики и орм/бд напиши DAL слой, чтоб изолировать слой BLL от используемого механизма доступа к БД.
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37461657
alneo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и еще, LINQ to SQL это вчерашний день, нужно юзать LINQ to Entities
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37461684
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alneoи еще, LINQ to SQL это вчерашний день, нужно юзать LINQ to Entities
завтра оно тоже станет вчерашним. ТС задолбается переписывать.
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37461693
alneo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не, они оставили тока ради совместимости обратной линк ту сиквел, будущее за ентити...
просто майкрософт как всегда сделает подобные технологии, а потом поддерживает этот зоопарк.
но суть не в этом. я за то чтобы уровень бизнес-логики не заисел от способа получения данных.
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37461705
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alneoно суть не в этом. я за то чтобы уровень бизнес-логики не заисел от способа получения данных.
"а я за коммунизм и чтобы не было бедных".
Ещё за ООБД, который обещают вторую 1000 лет.
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37461835
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123alneoно суть не в этом. я за то чтобы уровень бизнес-логики не заисел от способа получения данных.
"а я за коммунизм и чтобы не было бедных".


Если подобное для Delphi - коммунизм, то он уже давно наступил в других средах программирования.
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37461969
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,
никогда себе не позволял принижать любой ЯП.
Windows Must Die ? ?))
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37461976
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да ладно вам.. не путайте архитектуру приложения и язык программирования, при помощи которого оно реализуется. Нужен DAL отделенный от BLL - делайте так. Какая разница на каком языке писать текст для этого.
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37462000
PavluxaF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наверное все-таки буду использовать Transaction Script (большое спасибо за обсуждение)
Хотя часть функционала будет возложена на NHibernate.

Есть еще другой не мение интересный вопрос!
Так как база очень большого размера, набор данных, полученный в результате запроса из СПО будет транслироваться в локальную БД, а СПО в дальнейшем будет работать с этими данными. В связи с тем что одновременно могут работать несколько операторов возникает ВОПРОС: Каким образом лучше разграничить деятельность пользователей (чтобы текущий пользователь работал непосредственно со своим набором данных)??????

Самому в голову приходят следующие мысли:
1. Создавать экземпляр БД для каждого пользователя
Возникает вопрос как создать сессию работы с экземпляром? Т.е. автоматическое очищение таблиц как при обычном, так и аварийном выходе из системы, создание и уничтожение экземпляров тоже будет занимать время!
2. Шаг в сторону унификации - хранить все данные различных пользователей в одной базе и различать по уникальному ID.

Буду благодарен за обсуждение
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37462024
Фотография SomewhereSomehow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmЕсть процедуры/функции бизнес-логики. Для связи их запуска с внешними событиями есть Акции. У контролов, к которым относится та же кнопка, если привязка на акцию. Т.е., когда вы разрабатываете логику, то вам фиолетово на то, кто ее вызовет, кнопка или еще какое-то событие, но логика всегда одна. Ну вот видите, акции (это ли не TAction - всплывают у меня смутные знания многолетней давности?)...уже появляется отдельная абстракция и механизм для реализации описанного поведения. Далее так или иначе придется связывать это с кнопками и прочим, опять же чтобы отвязать - нужно вводить какие-то интерфейсы и уровни абстракции - это и есть усилия.
iscrafmКонечно Делфи провоцирует щелкнуть мышкой на OnClick и настрочить там этот код, но это не более чем провокация, которая очень полезна для минутных приложений. А вот тут я пожалуй плюсану. Именно это ведь я и хотел сказать. Просто было утверждение Petro123там ЭТО не нужно, т.к. там MVC встроен в IDE. вроде как если встроен, то создаешь новый проект и сразу начинаешь мыслить в логике MVC, как например если создать проект в .нет ASP.NET MVC. Там как раз все встроено. По другому, конечно, и там можно написать, но это надо потратить усилия. В этом же случае усилия как раз надо приложить в том, чтобы разобраться, как не свернуть на путь "создал форму, накидал контролов, обработчиков, все написал и фигачишь себе дальше" - именно на это и провоцирует дизанер форм (как впрочем не только в дельфи, но и в вин-формсе в .нет).

iscrafmда ладно вам.. не путайте архитектуру приложения и язык программирования, при помощи которого оно реализуется. Нужен DAL отделенный от BLL - делайте так. Какая разница на каком языке писать текст для этого.
И тут я плюсану. Ибо то же самое писал еще ранее. Не зависит от клиента практически какой подход использовать, если это не противоречит парадигме и возможностям языка. Обжект паскаль объектный? объектный! Есть компоненты работы с БД? Есть! Что мешает нафигачить классический ОРМ если это нужно? Да ничего не мешает. Ровно это я и талдычу уже который пост. Нет в явном виде зависимости между ОРМ и языком программирования если он имеет все возможности для этого. Нельзя сказать: Ява - ОРМ, .НЕТ - ДатаСет, Дельфи - еще что-то. Это то, что я хотел сказать.

Petro123я думал, у нас бОльшие проблемы.
А у нас тут: "кнопку выключить" :))
Давай лучше offtop
Ну кагбэ дьявол кроется в мелочах, я привел реальный пример места в котором надо стыковать два подхода - MVC и Smart UI.
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37462028
Фотография SomewhereSomehow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PavluxaF,

БД для каждого юзера - сразу не вариант, если только под юзером не подразумевается какой-нить один единый филиал фирмы которая пользуется софтом и есть гарантия, что эти филиалы никогда-никогда не захотят иметь единые данные и строить единые отчеты и иметь взаимосвязь. А как показывает мой личный опыт - именно так все и бывает. И лично сталкивался с тем что приходилось сливать БД трех филиалов в одну...поверьте, тот еще гемор, лучше сделать сразу все нормально. А нормально, значит потратить больше усилий на создание дополнительных условий и разграничений для нескольких пользователей и потом не париться. При правильной нормализации и подходе - эти усилия окажутся даже не столь уж большими.
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37462030
Фотография SomewhereSomehow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomewhereSomehowНу кагбэ дьявол кроется в мелочах, я привел реальный пример места в котором надо стыковать два подхода - MVC и Smart UI. Не стыковать конечно, а выбирать между.
Устал я, спать пойду =)
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37462044
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomewhereSomehowiscrafmЕсть процедуры/функции бизнес-логики. Для связи их запуска с внешними событиями есть Акции. У контролов, к которым относится та же кнопка, если привязка на акцию. Т.е., когда вы разрабатываете логику, то вам фиолетово на то, кто ее вызовет, кнопка или еще какое-то событие, но логика всегда одна. Ну вот видите, акции (это ли не TAction - всплывают у меня смутные знания многолетней давности?)...уже появляется отдельная абстракция и механизм для реализации описанного поведения. Далее так или иначе придется связывать это с кнопками и прочим, опять же чтобы отвязать - нужно вводить какие-то интерфейсы и уровни абстракции - это и есть усилия.
Никаких абстракций дополнительных не нужно. Для связывания тоже никаких доп.интерфейсов не нужно. Для биндинга в компонентах есть свойство Action.
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37462064
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomewhereSomehow,
- вы на MVC сильно не молитесь. Счас уже MVP в моде
http://en.wikipedia.org/wiki/Model-view-presenter
- В Delphi есть разделение архитектуры на уровни по вертикали.
Считай - компонентный фреймворк. Хотя можно и на API win32 и на ASM перейти.
Т.е.прикладник программист берёт DAL и присоединяет его к VIEW в виде DevExpress.
Контроллёр там внутри. Его пишет системщик создавая библиотеку-уровень.
В Java нету такого деления на прикладника. Поэтому каждый строит Модель, Маппит её на БД, замешивает всё на Хибер, пишет логику в классах, и пишет клиента на HTML-шаблонах или...
Подходы разные, и нет Лучшего или Худшего.
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37462261
Фотография SomewhereSomehow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmНикаких абстракций дополнительных не нужно. Для связывания тоже никаких доп.интерфейсов не нужно. Для биндинга в компонентах есть свойство Action. Ничуть не сомневаюсь, что при грамотном использовании Action можно писать в духе MVC. Но, по прежнему:
iscrafmКонечно Делфи провоцирует щелкнуть мышкой на OnClick и настрочить там этот код, но это не более чем провокация, которая очень полезна для минутных приложений.
так что как-то неубедительно для меня звучит фраза о встроенном MVC в дельфи и написании в таком стиле без усилий. На любом подобном языке можно писать в стиле MVC и во многих фреймворках есть компонентная модель. По такой же логике можно сказать, что MVC везде встроен. Только чтобы его использовать, надо сделать то-то и то-то, использовать такие-то компоненты и связывать с контролами определенным образом.

Petro123SomewhereSomehow,
- вы на MVC сильно не молитесь. Счас уже MVP в моде
http://en.wikipedia.org/wiki/Model-view-presenter
- В Delphi есть разделение архитектуры на уровни по вертикали.
Считай - компонентный фреймворк. Хотя можно и на API win32 и на ASM перейти.
Т.е.прикладник программист берёт DAL и присоединяет его к VIEW в виде DevExpress.
Контроллёр там внутри. Его пишет системщик создавая библиотеку-уровень.
В Java нету такого деления на прикладника. Поэтому каждый строит Модель, Маппит её на БД, замешивает всё на Хибер, пишет логику в классах, и пишет клиента на HTML-шаблонах или...
Подходы разные, и нет Лучшего или Худшего. MVC/MVP - не суть. Не понимаю, что мешает вам например в том же .NET сделать: "берёт DAL и присоединяет его к VIEW в виде DevExpress."? Сам по себе оо язык программирвоания ни к чему особо не обязывает. Так что я по прежнему недоумеваю, зачем вешать ярлыки (кроме, конечно, языков созданных для специальных нужд, типа sql - для работы с данными, фортран - для математических задач и т.д...).
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37462298
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomewhereSomehow,
долго объяснять, но это факт:
- в Delphi принято без ORM и 3-х звенок (стек разработки позволяет делать 1 форму-окно в день)
- в Java принято C ORM и 3-х звенкой (95% хибер и 2% iBatis-ORM)
- в шарпе можно так и так
Т.е. если вы дадите ТЗ без ограничений на архитектуру, то получите совершенно разные продукты внутри и почти одинаковые по функционалу.
SomewhereSomehowНе понимаю, что мешает вам например в том же .NET сделать: "берёт DAL и присоединяет его к VIEW в виде DevExpress."?
Что мешает в Word сделать табличку с формулами?
- в Net проще, в Java сложнее до появления GWT-DataSet
- Для такой модели выше, БЛ надо писать на сервере. Delphi на это заточен. Java - нет.
В этом особенность Платформ . Это вы же не будете отрицать?
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37462312
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomewhereSomehow,
С одной стороны, все ЯП одинаковые, выбирай любой :)
С другой стороны, придя на ветку Delphi и спросив: "где тут ORM\3-х звенка" - Вас пошлют.
Придя на ветку Java "где тут DataSet чтобы к БД примкнуть" - вас тоже пошлют.
Удачи Вам!
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37462313
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomewhereSomehowiscrafmНикаких абстракций дополнительных не нужно. Для связывания тоже никаких доп.интерфейсов не нужно. Для биндинга в компонентах есть свойство Action. Ничуть не сомневаюсь, что при грамотном использовании Action можно писать в духе MVC. Но, по прежнему:
iscrafmКонечно Делфи провоцирует щелкнуть мышкой на OnClick и настрочить там этот код, но это не более чем провокация, которая очень полезна для минутных приложений.
так что как-то неубедительно для меня звучит фраза о встроенном MVC в дельфи и написании в таком стиле без усилий. На любом подобном языке можно писать в стиле MVC и во многих фреймворках есть компонентная модель. По такой же логике можно сказать, что MVC везде встроен. Только чтобы его использовать, надо сделать то-то и то-то, использовать такие-то компоненты и связывать с контролами определенным образом.
дался вам этот MVC. Делфи - среда разработки. А какой проектной модели придерживается архитектор системы - дело архитектора. Является он сторонником MVC - получите, хотите MVVM - пожалуйста и т.д. Мне нравится, что в него встроен MIE по умолчанию.
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37462316
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123С другой стороны, придя на ветку Delphi и спросив: "где тут ORM\3-х звенка" - Вас пошлют.
разве что маргиналы. К тому же ветка Делфи не показатель того, как на Делфи нужно разрабатывать
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37462331
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmPetro123С другой стороны, придя на ветку Delphi и спросив: "где тут ORM\3-х звенка" - Вас пошлют.
разве что маргиналы. К тому же ветка Делфи не показатель того, как на Делфи нужно разрабатывать
эт ты зря. Так можно и sql_ru опустить.
Там профессиональная ветка. Другой нету.
Могу другой вопрос
- "где тут IDE для рисования форм"? Задай его в обоих ветках.
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37462348
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmSomewhereSomehowпропущено...
Ничуть не сомневаюсь, что при грамотном использовании Action можно писать в духе MVC. Но, по прежнему:
пропущено...

так что как-то неубедительно для меня звучит фраза о встроенном MVC в дельфи и написании в таком стиле без усилий. На любом подобном языке можно писать в стиле MVC и во многих фреймворках есть компонентная модель. По такой же логике можно сказать, что MVC везде встроен. Только чтобы его использовать, надо сделать то-то и то-то, использовать такие-то компоненты и связывать с контролами определенным образом.
дался вам этот MVC. Делфи - среда разработки. А какой проектной модели придерживается архитектор системы - дело архитектора. Является он сторонником MVC - получите, хотите MVVM - пожалуйста и т.д. Мне нравится, что в него встроен MIE по умолчанию.

Курица - не птица, DAL - не бизнес объект, контроллеры внутри компонент - не MVC, MVVM без возможностей binding'а xaml - не паттерн.
В Delphi, java, etc абстрагироваться полностью от View, как в WPF\SL, можно только с большими усилиями, которые превышают все разумные пределы, а без этого какой бы шаблон с красивым названием не был, слаще не будет.
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37462353
Фотография SomewhereSomehow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmдался вам этот MVC. Делфи - среда разработки. А какой проектной модели придерживается архитектор системы - дело архитектора. Является он сторонником MVC - получите, хотите MVVM - пожалуйста и т.д. Мне нравится, что в него встроен MIE по умолчанию. Да мне то он не дался, я как раз и пытаюсь объяснить Petro123 что не надо вешать ярлыков. Это для того, это для сего и т.д. А вообще это все к тому, что ТС собственно и интересавался в теме где ему организовывать БЛ, хотя теперь тема уже больше перерастает в какой-то флуд.
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37462380
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomewhereSomehow,
аффтар пусть пишет на том что знает. иначе всё равно будет Г... :)
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37462419
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123iscrafmпропущено...

разве что маргиналы. К тому же ветка Делфи не показатель того, как на Делфи нужно разрабатывать
эт ты зря. Так можно и sql_ru опустить.
Там профессиональная ветка. Другой нету.
я же не говорю о том, что на не профессиональная... я говорю о том, что там "кучкуются" профессионалы определенного направления и разговоры о трехзвенках и т.п. превращаются в ней в разговоры слепого с глухим. Просто основная аудитория той ветки не работает с трехзвенками, но это же не означает того, что на Делфи трехзвенки не разрабатывают или их разработка связана с не_специфичными для этой среды проблемами... Поэтому я и говорю о том, что эта ветка не показатель того, как должно выглядеть приложение на Делфи, эта ветка показатель того, как выглядит приложение у большей части ее аудитории. Конечно профессиональная ветка...
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37462490
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm,
конечно.
Если у тебя самого 3-х звенка, то надо чётко понимать, что это не типично для платформы :)
Тут суть в отличиях, а не кучке людей и маргиналах.
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37462509
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaMVVM без возможностей binding'а xaml - не паттерн.
поправил. чуть выше речь идет о среде разработки, а не о платформе. В VS (среде) тоже нет никакого биндинга, но он есть в SL, к примеру.
...
Рейтинг: 0 / 0
Обсуждение этапа проектирования бизнес логики
    #37462591
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmSeVaMVVM без возможностей binding'а xaml - не паттерн.
поправил. чуть выше речь идет о среде разработки, а не о платформе. В VS (среде) тоже нет никакого биндинга, но он есть в SL, к примеру.

Без черкнутого тобой xaml и двойного binding'a, SL сразу переходит в разряд других посредственностей. VS тоже отделять не нужно.
...
Рейтинг: 0 / 0
54 сообщений из 54, показаны все 3 страниц
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Обсуждение этапа проектирования бизнес логики
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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