|
|
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
из своего опыта: разрабатывали в банке информ систему онлайн сбора и учета информации так как еще были уже чуть-чуть не студентами - кинулись делать все ао науке - 3 звена: -морда (в ней часть бизнес логики по манипуляции данными и биению по рукам юзера) -среднее звено(укрупненная логика типа оплатить, переслать, проверить и т.д. и т.п.) -БД(проверка целостности и ограничения) заманались все это поддерживать и обновлять! когда становишся старее - стараешся все делать с минимумом телодвижений - т.е оптимальней! )))) Сейчас: -морда(часть бизнеслогики по управлению процессом ввода данных и маленькому биению по рукам) -среднее звено(просто трансляционное звено - данные от морды пихаем в БД и только типовые операции не меняющиеся от версии к версии) -БД(тут приходится проводить все окончательные и повторные проверки данных т.к. asp.net проект, ограничения целостности и все все все) в итоге теперь у нас меньше геммороя ровно на 1 звено - среднее - потому как при любом чихе править 3 звена - извините это только для студентам может позазаться нормальной практикой ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 09:48 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрСогласен, Просто зачастую у бизнеса-потребителя ПО несколько другие понятия эффективности, чем у бизнеса-разработчика ПО. Более удобное и простое ПО для потребителя может обернуться весьма значимыми затратами на его поддержку, о которых разработчик ПО при продаже\внедрении скромно умалчивает. :) Вы хотите сказать, что ОО-системы более затратны в поддержке? Можете привести статистику, или какие-то разумные доводы кроме своего имхо? Основная доля затрат на поддержку - это стоимость модификаций и модернизаций. ОО-подход более адаптивен и гораздо лучше переваривает изменения. Несомненно наличие грамотного архитектора и централизация всех изменений сильно упрощают модификацию и для не ОО-систем. Но как раз потребитель не имеет грамотных архитекторов, а желает выполнять некторые модификации своими руами (так как чужие слишком дороги). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 10:06 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Мне не ясно, почему использование сервера приложений позволит расположить БЛ в одном месте? С одними и теми же данными могут работать множество самых разных приложений, так у нас с одной базой работаю программы отвечающие за самые разные участки производства, туда же обращается бухгалтерская программа, туда же Oracle BI и т.д. и т.п. Очевидно, что единый сервер приложений становится сложнейшим монстром, который требует неадекватных затрат на свое сопровождений и развитие, т.к. решает множество разнородных задач. Я не про производительность сейчас. Разнесение БЛ на несколько серверов приложений одномоментно развеивает миф о едином месте хранения оной : функции разных приложений так или иначе пересекаются и сервера приложений будут поневоле их дублировать. Выделить еще один сервер приложений для "общей функциональности"? А не выйдет, т.к. области пересечений интересов разных приложений тоже различны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 10:15 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрНе Hibernateесть и другие варианты. В них бизнес-объекты не зависят от структуры БД и DAL(можно использовать и хранимые процедуры), это позволяет сочетать достоинства двух крайних,горячо здесь обсуждаемых, вариантов. Именно такой вариант и предлагается. Просто его почему-то упорно называют "вся бизнес-логика в СУБД". :) Нет. Это другой крайний вариант с другим люфтом. Взять хотя бы проверку на constraine c выводом вменяемых сообщений пользователю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 10:47 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyВы хотите сказать, что ОО-системы более затратны в поддержке? Можете привести статистику, или какие-то разумные доводы кроме своего имхо? Основная доля затрат на поддержку - это стоимость модификаций и модернизаций. ОО-подход более адаптивен и гораздо лучше переваривает изменения. Несомненно наличие грамотного архитектора и централизация всех изменений сильно упрощают модификацию и для не ОО-систем. Но как раз потребитель не имеет грамотных архитекторов, а желает выполнять некторые модификации своими руами (так как чужие слишком дороги). Вобщем-то я имел ввиду только системы, у которых вся бизнес-логика написана на объектно-ориентированном ЯВУ и работает с РСУБД через ORM не используя возможности этих СУБД по обработке данных. Статистику привести не могу. Но мо мнение авторы подобных ОО-систем поколебать не смогли. :) На пример необходимых изменений в "разделенной" системе, получен пример необходимых изменений в ОО-ситеме. Это совпадает с моим мнением. Ибо более затратные телодвижения разработчика по модификации бизнес-логики естественно будут переложены на кошелек заказчика. :) Обратных примеров приведено не было ни одного. Спорным вопросом остается также совокупная стоимость железа, требуемая для работы разных систем. Включая затраты на его содержание, естественно. Боюсь, что мы действительно пытаемся спорить о совершенно разных системах. Вернее, как заметил Iscrafm, о системах совершенно различного применения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 11:00 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрНе Hibernateесть и другие варианты. В них бизнес-объекты не зависят от структуры БД и DAL(можно использовать и хранимые процедуры), это позволяет сочетать достоинства двух крайних,горячо здесь обсуждаемых, вариантов. Именно такой вариант и предлагается. Просто его почему-то упорно называют "вся бизнес-логика в СУБД". :) Помимо ORM есть вариации на тему Active Record. В них БО не зависит от структуры БД, полностью скрыта работа с ней, предоставляются только нужные интерфейсы. Нет танцев с бубнами для маппинга ORM, можно работать с процедурами, распределить БЛ по двум слоям. Совсем другой вариант . Еще один экстремист, ему даже мало одной БД. Вариантов много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 11:03 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрBogdanov AndreyВы хотите сказать, что ОО-системы более затратны в поддержке? Можете привести статистику, или какие-то разумные доводы кроме своего имхо? Основная доля затрат на поддержку - это стоимость модификаций и модернизаций. ОО-подход более адаптивен и гораздо лучше переваривает изменения. Несомненно наличие грамотного архитектора и централизация всех изменений сильно упрощают модификацию и для не ОО-систем. Но как раз потребитель не имеет грамотных архитекторов, а желает выполнять некторые модификации своими руами (так как чужие слишком дороги). Вобщем-то я имел ввиду только системы, у которых вся бизнес-логика написана на объектно-ориентированном ЯВУ и работает с РСУБД через ORM не используя возможности этих СУБД по обработке данных. Статистику привести не могу. Но мо мнение авторы подобных ОО-систем поколебать не смогли. :) На пример необходимых изменений в "разделенной" системе, получен пример необходимых изменений в ОО-ситеме. Это совпадает с моим мнением. Ибо более затратные телодвижения разработчика по модификации бизнес-логики естественно будут переложены на кошелек заказчика. :) Обратных примеров приведено не было ни одного. Спорным вопросом остается также совокупная стоимость железа, требуемая для работы разных систем. Включая затраты на его содержание, естественно. Боюсь, что мы действительно пытаемся спорить о совершенно разных системах. Вернее, как заметил Iscrafm, о системах совершенно различного применения. Правильно, системы бывают разные. Валидация данных в удаленной БД совершенно неприемлема(лишний трафик и существенные задержки). Подсчет в примере совершенно не учитывает варианты, когда после проверок БД говорит - не шмогла. Помимо этого, за счет кеширования ООП можно убрать некоторые шаги и обращения к БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 11:19 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Не HibernateЕгоров АлександрНе Hibernateесть и другие варианты. В них бизнес-объекты не зависят от структуры БД и DAL(можно использовать и хранимые процедуры), это позволяет сочетать достоинства двух крайних,горячо здесь обсуждаемых, вариантов. Именно такой вариант и предлагается. Просто его почему-то упорно называют "вся бизнес-логика в СУБД". :)Нет. Это другой крайний вариант с другим люфтом. Взять хотя бы проверку на constraine c выводом вменяемых сообщений пользователю.Речь не о "проверке констрейтов", а о выполнении бизнес-функции "проверка правильности заявки" и "обработка приема заявки". Часть БЛ, размещенная, например, на СП - говорит о том, что Заявка моджет принять статус "принята" только после валидации. Метод валидации заявки вызывается там же. Код этого метода - может быть вызовом ХП, а может и не быть. Вывод результатов валидации пользователю - стандартен и выполняется тоже на СП. Метод приема заявки - тоже самое. Он может состоять из отправки содержимого заявки на e-mail вообще без обращения к БД. Или после обработки Заявки в БД дергать какой-нить внешний веб-сервис. Все зависит от выбранного обработчика[-ов]. Пример был приведен с использованием проверки и принятия Заявки средствами БД как раз чтобы показать преимущество разнесения бизнес-логики на несколько слоев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 12:04 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрНе HibernateЕгоров АлександрНе Hibernateесть и другие варианты. В них бизнес-объекты не зависят от структуры БД и DAL(можно использовать и хранимые процедуры), это позволяет сочетать достоинства двух крайних,горячо здесь обсуждаемых, вариантов. Именно такой вариант и предлагается. Просто его почему-то упорно называют "вся бизнес-логика в СУБД". :)Нет. Это другой крайний вариант с другим люфтом. Взять хотя бы проверку на constraine c выводом вменяемых сообщений пользователю.Речь не о "проверке констрейтов", а о выполнении бизнес-функции "проверка правильности заявки" и "обработка приема заявки". Часть БЛ, размещенная, например, на СП - говорит о том, что Заявка моджет принять статус "принята" только после валидации. Метод валидации заявки вызывается там же. Код этого метода - может быть вызовом ХП, а может и не быть. Вывод результатов валидации пользователю - стандартен и выполняется тоже на СП. Метод приема заявки - тоже самое. Он может состоять из отправки содержимого заявки на e-mail вообще без обращения к БД. Или после обработки Заявки в БД дергать какой-нить внешний веб-сервис. Все зависит от выбранного обработчика[-ов]. Пример был приведен с использованием проверки и принятия Заявки средствами БД как раз чтобы показать преимущество разнесения бизнес-логики на несколько слоев. На мой скромный взгляд, пример для показа преимуществ выноса БЛ в БД выбран весьма неудачно. Валидацию,подсчет агрегатов, проще и удобней делать в ООП, не говоря уже о том, что процесс приема заявки может быть достаточно сложным. Добавьте хотя бы простую проверку на дубликаты в деталировке, рассмотрите крайние случаи, цифры будут не в пользу БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 12:58 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрВобщем-то я имел ввиду только системы, у которых вся бизнес-логика написана на объектно-ориентированном ЯВУ и работает с РСУБД через ORM не используя возможности этих СУБД по обработке данных.МЫ вроде бы не недостатки каких-то конкретных систем здесь обсуждаем, а некотрые общие архитектурные принципы. Можно найти огромное количество плохих систем построенных на любом архитектурном принципе. Но само наличие таких систем не доказывает, что принципы плохи. Тут надо либо статистикой оперировать, либо логические доказательства приводить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 13:09 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyЕгоров АлександрВобщем-то я имел ввиду только системы, у которых вся бизнес-логика написана на объектно-ориентированном ЯВУ и работает с РСУБД через ORM не используя возможности этих СУБД по обработке данных.МЫ вроде бы не недостатки каких-то конкретных систем здесь обсуждаем, а некотрые общие архитектурные принципы. Можно найти огромное количество плохих систем построенных на любом архитектурном принципе. Но само наличие таких систем не доказывает, что принципы плохи. Тут надо либо статистикой оперировать, либо логические доказательства приводить. За доказательствами далеко ходить не нужно. Достаточно рассмотреть для сравнения не идеальный вариант, а с ошибками ввода, которые могут повторяться. Учесть валидацию, контроль на дубликаты и добавить необходимость подсчета итоговой суммы хотя бы для 10 строк. Все это проще, быстрее, внятней для пользователя, лучше делать на клиенте с меньшей нагрузкой на БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 13:38 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Не Hibarnateа мой скромный взгляд, пример для показа преимуществ выноса БЛ в БД выбран весьма неудачно. Валидацию,подсчет агрегатов, проще и удобней делать в ООП, не говоря уже о том, что процесс приема заявки может быть достаточно сложным. Добавьте хотя бы простую проверку на дубликаты в деталировке, рассмотрите крайние случаи, цифры будут не в пользу БД.Ну, не знаю. По условию задачи данные для проверки все были в БД, поэтому и проверку проще было сделать в БД. Проверка состояла бы из единственно запроса. Дубликаты и агрегаты я бы тоже делал не в БД, а в форме ввода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 13:53 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрПроверка состояла бы из единственно запроса. Если для реализации проверки в БД достаточно одно запроса, то почему в считаете, что для реализации той же проверки в среднем слое запросов потребуется больше? В крайнем случае можно "тупо" текст хранимой процедуры переписать на язык СП и количество запросов будет ровно тем же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 13:59 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey, Статистики или логических доказательств преимуществ архитектуры "все только на сп и только на ЯВУ" что-то вообще не видно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 14:00 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрНе Hibarnateа мой скромный взгляд, пример для показа преимуществ выноса БЛ в БД выбран весьма неудачно. Валидацию,подсчет агрегатов, проще и удобней делать в ООП, не говоря уже о том, что процесс приема заявки может быть достаточно сложным. Добавьте хотя бы простую проверку на дубликаты в деталировке, рассмотрите крайние случаи, цифры будут не в пользу БД.Ну, не знаю. По условию задачи данные для проверки все были в БД, поэтому и проверку проще было сделать в БД. Проверка состояла бы из единственно запроса. Дубликаты и агрегаты я бы тоже делал не в БД, а в форме ввода. Если даже запрос на валидацию единственный, он достаточно мутный, если выводить подробную информацию для пользователя. Вместо моментального показа неверно введенного значения с пояснением, выводим кашу со списком ошибок, пользователю нужно запомнить все, найти нужное место, исправить, еще раз подтвердить ввод. Позиций может быть много, процесс растянется до бесконечности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 14:11 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрСтатистики или логических доказательств преимуществ архитектуры "все только на сп и только на ЯВУ" что-то вообще не видно...Во-первых, если вы со мной оппонируете, то покажте, где я предлагал "все только на сп и ЯВУ". Во-вторых, задумайтесь (или погуглите) о том почему объектное программирование вытесняет процедурное. Ну и в-третьих, постарайтесь все-таки сформилировать какую архитектуру в рамках данного обсуждения вы поддерживаете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 14:13 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрBogdanov Andrey, Статистики или логических доказательств преимуществ архитектуры "все только на сп и только на ЯВУ" что-то вообще не видно... Почему не видно? Можно посмотреть статистику и стоны относительно 1С. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 14:13 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyЕгоров АлександрСтатистики или логических доказательств преимуществ архитектуры "все только на сп и только на ЯВУ" что-то вообще не видно...Во-первых, если вы со мной оппонируете, то покажте, где я предлагал "все только на сп и ЯВУ". Во-вторых, задумайтесь (или погуглите) о том почему объектное программирование вытесняет процедурное. Ну и в-третьих, постарайтесь все-таки сформилировать какую архитектуру в рамках данного обсуждения вы поддерживаете. 1. Вот тут я почему-то пришел к такой мысли. Если не прав - извините. 2. Я не сомневаюсь в преимуществах объектно-ориентированного программирования перед процедурным. Я сомневаюсь в преимуществе объектно-ориентированной работы с данными в РСУБД используя технологиина базе ORM. 3. Я поддерживаю "многослойную" архитектуру для бизнес-приложений. С уклоном в сторону "манипуляцией данными лучше всего на уровне СУБД". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 16:40 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров АлександрЯ сомневаюсь в преимуществе объектно-ориентированной работы с данными в РСУБД используя технологиина базе ORM.Я опять вас не понимаю. Что значит "объектно-ориентированная работа с данными"? Вообще, что вы называете "работой с данными". У меня ни в одной системе задачи "работы с данными" не возникало. Возникали задачи реализации того или иного бизнес-процесса или "user-case". Иногда от аналитиков исходят некоторые требования к структуре данных (хотя чаще структура появляется уже в процессе разбора требований по бизнес-процессам), но никаких требований к "работе с данными" я не видел. И по-моему опыту, реализация бизнес-процессов на ОО-языках происходит эффективнее (по скорости реализации и по простоте внесения изменений). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2010, 12:04 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyИ по-моему опыту, реализация бизнес-процессов на ОО-языках происходит эффективнее (по скорости реализации и по простоте внесения изменений). с чем сравнивали? По моим исследованиям, подтвержденным конкретным проектами, скорость реализации, простота сопровождения и внесения изменений в системы поддержки бизнес-процессов в SOA архитектуре просто на порядки превосходит OO-программирование этих же БП. Как может императивное программирование, пусть даже завернутое в ОО фантик, быть быстрее и проще декларативного - загадка. Задайте себе этот вопрос и тоже попытайтесь на него ответить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2010, 12:40 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
iscrafmКак может императивное программирование, пусть даже завернутое в ОО фантик, быть быстрее и проще декларативного - загадка. Задайте себе этот вопрос и тоже попытайтесь на него ответить.Все встречавшиеся мне системы декларативного описания бизнес-логики на порядок сложнее для моего восприятия, чем императивное программирование. И соответственно требуют гораздо большего времени при попытке что-либо реализовать. Наверное мне попадались плохие системы. Даже чрезвычайно простой и понятный SQL большинству программистов дается гораздо хуже, чем С или Pascal. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2010, 15:01 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
iscrafm, Ну где же Ваша картинка с декларативным описанием условий?... ну помню, что Вы где-то на форуме показывали пример... вот только хоть убей, не могу вспомнить даже тему... тоже что-то было на тему "декларативное vs императивное"... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2010, 15:08 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Егоров Александр, постараюсь найти, просто сейчас в поездке, рабочего ноутбука нет с собой. Уже самому интересно, какую картинку Вы имеете ввиду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2010, 16:50 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
Bogdanov AndreyiscrafmКак может императивное программирование, пусть даже завернутое в ОО фантик, быть быстрее и проще декларативного - загадка. Задайте себе этот вопрос и тоже попытайтесь на него ответить.Все встречавшиеся мне системы декларативного описания бизнес-логики на порядок сложнее для моего восприятия, чем императивное программирование. И соответственно требуют гораздо большего времени при попытке что-либо реализовать. Наверное мне попадались плохие системы. Даже чрезвычайно простой и понятный SQL большинству программистов дается гораздо хуже, чем С или Pascal. понятно. спасибо за разъяснение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2010, 16:52 |
|
||
|
Где должна лежать бизнес-логика в мнгоуровневом приложении
|
|||
|---|---|---|---|
|
#18+
iscrafm, нашел только Ваш конструктор проводок. А была еще картинка, где "внутренности" бизнес-функции описывалась exel-подобными формулами и скармливалась сервису на исполнение. Что-то типа: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2010, 17:48 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36449279&tid=1542824]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
155ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
92ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 545ms |

| 0 / 0 |
