|
|
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
skmdeveloper, Про типовые согласен. С другой стороны, Вы ведь скорее всего стоите больше студента-первокурсника? Значит в своем регионе Вы очень редкий 1С-гуру, если без Вас типовые конфигурации неприемлемо работают у некоторых клиентов? А что было бы с регионом, если бы Вас там не было? ;) И почему Вы упорно считаете, что SQL-гуру это что-то из ряда вон выходящее? Освоить какой-либо диалект SQL намного проще, чем изучить устройство типовой 1С. Если Вы смогли самостоятельно разобраться с 1С, почему тогда считаете, что не сможете разобраться с SQL? У нас в регионе SQL-гуру появились как раз из-за обещаний 1С "на больших объемах данных используйте SQL и будет вам счастье". Когда растущие конторы стали спотыкаться о производительность, начали переводить свои 1Сы на SQL и столкнулись с тем, что такой перевод только ухудшает работу - многие 1С-гуру очень быстро превратились в SQL-гуру безо всяких особых напрягов. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 10:30 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
пролетевший автор Одна строчка в описании запросов еще не значит одного запроса. И чтобы объяснить оптимизатору, как правильно построить план запроса все разработчики должны досконально разбираться с используемой СУБД ( а если их несколько ? ). Ну и что вы хотели этим сказать? Пусть хоть миллион, но если они разрабатывают учетную систему и используют какую-то СУБД они обязаны в ней разобраться, иначе будет... 1С. Если не разбираются СУБД, то получится в любом случае тормозная система, потому как СУБД тормозить будет если ей никто не занимается. Почитайте у Кейта хотя бы вступление для общего образования. автор Второй момент - и запросы, и логика выполняются на одной и той же системе. То есть как минимум ( считая что язык процедур СУБД как минимум столь же эффективен, как на сервере приложений ), требования к системе суммируются. Нет. не суммируются... будет конечно зависимость, но не прямопропорциональная. Да нужно будет увеличь мощность сервера, но не в два раза, а процентов на 10%-15%. Не будет двойной обработки данных. авторУмным людям еще и деньги считать приходится. Поэтому кроме технических требований, к системе накладываются еще и финансовые. В приведенном вами примере, все рассчитано из предположения, что за каждой порцией данных сервер приложений лезет в базу. Но любой продавец сразу скажет - есть небольшое количество ходовых товаров, которые берут все, а экзотические заказы случаются достаточно редко. В плане приведенного примера это значит что информация о таких товаров попадает в кеш сервера, и количество запросов чтения будет на порядок а то и два меньше взятого "в лоб". В чем отличие от СУБД? В том что за количсетвом этого товара все равно сервер приложений полезет в СУБД? авторСервера могут работать паралельно, обслуживая своих клиентов или свои кусочки пакетного задания. В результате, при логике на сервере - имеем несколько относительно дешевых машин, в противном случае - многопроцессорную суперсистему, или кластер из таких монстров, еще и требующий скоростной storage.Стоимость и железа, и лицензий во втором случае будет куда как выше... Ну зачем так противопоставлять. Кроме лицензий ничего не вижу больше. Да и то готов поспорить, что северов СУБД понадобится на систему с сервером приложений примерно столько же, сколько и серверов АПП... автор Ну и разрабатывать систему разделенную на относитьельно слабо связанные части, которые можно распределить между разными людьми и тестировать отдельно тоже дешевле. В этой части разработку бы уж не трогали. Это можно делать и при помещении БЛ в СУБД. Я вижу дополнительную сложность, только в том, что придется городить кучу ненужного кода в сервере АПП типа авторизации и проверки прав доступа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 11:09 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
пролетевший, Кажется, опять пошло по кругу... Хорошо, попытаемся еще... Почему в случае с СП Вы предполагаете эффективный кэш, а при работе СУБД нет? Почему вы считаете, что в случае нескольких СП с одной СУБД кэш СП будет эффективен? Один клиент через первый СП выписал заявку на основании закешированных остатков и забрал весь товар, второй клиент через второй СП тоже выписал заявку на основании закэшированных остатков и тоже забрал весь товар. Быть того не может? Менеджер с клиента через первый СП запретил скидки, но клиент через кэш второго СП этого не заметил и спокойно оформил заявку. Быть того не может? Финансист придал клиенту статус "корпоративный". Закупщики этого клиента, выписывая каждый через свой СП, получили разные скидки на один и тот же товар, хотя их начальник клятверно заверил, что обо всем договорился. Просто потому, что одному из них повезло и он работал с кэшем того СП, через которого финансист и ставил этот статус. Опять быть того не может? Или таки СП необходимо будет обращаться в базу на каждую заявку? Или на СП нужно еще и прикрутить систему уведомления других СП об изменениях? Как Вы считаете, как более эффективно потратит ресурсы РСУБД - на один запрос по четырем таблицам или на четыре запроса по одной таблице? И опять таки? Где я хотя бы раз сказал, что вся бизнес-логика должна быть в БД? Ткните ссылкой, пожалуйста... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 11:19 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
baike2000, 1С, кстати, как раз и работает по принципу ORM. :) Боюсь только, что ORM у них тоже собственной разработки. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 11:22 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрBogdanov AndreyОстается только сравнить "пропускную способность" сети и сервера базы данных и понять в каком из двух вариантов мы раньше "упремся". Вряд ли ответ столь очевиден.А почему Вы считаете, что на SQL сервере будет выполняться "построчная" проверка? В выбранном примере проверка всех условий по всем строкам одного документа - это один "запрос". Выполненный приложением, которая оптимизирована на такие запросы. И почему Вы считаете, что "+еще некая математика" на сервере БД потребует бОльшей нагрузки, чем на сервере приложений? Где вы увидели, что я что-то "считал". Какие-то цифры привели вы и на основании этих цифр хотели сделать какие-то выводы. Я просто указал, что ваши выводы гроша выеденного не стоят. Попытайтесь объяснить, что именно вы хотели своими цифрами показать. Где, на что и почему нагрузка выше. Егоров АлександрBogdanov AndreyУмные люди для разных задач используют разные инструменты. Для реализации бизнес-логики одни, для хранения данных - другие. И для каждой задачи стараются выбрать наиболее подходящий инструмент.Умные люди по-максимому используют возможности РСУБД. А не используют их только для хранения данных. Вопрос-то почему другие умные люди не используют по-максимому возможности ООБД? Или Вы считаете, что РСУБД - это самый подходящий инструмент для ОО-работы с данными? Или Вы считаете, что ООБД не лучший инструмент для ОО-работы с данными? Или Вы сомневаетесь, что РСУБД имеет какие-либо преимущества перед ООБД в умении хранить данные? Как много вопросов. Вы действительно на все эти вопросы хотите у меня ответы получить? Давайте по-порядку: 1. Не могу сказать за всех умных людей, но некот орые используют возможности ООБД в тех задачах, гда считают это оправданным. 2. Я не очень понимаю что вы называете "ОО-работой с данными". Но подозреваю, что РСУБД для этой работы не лучший инструмент. 3. Опять же не знаю, что вы называете "ОО-работой", но и в данном случае считаю, что ООБД не лучший инсрумент для работы с данными. Это хороший инструмент для храненния "ОО-данных". 4. Нет не сомневаюсь. В умении хранить данные РСУБД имеет некоторые преимущества. Но какое это имеет отношение к бизнес-логике не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 13:02 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyПопытайтесь объяснить, что именно вы хотели своими цифрами показать. Где, на что и почему нагрузка выше.Все, что я хотел показать этими цифрами я показал. Считаю, что цифры хоть и "попугаи", но достаточного обоснованные. Вы приплюсовали к моим цифрам свои и сказали "ибо так!". Оснований Ваших цифр я вообще не видел. Bogdanov Andrey1. Не могу сказать за всех умных людей, но некот орые используют возможности ООБД в тех задачах, гда считают это оправданным.Я это и не отрицал. Bogdanov Andrey2. Я не очень понимаю что вы называете "ОО-работой с данными". Но подозреваю, что РСУБД для этой работы не лучший инструмент.Вы абсолютно правильно поняли, что я имел ввиду под "ОО-работой с данными". Я не знаю как правильно называется объектная обработка данных. ORM, Hibernate и прочее - это технологии, а как назвать сам принцип? :) Bogdanov Andrey3. Опять же не знаю, что вы называете "ОО-работой", но и в данном случае считаю, что ООБД не лучший инсрумент для работы с данными. Это хороший инструмент для храненния "ОО-данных". 4. Нет не сомневаюсь. В умении хранить данные РСУБД имеет некоторые преимущества. Но какое это имеет отношение к бизнес-логике не знаю. Я тоже не сомневаюсь в возможностях РСУБД. Я могу сказать только, что убежден в том , что при "ОО-работе с данными" с использованием ООБД не надо городить лишниюю прослойку ORMа, и можно использовать готовый объектно-ориентированный функционал СУБД. Это будет в любом случае эффективней, чем использование РСУБД (которая "не лучший инструмент") через дополнительнйю прослойку в виде ORMа. Поскольку мои убеждения расходятся с действительностью - я и пытаюсь узнать, по каким критериям для "ОО-работы с данными" выбирается не самые лучшие инструменты, требующие дополнительны прослоек, вместо выбора наиболее оптимальных (с моей точки зрения) инструментов. Объективных ответов я особо не вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 15:03 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Внесу свои 3 коп. на правах сугубо IMHO Для начала присоединюсь к мнению тех, кто считает, что не существует единственно верной архитектуры на все случаи жизни. В зависимости от постановки задачи и бизнес-условий оптимальным в конкретном проекте может оказаться любое из рассматриваемых выше решений - с обоими слоями (серверным и промежуточным) или с только одним из них двоих (любым). Как один из красивых вариантов разделения логики на промежуточный и серверный слои (иногда - оптимальный, иногда - нет) я бы рассмотрел такой: - На сервер выкладываем логику. связанную с поддержкой ограничений и целостности в самом широком смысле, поддержку избыточности (денормализации) + массовые сервисные операции (ФИФО/ЛИФО, переоценка/резервирование, начисление доходов по остаткам, вычисление средневзвешенных и среднепотолочных и т.д). Причем, на сервере более естественно мыслить не в терминах объектов, а в терминах чистых реляций (а по этому и язык более естественен PL/SQL или TSQL). - В промежуточный слой выносим бизнес-логику в узком смысле, связанную с манипулированием данными как бизнес-объектами (такие методы как послать/получить, оплатить, отгрузить, сформировать счет-фактуру и т.д. ). Здесь более уместно объектное представление с иерархией, причем объекты могут представлять собой сложные структуры (агрегаты) с коллекция подобъектов. Разделение это конечно очень условно и субъективно. Другая проблема - какие методы/процедуры давать пользователю настраивать под свои нужды, а какие нет. Меня всегда коробит, когда поддержка пользователя может свободно менять все что угодно на сервере, надежностью тут и не пахнет. А как искать ошибку в случае чего, как обновлять при обновлении версии, когда не знаешь, какие ограничения из заложенных разработчиком поддерживались, а какие нет. Но в то же время совсем не пускать пользователя на сервер то же жестоко - часто работать будет невозможно. Опять же сугубо IMHO как иногда возможное решение. Нужно разделить всю логику (объекты, процедуры) на две зоны - доступные для изменения только разработчиками, и разрешенные для изменения подержкой пользователя (или даже на три - для разработчиков, для собственной службы внедрения, и для подержки пользователя). Доступ с методам ядра ограничивается техническими и юридическими средствами (шифрование процедур, поставка только компилированного кода, ограничение прав, копирайт, отказ от обслуживания/исправления ошибок в случае нарушения и т.д. в меру испорченности фантазии), прочие процедуры поставляются в исходном коде и копирайт на них распространяется с изъятиями. Но это IMHO перпендикулярная проблема к разделению по слоям - как ядерные так и пользовательские процедуры/объекты могут быть везде - на клиенте, в промслое, на сервере. Но еще раз повторюсь - все это разделение - по возможности и необходимости. Вот занимаюсь проектом где все совсем не так как я написал выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 16:13 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрВсе, что я хотел показать этими цифрами я показал. Считаю, что цифры хоть и "попугаи", но достаточного обоснованные.Обычно желая что-то показать показывают это не себе, а собеседнику. Мне осталось непонятно что вы хотели показать. Мне ваши попугаи ничего не показывают. Но если вы сам с собой беседуете, то я пройду мимо. Егоров АлександрПоскольку мои убеждения расходятся с действительностью - я и пытаюсь узнать, по каким критериям для "ОО-работы с данными" выбирается не самые лучшие инструменты, требующие дополнительны прослоек, вместо выбора наиболее оптимальных (с моей точки зрения) инструментов. Объективных ответов я особо не вижу. Ну тут вы вообще что-то свое придумали и пытаетесь с этим спорить. Попробуйте прочитать, что другие пишут. Ваши оппоненты предлагали для "ОО-работы" использовать "объектные языки" (в частности Java и C# пробегали). Или вы считаете, что "объектные языки" не самые лучшие инструменты для "ОО-работы"? Назовите лучшие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 17:11 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey, "ОО-работы с данными ". незначительное вроде сокращение цитаты, а смысл меняет кардинально. Не нужно (умышленно?)запутывать нить беседы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 17:23 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
CountZerroКак один из красивых вариантов разделения логики на промежуточный и серверный слои (иногда - оптимальный, иногда - нет) я бы рассмотрел такой: - На сервер выкладываем логику. связанную с поддержкой ограничений и целостности... - В промежуточный слой выносим бизнес-логику в узком смысле...Именно. СУБД обеспечивает функционриование модели данных, а промежуточный слой - бизнес-логики. Где именно кончается модель данных и начинается бизнес-логика остается на усмотрение конкретного архитектора в конкретной задаче (хотя рекомендации общего характера и существуют). Можно только немного перефразировать iscrafm и отметить, что "чем гибче язык требуется для описания модели данных, тем более коряво она спроектирована". В подавляющем большинстве случаев для описания модели данных вполне достаточно чисто реляционных понятий и "голого SQL". А вот бизнес-логика более удобно формулируется в других терминах и использование ООП для ее выражения предпочтительнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 17:32 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
iscrafmBogdanov Andrey, "ОО-работы с данными ". незначительное вроде сокращение цитаты, а смысл меняет кардинально. Не нужно (умышленно?)запутывать нить беседы.Я уже сказал, что не знаю, что означает этот термин, а посему "аккуратно" относиться к нему не могу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 17:33 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyiscrafmBogdanov Andrey, "ОО-работы с данными ". незначительное вроде сокращение цитаты, а смысл меняет кардинально. Не нужно (умышленно?)запутывать нить беседы.Я уже сказал, что не знаю, что означает этот термин, а посему "аккуратно" относиться к нему не могу. зачем коментировать то, что не знаешь... Можно оставить без внимания непонятные вопросы. Имхо конечно. Речь идет о том, что данные реляционные, а их обработка манипулирует объектами. Между ними - "прокладка" в виде ORM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 17:40 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andreyбизнес-логика более удобно формулируется в других терминах и использование ООП для ее выражения предпочтительнее. по своей сути, бизнес-логика более естественно описывается и представляется декларациями или функциями. Ну уж никак не объектами. Как и случае с ORM, под объекты она "подгоняется", т.е. функции бизнес-логики транслируются в методы объектов и т.п., образно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 17:47 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyМне ваши попугаи ничего не показывают. Но если вы сам с собой беседуете, то я пройду мимо.Ну, не убедил, так не убедил. :) Собеседник, которому были адресованы эти цифры, уже объснил, что правило "все делается только на СП" финансовое, а не технические решение. Мне этого объяснения достаточно. :) Bogdanov AndreyВаши оппоненты предлагали для "ОО-работы" использовать "объектные языки" (в частности Java и C# пробегали). Или вы считаете, что "объектные языки" не самые лучшие инструменты для "ОО-работы"? Назовите лучшие. Причем тут языки-то? Я больше про работу с БД спрашивал. Хорошо, спрошу по другому. Почему чаще всего для "ОО-работы с данными" используется связка "Java -> ORM -> Провайдер -> РСУБД", а не связка "Java -> Провайдер -> ООБД", если известно, что "РСУБД для этой работы не лучший инструмент."? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 17:51 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
iscrafmРечь идет о том, что данные реляционные, а их обработка манипулирует объектами. Между ними - "прокладка" в виде ORM Iscrafm, имеено об этом речь и идет. Спасибо за понимание! :) Добавлю: ...при этом утверждается, что это самая эффективная архитектура, для разработки бизнес-приложений. Хотя форум вроде и технический, но все объяснения сводятся к тому, что "так мне, как разработчику дешевле", "потому что БД рухнет от клиентских запросов", ну и козырное "верую, ибо свято!" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 18:09 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрПочему чаще всего для "ОО-работы с данными" используется связка "Java -> ORM -> Провайдер -> РСУБД", а не связка "Java -> Провайдер -> ООБД", если известно, что "РСУБД для этой работы не лучший инструмент."?А вы попробуйте мухи от котлет отделить. Нет никакой "ОО-работы с данными". Есть данные, есть алгоритмы. Данные наиболее удобно описываются реляционной моделью (большинству людей, видимо, проще понимать описание данных в виде "таблиц"). А вот алгоритмы в реляционной модели отсутствуют. И для описания алгоритмов ОО-подход более удобен и нагляден. Ортодоксы могут применять один и тот же инструмент во всех случаях жизни. Но это ближе к религиозному фанатизму. А большинство использует то, что удобнее и понятнее для конкретной задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 18:21 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
iscrafmBogdanov Andreyбизнес-логика более удобно формулируется в других терминах и использование ООП для ее выражения предпочтительнее. по своей сути, бизнес-логика более естественно описывается и представляется декларациями или функциями. Ну уж никак не объектами. Как и случае с ORM, под объекты она "подгоняется", т.е. функции бизнес-логики транслируются в методы объектов и т.п., образно. А вот никак не могу согласиться! Тупой и корявый пример, просто для иллюстрации: Берем Счет Проверяем оплату По счету формируем накладную По накладной оформляем отгрузку, в частности - формируем счет-фактуру и т.д. Чистые объекты и действия над ними, и не надо задумываться об их внутренней структуре и прочих деталях. Все документы - наследники абстрактного класса "Документ", имеют общие методы (регистрируются в журнале входящих/исходящих, посылаются по почте, печатаются и проч.) Очень естественно и описывается на русском языке, и напрямую транслируется в объекты и методы. А вот при составлении отчетности проще мыслить в терминах сущностей реляционной модели, объекты только мешаются (извлечь количество и сумму продаж из накладных по 5 товарам с максимальными объемами продаж - зачем тут объекты?) И при реализации методов объектов, особенно таких, при которых выполняются массовые действия, часто проще мыслить в терминах сущностей реляционной модели. Из другой области: Во всех счетах, таких что остаток больше нуля, начислить доход на остаток Здесь Счет будет при реализации таблица "Счет" (банковский), а начисление дохода можно реализовать небольшой ХП. Никакой религии, я так вижу (с)! Объектно-реляционный дуализьм, природу мать вашу не обманешь:)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 18:59 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрПочему чаще всего для "ОО-работы с данными" используется связка "Java -> ORM -> Провайдер -> РСУБД", если известно, что "РСУБД для этой работы не лучший инструмент."? Bogdanov Andreyбольшинство использует то, что удобнее и понятнее для конкретной задачи. Вы только потверждаете мое мнение, что эффективность полученного решения - не самая главная цель таких разработчиков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 19:07 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрВы только потверждаете мое мнение, что эффективность полученного решения - не самая главная цель таких разработчиков.Все сильно зависит от тог, что понимать под "эффективностью". Если измерять количество строк кода, то получим одно, если скорость разработки, то другое, если скорость работы приложения то третье и т.д. Для бизнеса эффективность определяется количеством средств потребных для достижения задачи. И с этой точки зрения наиболее удобные средства чаще всего более эффективны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 19:39 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрЕгоров АлександрПочему чаще всего для "ОО-работы с данными" используется связка "Java -> ORM -> Провайдер -> РСУБД", если известно, что "РСУБД для этой работы не лучший инструмент."? Bogdanov Andreyбольшинство использует то, что удобнее и понятнее для конкретной задачи. Вы только потверждаете мое мнение, что эффективность полученного решения - не самая главная цель таких разработчиков. Странно, но под ООП здесь понимают только Hibernate и ORM. Hibernate - редкий уродец, который, действительно, производительностью и удобством не блещет, но есть и другие варианты. В них бизнес-объекты не зависят от структуры БД и DAL(можно использовать и хранимые процедуры), это позволяет сочетать достоинства двух крайних,горячо здесь обсуждаемых, вариантов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2010, 20:26 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
вообще, бизнес-логика должна находиться в ОО-модели а не в ХП хотя-бы потому, что при реализации ее в ХП получается функциональная декомпозиция системы, которая менее устойчива к изменениям, чем обьектная, это обьясняется тем, что при развитии системы чаще меняются именно функции обработки данных, чем сами данные (т.е. обьекты). К другим достоинствам относится то, что нормальную доменную модель легче сопровождать и понимать, чем ворох функций. Маппинг обьектов на таблицы желательно делать не на сами таблицы, а на ХП-обертки сущностей, таким образом мы выстраиваем своеобразный интерфейс к БД к которому обращаются клиенты. Такая изоляция (помимо безопасности) позволяет производить рефакторинг БД не трогая клиента Конечно всю БЛ в доменную модель запихнуть получается не всегда, некоторые функции просто тупо более эффективны на sql, и если это становится критичным, то они просто переносятся в ХП, но трактуются именно как оптимизационные решения, а не архитектурные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 01:54 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
StalkerSвообще, бизнес-логика должна находиться в ОО-модели а не в ХП хотя-бы потому, что при реализации ее в ХП получается функциональная декомпозиция системы, которая менее устойчива к изменениям, чем обьектная, это обьясняется тем, что при развитии системы чаще меняются именно функции обработки данных, чем сами данные (т.е. обьекты). К другим достоинствам относится то, что нормальную доменную модель легче сопровождать и понимать, чем ворох функций. Маппинг обьектов на таблицы желательно делать не на сами таблицы, а на ХП-обертки сущностей, таким образом мы выстраиваем своеобразный интерфейс к БД к которому обращаются клиенты. Такая изоляция (помимо безопасности) позволяет производить рефакторинг БД не трогая клиента Конечно всю БЛ в доменную модель запихнуть получается не всегда, некоторые функции просто тупо более эффективны на sql, и если это становится критичным, то они просто переносятся в ХП, но трактуются именно как оптимизационные решения, а не архитектурные Типичные рассуждения разработчика клиентской части с перетягиванием одеяла на себя. Пухлые клиенты с анемичной БД. Такая телега с люфтом в одну сторону только норовит съехать в обочину. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 02:36 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyДля бизнеса эффективность определяется количеством средств потребных для достижения задачи. И с этой точки зрения наиболее удобные средства чаще всего более эффективны. Согласен, Просто зачастую у бизнеса-потребителя ПО несколько другие понятия эффективности, чем у бизнеса-разработчика ПО. Более удобное и простое ПО для потребителя может обернуться весьма значимыми затратами на его поддержку, о которых разработчик ПО при продаже\внедрении скромно умалчивает. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 06:14 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Не Hibernateесть и другие варианты. В них бизнес-объекты не зависят от структуры БД и DAL(можно использовать и хранимые процедуры), это позволяет сочетать достоинства двух крайних,горячо здесь обсуждаемых, вариантов. Именно такой вариант и предлагается. Просто его почему-то упорно называют "вся бизнес-логика в СУБД". :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 06:29 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
CountZerroiscrafmBogdanov Andreyбизнес-логика более удобно формулируется в других терминах и использование ООП для ее выражения предпочтительнее. по своей сути, бизнес-логика более естественно описывается и представляется декларациями или функциями. Ну уж никак не объектами. Как и случае с ORM, под объекты она "подгоняется", т.е. функции бизнес-логики транслируются в методы объектов и т.п., образно. А вот никак не могу согласиться! Тупой и корявый пример, просто для иллюстрации: Берем Счет Проверяем оплату По счету формируем накладную По накладной оформляем отгрузку, в частности - формируем счет-фактуру и т.д. Чистые объекты и действия над ними, и не надо задумываться об их внутренней структуре и прочих деталях. Все документы - наследники абстрактного класса "Документ", имеют общие методы (регистрируются в журнале входящих/исходящих, посылаются по почте, печатаются и проч.) Очень естественно и описывается на русском языке, и напрямую транслируется в объекты и методы. Пример как раз хорошо описывает взаимодействие сервисов (функций) бизнес-логики. Ваша трансляция в объекты и методы, это уже трансляция , не забывайте об этом. Придумали абстрактный класс, нафантазировали ему методов и т.д. и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 09:01 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36445253&tid=1542824]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
158ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 495ms |

| 0 / 0 |
