Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7   вперед  Ctrl      все
 Клиентское приложение - Сервер Приложений - СУБД  [new]
Дядька с усами и часами
Member [заблокирован]

Откуда: Пресс-Служба
Сообщений: 14
Здравствуйте, уважаемые программисты!
Прошу поделиться соображениями вот о чём.
Пишу клиентские desktop приложения (C# WinForms) под Виндовс для работы с Базами Данных (речь о веб-приложениях пока не ведём, обсуждаем только desktop).
Клиентское приложение <----> СУБД
Напишите, какие по вашему мнению существуют преимущества у трёхзвенной схемы:
Клиентское приложение <----> Сервер Приложений <----> СУБД
Также буду рад прочесть о случаях из вашей практики в пользу той или иной точки зрения.
Спасибо.
17 июн 17, 10:56    [20571792]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 33424
Дядька с усами и часами,

на среднем слое можно реализовать какую-то бизнес логику, не на расширениях SQL.

Кроме этого, если нужно иногда задействовать какие-то другие компоненты или службы, например, послать с сервера сообщение по электронной почте или что-то в этом роде, из кода в базе данных на SQL это бывает достаточно трудно сделать. А со среднего звена никаких проблем. Вообще, если управление попадает в код на SQL, из него потом трудно выбраться куда-то ещё, кроме клиента СУБД.
19 июн 17, 02:29    [20573539]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 5967
Дядька с усами и часами
....
Напишите, какие по вашему мнению существуют преимущества у трёхзвенной схемы
....

если как у индусов, оплата по кол-ву строк кода==> можно больше написать кода ==> выше заработок
19 июн 17, 09:08    [20573693]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
Изопропил
Member

Откуда:
Сообщений: 30303
MasterZiv
на среднем слое можно реализовать какую-то бизнес логику, не на расширениях SQL.

особенно что касается разграничения прав доступа
19 июн 17, 09:35    [20573730]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
Дядька с усами и часами
Member [заблокирован]

Откуда: Пресс-Служба
Сообщений: 14
Leonid Kudryavtsev
можно больше написать кода ==> выше заработок
может быть ещё какие-то аргументы?
19 июн 17, 09:52    [20573781]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
Дядька с усами и часами
Member [заблокирован]

Откуда: Пресс-Служба
Сообщений: 14
Изопропил
MasterZiv
на среднем слое можно реализовать какую-то бизнес логику, не на расширениях SQL.

особенно что касается разграничения прав доступа
например? на среднем звене организовать свою систему юзеров-ролей-паролей, при том, что сам Сервер Приложений ломится в БД от имени одной и той же учётки? вы это имеете ввиду?
19 июн 17, 09:55    [20573785]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
schi
Member

Откуда: Москва
Сообщений: 2207
Дядька с усами и часами
Здравствуйте, уважаемые программисты!
Прошу поделиться соображениями вот о чём.
Пишу клиентские desktop приложения (C# WinForms) под Виндовс для работы с Базами Данных (речь о веб-приложениях пока не ведём, обсуждаем только desktop).
Клиентское приложение <----> СУБД
Напишите, какие по вашему мнению существуют преимущества у трёхзвенной схемы:
Клиентское приложение <----> Сервер Приложений <----> СУБД
Также буду рад прочесть о случаях из вашей практики в пользу той или иной точки зрения.
Спасибо.


А что, если слова начинать с заглавной буквы, это им дополнительный вес придает ? Просто интересно...
19 июн 17, 10:36    [20573871]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
просто я
Guest
Дядька с усами и часами
например? на среднем звене организовать свою систему юзеров-ролей-паролей, при том, что сам Сервер Приложений ломится в БД от имени одной и той же учётки? вы это имеете ввиду?

ну "свою систему юзеров-ролей-паролей" это ваше дело, но вот сбором "в одну кучку"/расчетами/пересчетами каких-то данных из разных систем и БД, чтоб не терять время на "...кучку..." на клиенте, а отдать ему сразу - можно наверное...
19 июн 17, 11:08    [20573956]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
alexk123
Member

Откуда:
Сообщений: 32
Сервер приложений позволяет много чего:
19 июн 17, 13:00    [20574363]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
alexk123
Member

Откуда:
Сообщений: 32
- организовать общие кэши, используя другую бесплатную базу типа кеу-value и т.п.
- минимизировать количество сессий на СУБД (важно, если лицензирование ведется по количеству сессий), требования к серверу СУБД становятся меньшими (как за счет меньшего количества сессий, так и переноса логики)
- появляются возможности масштабирования горизонтального (когда ERP вырастет до нескольких тысяч пользователей)
- ну и возможности языков типа JAVA и т.п., которые используются на серверах приложений, гораздо шире, чем языки СУБД
19 июн 17, 13:09    [20574402]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 5967
И нафига все это нужно?
В реальном бизнес приложении?

самопальные кэши - что бы потом делать самопальные блокировки? и самопальную транзакционность? а что, у СУБД кэши не предусмотрены? Интересна, какая нагрузка на приложение, что такая порнография понадобилась? Может просто научится индексами в БД пользоваться?

минимизировать количество сессий на СУБД (важно, если лицензирование ведется по количеству сессий) - сначала купить дорогую СУБД, а потом ее НЕ использовать? Если она не нужна, зачем тогда ее покупать?

появляются возможности масштабирования горизонтального - честно говоря, где горизонтальное масштабирование, а где вертикальное, я разбираюсь плохо. А просто СУБД с таким же успехом не отмасштабировать? если задача позволяет?

ну и возможности языков типа JAVA и т.п., которые используются на серверах приложений, гораздо шире, чем языки СУБД - ряд СУБД позволяют внутри себя использовать Java. Ну и СУБД надо использовать для обработки ДАННЫХ. А тут, может язык СУБД и не настолько "широк", но значительно УДОБНЕЕ (сужу по PL/SQL). А на Java, ряд дятлов вполне могут полную hibrnate'изацию и приложения, и БД устроить. После чего, hibernate и наступит. И приложению и серверу СУБД. Вот тут как раз и потребуются и кэши и горизонтальная масштабируемость. Сами себе создаем проблемы, потом сами и решаем.

Готов для бизнес приложения признать единственную реальную необходимость еще одного звена, недо-сервера приложений: сервер отчетов или сервер job'ов. Который будет заниматься исключительно отчетами и/или долго рассчитываемыми job'ами (например массовыми операциями)

IMHO & AFAIK
19 июн 17, 13:25    [20574467]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 5967
Дядька с усами и часами
Leonid Kudryavtsev
можно больше написать кода ==> выше заработок
может быть ещё какие-то аргументы?

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

Ну и в глобальном масштабе: борьба с безработицей, повышение жизненного уровня широких слоев программисткого населения, как следствие - рост спроса на товары и услуги, рост других отраслей производства (если Кейс и прочие теоретики капитализма правы)... в общем, плюсов много

Во всех других случаях, наверное, более простое решение и более выгодное.

IMHO & AFAIK
19 июн 17, 13:29    [20574488]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43636
Leonid Kudryavtsev
И нафига все это нужно?

Он же написал:
- workaround тормознутости СУБД при большом количестве запросов;
- workaround тормознутости СУБД при большом количестве сессий;
- workaround предела вертикального масштабирования;
- workaround неспособности программиста написать нужную логику на языке СУБД и/или приложения.
19 июн 17, 13:38    [20574518]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 5967
Dimitry Sibiryakov
Leonid Kudryavtsev
И нафига все это нужно?

....
- workaround неспособности программиста написать нужную логику на языке СУБД и/или приложения.

мне кажется, можно оставить только одно
все предыдущие - просто следствие данного пункта
19 июн 17, 13:51    [20574556]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
schi
Member

Откуда: Москва
Сообщений: 2207
https://habrahabr.ru/company/infopulse/blog/330708/
19 июн 17, 16:03    [20575109]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
Melkomyagkii_newbi
Member

Откуда: из прошлого
Сообщений: 1589
Leonid Kudryavtsev
Dimitry Sibiryakov
пропущено...

....
- workaround неспособности программиста написать нужную логику на языке СУБД и/или приложения.

мне кажется, можно оставить только одно
все предыдущие - просто следствие данного пункта


да почему следствие-то? зачем тратить ресурсы субд на создание и убивание сессий, если можно использовать коннекшн пулы? Конечно если полтора пользователя, то пофиг, но если предпологается какая-то нагрузка, то..
19 июн 17, 16:07    [20575124]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
alexk123
Member

Откуда:
Сообщений: 32
Leonid Kudryavtsev
И нафига все это нужно?
В реальном бизнес приложении?
сначала купить дорогую СУБД, а потом ее НЕ использовать? Если она не нужна, зачем тогда ее покупать?

IMHO & AFAIK


а зачем покупать эту самую дорогую СУБД? Только для того чтобы пользоваться ее языками типа PL SQL и т.п.? Сервера приложений как раз и позволяют не использовать дорогие СУБД а по возможности и не привязываться к ним. Кому то то достаточно и постгресс, а кому то и Oracle потребуется. Но если завяжитесь на бизнес логику внутри СУБД, то навечно и клиента "прикуете к ней", то сами уже не спрыгните. Есть бюджет клиента - и если окажется что покупка СУБД и лицензий на нее равна 99% бюджета, то это уже не ваш клиент :)

А так - можно скоплектовать систему из одного или нескольких бесплатного сервера приложений и одной или нескольких бесплатных СУБД. И все это будет работать на технике не самого высокого класса. Вы цену владения такой системы для клиента рассматривайте, а не то что вам лично внутри СУБД удобно бизнес-логику писать.
19 июн 17, 19:07    [20575850]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 5967
alexk123
...Но если завяжитесь на бизнес логику внутри СУБД, то навечно и клиента "прикуете к ней", то сами уже не спрыгните....

А так - можно скоплектовать систему из одного или нескольких бесплатного сервера приложений и одной или нескольких бесплатных СУБД. И все это будет работать на технике не самого высокого класса. Вы цену владения такой системы для клиента рассматривайте, а не то что вам лично внутри СУБД удобно бизнес-логику писать.[/quot]
19 июн 17, 19:15    [20575877]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 5967
Сорри (((
alexk123
...Но если завяжитесь на бизнес логику внутри СУБД, то навечно и клиента "прикуете к ней", то сами уже не спрыгните....

А так завяжитесь на сервер приложений и клиента "прикуете к нему"
alexk123
...А так - можно скоплектовать систему из одного или нескольких бесплатного сервера приложений и одной или нескольких бесплатных СУБД....

не очень понятно, чем Вам просто бесплатные СУБД не угодили
19 июн 17, 19:19    [20575884]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
White Owl
Member

Откуда:
Сообщений: 12052
Leonid Kudryavtsev
Сорри (((
alexk123
...Но если завяжитесь на бизнес логику внутри СУБД, то навечно и клиента "прикуете к ней", то сами уже не спрыгните....

А так завяжитесь на сервер приложений и клиента "прикуете к нему"
Да, но этот сервер приложений будете писать вы сами. А значит и все хотелки клиента можно будет реализовывать (ну хотя бы теоретически можно).
Впрочем, сам сервер приложений тоже будет в какой-то мере привязан к СУБД... И далеко не факт что его будет легко переписать на другую СУБД. Клиента править не понадобиться, но сервер приложений все-же нужно будет серьезно переписывать.

Leonid Kudryavtsev
alexk123
...А так - можно скоплектовать систему из одного или нескольких бесплатного сервера приложений и одной или нескольких бесплатных СУБД....

не очень понятно, чем Вам просто бесплатные СУБД не угодили
Бесплатные СУБД очень не нравятся менеджерам высокого звена. С точки зрения менеджера, лучше заплатить за лицензию и иметь возможность в случае чего потребовать от производителя помощь и/или подать на него в суд.
А за бесплатный софт (не только СУБД) не надо платить, но при этом, и за косяки в нем никого нельзя наказать.
И чем серьезнее контора, тем больше проявляется нелюбовь к бесплатному софту.
19 июн 17, 19:55    [20575939]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
Dima T
Member

Откуда:
Сообщений: 11299
White Owl
С точки зрения менеджера, лучше заплатить за лицензию и иметь ....

Откат. Увы, но так оно и есть.
19 июн 17, 20:13    [20575955]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 5967
Просто, если по каким-то причинам решили купить "серьезную" СУБД, IMHO очень глупо не пользоваться теме возможностями, которые она предоставляет и за которые заплачены деньги. Покупать и платить за лицензии и техподдержку Oracle и при этом использовать его на уровне только стандартного SQL... можно конечно, но, подозреваю, в этом случае, что Oracle, что MySQL, что Postgre SQL будуд совершенно одинаково. Тогда нафига его вообще покупать? (вопрос функционирование экономики по методу распилинга и откатинга не обсуждаем)

С таким же успехом, ради переносимости, можно вообще СУБД не использовать... текстовые файлы - наше все.

Кроме того, не очень понятно, как кэши, переноимости, СУБД независимость и прочее, связаны с сервером приложений.

Нужны Вам дополнительные кэши, при чем тут сервер приложений? С таким же успехом (и даже эффективнее) можно и на клиенте данные кэшировать.

Нужна Вам кросс-платформенность от СУБД, ну так кто мешает, написать клиент-сервер не используя специфических фичь базы данных. С таким же успехом и клиент-сервер можно сделать независимым от вендора СУБД. Исключительно вопрос начального требований ТЗ и денег на тестирование. Что клиент-сервер нужно будет тестировать на разных СУБД, что трехзвенку, так же на разных СУБД нужно независимо тестировать. И так далее.

Главный недостаток трехзвенки, такой же, как и у двух-звенки. Увеличивается сложность системы, увеличивается кол-во технологий. Нужен больше штат.

На старом, добром FoxPro - нужен один человек. Знающий FoxPro

Двух звенка, нужны C# и SQL'шник. Два человека.

Трех звенка: JavaScript, Java, SQL. Три человека

Ну или ищем full stack. Который об индексах знает, что "есть такая вещь и вроде позволяет скорость выполнения запроса увеличить". Или возьмем ORM, насоздаем объекты, а дальше оно все за нас само сделать должно.

IMHO & AFAIK
19 июн 17, 20:19    [20575961]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 5229
Leonid Kudryavtsev,

горизонтальное масштабирование - добавим еще 10 серверов из г.и п., и например переведем на них какую то часть клиентов, например поставим в Сибири и туда всех китайцев
вертикальное - купим сервер на замену в 2 раза быстрее и в 10 раз дороже

для задач, которые хорошо параллелятся вариант 1 явно выгоднее

ну или веб - 2-звенкой трудно обойтись. ок веб не обсуждаем по условиям, но это пока не припрется директор с айпадом и не скажет - хочу...

про кэш на клиенте - это пока нет частых изменений - не для любой задачи пойдет

Еще про кэширование - что из стандартных готовых решений есть кроме таймстен?
19 июн 17, 22:36    [20576102]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 22601
Leonid Kudryavtsev
На старом, добром FoxPro - нужен один человек. Знающий FoxPro

И что это человек напишет?

Вот гуляют люди по торговому центру и заходят купить тур в Грецию.
Девушка выслушивает их пожелания и накидывает в корзину перелёт, трансферы, проживание, экскурсии, гида.
И делает это не по телефону, а через клиента к системе туроператора.
А система туроператора передаёт заказ принимающим партнёрам в Греции тоже уже не по телефону, или электронной почте, а через API к их сервисам.
И в отель бронь приходит не по факсу, и гид, встречающий приезжающих в аэропорту стоит уже не с бумажкой, где у него записана рассадка в автобусе, а с планшетом.

И не треснет ли одно место у человека, знающего FoxPro, всё это автоматизировать, тестировать, внедрять и поддерживать?
20 июн 17, 07:22    [20576356]     Ответить | Цитировать Сообщить модератору
 Re: Клиентское приложение - Сервер Приложений - СУБД  [new]
Дядька с усами и часами
Member [заблокирован]

Откуда: Пресс-Служба
Сообщений: 14
Теперь такой вопрос.
Вот все говорят "логика на сервере приложений".

Но как делать логику на среднем звене - если логика прежде всего упирается в данные, а данные - на стороне СУБД !
Получается, раз данными заправляет СУБД, значит и логикой заправляет она же?

Или имеется ввиду, что получив данные от клиента, сервер приложений (среднее звено) будет запрашивать у СУБД дополнительные данные из таблиц (именно из таблиц, раз логики на БД нет, то и процедур - нет) и сам будет оперировать этими данными?
20 июн 17, 08:34    [20576408]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7   вперед  Ctrl      все
Все форумы / Программирование Ответить