|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#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 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
SomewhereSomehowiscrafm, имеете ввиду что напишете: buttonOnclick() { myfunction() } и рядышком в этом же файле myfunction() {...} ? не совсем. Есть процедуры/функции бизнес-логики. Для связи их запуска с внешними событиями есть Акции. У контролов, к которым относится та же кнопка, если привязка на акцию. Т.е., когда вы разрабатываете логику, то вам фиолетово на то, кто ее вызовет, кнопка или еще какое-то событие, но логика всегда одна. Конечно Делфи провоцирует щелкнуть мышкой на OnClick и настрочить там этот код, но это не более чем провокация, которая очень полезна для минутных приложений. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 17:06 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
SomewhereSomehowiscrafm, И еще, попутно вопрос, если например вам надо в зависимости от той или иной логики - кнопку задизейблить, вы где это напишете? в логике естественно или в "обновляторе" акций ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 17:08 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
пишешь бизнес-логику в одном слое на сервере приложений. досуп к бд через адо.нет или орм (ентити, хибернейт). но между слоем бизнес-логики и орм/бд напиши DAL слой, чтоб изолировать слой BLL от используемого механизма доступа к БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 17:16 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
и еще, LINQ to SQL это вчерашний день, нужно юзать LINQ to Entities ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 17:21 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
alneoи еще, LINQ to SQL это вчерашний день, нужно юзать LINQ to Entities завтра оно тоже станет вчерашним. ТС задолбается переписывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 17:31 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
не, они оставили тока ради совместимости обратной линк ту сиквел, будущее за ентити... просто майкрософт как всегда сделает подобные технологии, а потом поддерживает этот зоопарк. но суть не в этом. я за то чтобы уровень бизнес-логики не заисел от способа получения данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 17:36 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
alneoно суть не в этом. я за то чтобы уровень бизнес-логики не заисел от способа получения данных. "а я за коммунизм и чтобы не было бедных". Ещё за ООБД, который обещают вторую 1000 лет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 17:42 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
Petro123alneoно суть не в этом. я за то чтобы уровень бизнес-логики не заисел от способа получения данных. "а я за коммунизм и чтобы не было бедных". Если подобное для Delphi - коммунизм, то он уже давно наступил в других средах программирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 18:56 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
SeVa, никогда себе не позволял принижать любой ЯП. Windows Must Die ? ?)) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 21:27 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
да ладно вам.. не путайте архитектуру приложения и язык программирования, при помощи которого оно реализуется. Нужен DAL отделенный от BLL - делайте так. Какая разница на каком языке писать текст для этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 21:42 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
Наверное все-таки буду использовать Transaction Script (большое спасибо за обсуждение) Хотя часть функционала будет возложена на NHibernate. Есть еще другой не мение интересный вопрос! Так как база очень большого размера, набор данных, полученный в результате запроса из СПО будет транслироваться в локальную БД, а СПО в дальнейшем будет работать с этими данными. В связи с тем что одновременно могут работать несколько операторов возникает ВОПРОС: Каким образом лучше разграничить деятельность пользователей (чтобы текущий пользователь работал непосредственно со своим набором данных)?????? Самому в голову приходят следующие мысли: 1. Создавать экземпляр БД для каждого пользователя Возникает вопрос как создать сессию работы с экземпляром? Т.е. автоматическое очищение таблиц как при обычном, так и аварийном выходе из системы, создание и уничтожение экземпляров тоже будет занимать время! 2. Шаг в сторону унификации - хранить все данные различных пользователей в одной базе и различать по уникальному ID. Буду благодарен за обсуждение ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 21:59 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
iscrafmЕсть процедуры/функции бизнес-логики. Для связи их запуска с внешними событиями есть Акции. У контролов, к которым относится та же кнопка, если привязка на акцию. Т.е., когда вы разрабатываете логику, то вам фиолетово на то, кто ее вызовет, кнопка или еще какое-то событие, но логика всегда одна. Ну вот видите, акции (это ли не TAction - всплывают у меня смутные знания многолетней давности?)...уже появляется отдельная абстракция и механизм для реализации описанного поведения. Далее так или иначе придется связывать это с кнопками и прочим, опять же чтобы отвязать - нужно вводить какие-то интерфейсы и уровни абстракции - это и есть усилия. iscrafmКонечно Делфи провоцирует щелкнуть мышкой на OnClick и настрочить там этот код, но это не более чем провокация, которая очень полезна для минутных приложений. А вот тут я пожалуй плюсану. Именно это ведь я и хотел сказать. Просто было утверждение Petro123там ЭТО не нужно, т.к. там MVC встроен в IDE. вроде как если встроен, то создаешь новый проект и сразу начинаешь мыслить в логике MVC, как например если создать проект в .нет ASP.NET MVC. Там как раз все встроено. По другому, конечно, и там можно написать, но это надо потратить усилия. В этом же случае усилия как раз надо приложить в том, чтобы разобраться, как не свернуть на путь "создал форму, накидал контролов, обработчиков, все написал и фигачишь себе дальше" - именно на это и провоцирует дизанер форм (как впрочем не только в дельфи, но и в вин-формсе в .нет). iscrafmда ладно вам.. не путайте архитектуру приложения и язык программирования, при помощи которого оно реализуется. Нужен DAL отделенный от BLL - делайте так. Какая разница на каком языке писать текст для этого. И тут я плюсану. Ибо то же самое писал еще ранее. Не зависит от клиента практически какой подход использовать, если это не противоречит парадигме и возможностям языка. Обжект паскаль объектный? объектный! Есть компоненты работы с БД? Есть! Что мешает нафигачить классический ОРМ если это нужно? Да ничего не мешает. Ровно это я и талдычу уже который пост. Нет в явном виде зависимости между ОРМ и языком программирования если он имеет все возможности для этого. Нельзя сказать: Ява - ОРМ, .НЕТ - ДатаСет, Дельфи - еще что-то. Это то, что я хотел сказать. Petro123я думал, у нас бОльшие проблемы. А у нас тут: "кнопку выключить" :)) Давай лучше offtop Ну кагбэ дьявол кроется в мелочах, я привел реальный пример места в котором надо стыковать два подхода - MVC и Smart UI. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 22:23 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
PavluxaF, БД для каждого юзера - сразу не вариант, если только под юзером не подразумевается какой-нить один единый филиал фирмы которая пользуется софтом и есть гарантия, что эти филиалы никогда-никогда не захотят иметь единые данные и строить единые отчеты и иметь взаимосвязь. А как показывает мой личный опыт - именно так все и бывает. И лично сталкивался с тем что приходилось сливать БД трех филиалов в одну...поверьте, тот еще гемор, лучше сделать сразу все нормально. А нормально, значит потратить больше усилий на создание дополнительных условий и разграничений для нескольких пользователей и потом не париться. При правильной нормализации и подходе - эти усилия окажутся даже не столь уж большими. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 22:28 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
SomewhereSomehowНу кагбэ дьявол кроется в мелочах, я привел реальный пример места в котором надо стыковать два подхода - MVC и Smart UI. Не стыковать конечно, а выбирать между. Устал я, спать пойду =) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 22:31 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
SomewhereSomehowiscrafmЕсть процедуры/функции бизнес-логики. Для связи их запуска с внешними событиями есть Акции. У контролов, к которым относится та же кнопка, если привязка на акцию. Т.е., когда вы разрабатываете логику, то вам фиолетово на то, кто ее вызовет, кнопка или еще какое-то событие, но логика всегда одна. Ну вот видите, акции (это ли не TAction - всплывают у меня смутные знания многолетней давности?)...уже появляется отдельная абстракция и механизм для реализации описанного поведения. Далее так или иначе придется связывать это с кнопками и прочим, опять же чтобы отвязать - нужно вводить какие-то интерфейсы и уровни абстракции - это и есть усилия. Никаких абстракций дополнительных не нужно. Для связывания тоже никаких доп.интерфейсов не нужно. Для биндинга в компонентах есть свойство Action. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 22:52 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
SomewhereSomehow, - вы на MVC сильно не молитесь. Счас уже MVP в моде http://en.wikipedia.org/wiki/Model-view-presenter - В Delphi есть разделение архитектуры на уровни по вертикали. Считай - компонентный фреймворк. Хотя можно и на API win32 и на ASM перейти. Т.е.прикладник программист берёт DAL и присоединяет его к VIEW в виде DevExpress. Контроллёр там внутри. Его пишет системщик создавая библиотеку-уровень. В Java нету такого деления на прикладника. Поэтому каждый строит Модель, Маппит её на БД, замешивает всё на Хибер, пишет логику в классах, и пишет клиента на HTML-шаблонах или... Подходы разные, и нет Лучшего или Худшего. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2011, 23:18 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
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 - для работы с данными, фортран - для математических задач и т.д...). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2011, 09:37 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
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 - нет. В этом особенность Платформ . Это вы же не будете отрицать? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2011, 09:57 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
SomewhereSomehow, С одной стороны, все ЯП одинаковые, выбирай любой :) С другой стороны, придя на ветку Delphi и спросив: "где тут ORM\3-х звенка" - Вас пошлют. Придя на ветку Java "где тут DataSet чтобы к БД примкнуть" - вас тоже пошлют. Удачи Вам! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2011, 10:08 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
SomewhereSomehowiscrafmНикаких абстракций дополнительных не нужно. Для связывания тоже никаких доп.интерфейсов не нужно. Для биндинга в компонентах есть свойство Action. Ничуть не сомневаюсь, что при грамотном использовании Action можно писать в духе MVC. Но, по прежнему: iscrafmКонечно Делфи провоцирует щелкнуть мышкой на OnClick и настрочить там этот код, но это не более чем провокация, которая очень полезна для минутных приложений. так что как-то неубедительно для меня звучит фраза о встроенном MVC в дельфи и написании в таком стиле без усилий. На любом подобном языке можно писать в стиле MVC и во многих фреймворках есть компонентная модель. По такой же логике можно сказать, что MVC везде встроен. Только чтобы его использовать, надо сделать то-то и то-то, использовать такие-то компоненты и связывать с контролами определенным образом. дался вам этот MVC. Делфи - среда разработки. А какой проектной модели придерживается архитектор системы - дело архитектора. Является он сторонником MVC - получите, хотите MVVM - пожалуйста и т.д. Мне нравится, что в него встроен MIE по умолчанию. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2011, 10:08 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
Petro123С другой стороны, придя на ветку Delphi и спросив: "где тут ORM\3-х звенка" - Вас пошлют. разве что маргиналы. К тому же ветка Делфи не показатель того, как на Делфи нужно разрабатывать ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2011, 10:10 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
iscrafmPetro123С другой стороны, придя на ветку Delphi и спросив: "где тут ORM\3-х звенка" - Вас пошлют. разве что маргиналы. К тому же ветка Делфи не показатель того, как на Делфи нужно разрабатывать эт ты зря. Так можно и sql_ru опустить. Там профессиональная ветка. Другой нету. Могу другой вопрос - "где тут IDE для рисования форм"? Задай его в обоих ветках. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2011, 10:21 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
iscrafmSomewhereSomehowпропущено... Ничуть не сомневаюсь, что при грамотном использовании Action можно писать в духе MVC. Но, по прежнему: пропущено... так что как-то неубедительно для меня звучит фраза о встроенном MVC в дельфи и написании в таком стиле без усилий. На любом подобном языке можно писать в стиле MVC и во многих фреймворках есть компонентная модель. По такой же логике можно сказать, что MVC везде встроен. Только чтобы его использовать, надо сделать то-то и то-то, использовать такие-то компоненты и связывать с контролами определенным образом. дался вам этот MVC. Делфи - среда разработки. А какой проектной модели придерживается архитектор системы - дело архитектора. Является он сторонником MVC - получите, хотите MVVM - пожалуйста и т.д. Мне нравится, что в него встроен MIE по умолчанию. Курица - не птица, DAL - не бизнес объект, контроллеры внутри компонент - не MVC, MVVM без возможностей binding'а xaml - не паттерн. В Delphi, java, etc абстрагироваться полностью от View, как в WPF\SL, можно только с большими усилиями, которые превышают все разумные пределы, а без этого какой бы шаблон с красивым названием не был, слаще не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2011, 10:30 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
iscrafmдался вам этот MVC. Делфи - среда разработки. А какой проектной модели придерживается архитектор системы - дело архитектора. Является он сторонником MVC - получите, хотите MVVM - пожалуйста и т.д. Мне нравится, что в него встроен MIE по умолчанию. Да мне то он не дался, я как раз и пытаюсь объяснить Petro123 что не надо вешать ярлыков. Это для того, это для сего и т.д. А вообще это все к тому, что ТС собственно и интересавался в теме где ему организовывать БЛ, хотя теперь тема уже больше перерастает в какой-то флуд. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2011, 10:32 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
SomewhereSomehow, аффтар пусть пишет на том что знает. иначе всё равно будет Г... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2011, 10:43 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
Petro123iscrafmпропущено... разве что маргиналы. К тому же ветка Делфи не показатель того, как на Делфи нужно разрабатывать эт ты зря. Так можно и sql_ru опустить. Там профессиональная ветка. Другой нету. я же не говорю о том, что на не профессиональная... я говорю о том, что там "кучкуются" профессионалы определенного направления и разговоры о трехзвенках и т.п. превращаются в ней в разговоры слепого с глухим. Просто основная аудитория той ветки не работает с трехзвенками, но это же не означает того, что на Делфи трехзвенки не разрабатывают или их разработка связана с не_специфичными для этой среды проблемами... Поэтому я и говорю о том, что эта ветка не показатель того, как должно выглядеть приложение на Делфи, эта ветка показатель того, как выглядит приложение у большей части ее аудитории. Конечно профессиональная ветка... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2011, 10:55 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
iscrafm, конечно. Если у тебя самого 3-х звенка, то надо чётко понимать, что это не типично для платформы :) Тут суть в отличиях, а не кучке людей и маргиналах. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2011, 11:18 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
SeVaMVVM без возможностей binding'а xaml - не паттерн. поправил. чуть выше речь идет о среде разработки, а не о платформе. В VS (среде) тоже нет никакого биндинга, но он есть в SL, к примеру. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2011, 11:24 |
|
Обсуждение этапа проектирования бизнес логики
|
|||
---|---|---|---|
#18+
iscrafmSeVaMVVM без возможностей binding'а xaml - не паттерн. поправил. чуть выше речь идет о среде разработки, а не о платформе. В VS (среде) тоже нет никакого биндинга, но он есть в SL, к примеру. Без черкнутого тобой xaml и двойного binding'a, SL сразу переходит в разряд других посредственностей. VS тоже отделять не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2011, 11:53 |
|
|
start [/forum/topic.php?all=1&fid=33&tid=1547974]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
109ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
others: | 8ms |
total: | 225ms |
0 / 0 |