Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Разработка информационных систем Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Помогите определиться с трехзвенкой  [new]
Johny999
Member

Откуда:
Сообщений: 8
Здравствуйте уважаемые коллеги!
Есть проект: толстый клиент на Delphi7, MySQL. Примерно 300 форм, 200 таблиц в БД, до 20 млн записей в таблице, объем данных до 100 Гб (есть таблицы с файлами). Проекту 10 лет.
Сейчас задумались об изменении структуры "основы основ". Не то, чтобы база была спроектирована неверно, просто сейчас она применяется не совсем для того, для чего изначально была задумана. Переделка затронет 70% кода (в основном поменяются запросы к БД).
Соответственно, задумались над тем, чтобы переписать (конечно, хочется многие наработки как-то попроще перенести) систему. За одно решить основную проблему, которую мы сейчас имеем на связке "толстый клиент на Delphi7, MySQL" - безопасность. Для этого, очевидно, нужна трехзвенка, чтобы сервер приложений контролировал права пользователей. Ну и еще плюс - сразу иметь некие веб-сервисы, которыми можно было бы интегрироваться со всевозможными другими системами и веб-интерфейсами. Сервер менять не предполагаем, т.к. мы хорошо "умеем его готовить", и чтобы там ни говорили - он надежен, выдерживает большие нагрузки, функционален (используем триггеры, ХП и т.д.), и бесплатен (что, пожалуй, самое главное, т.к. продукт рассчитан в том числе на небольшие и не богатые компании).
После переработки планируется использование с нагрузкой от 1 до 1000 человек одновременно.
Посоветуйте современное средство (или набор средств/технологий/сред разработки), что можно было бы рассматривать как платформу для перехода. Какими средствами делать серверную и клиентскую части.
Веб-интерфейс в силу определенных причин отметается сразу.
Была у меня идея писать серверную часть на PHP, и клиентам на тех же дельфях общаться с ней XML-запросами. У этого есть плюс - сервер приложений вместе с SQL-сервером смогли бы жить вместе на *nix платформах (у нас сейчас несколько серверов работает по linux, в основном под ubuntu. Основная масса - под виндой). Однако, пишут, что хорошо, когда сервер приложений может кэшировать у себя определенные не часто меняющиеся данные, а на PHP этого я так понимаю, не получится. Еще - решение выглядит каким-то надуманным. Ощущение, что я изобретаю велосипед, а все давно пользуются какими-то интегрированными средами, которые делают сразу и сервер и клиент и протокол между ними, а я об этом ничего не знаю. В сети ничего толком не нашел.
От дельфи хочется уйти, т.к., вроде бы среда умирающая. Однако программисты у нас все на дельфи. И пишем на дельфях не замечая его "ущербности" (как многие критики пишут).
Какие подскажете идеи? На чем сейчас делают подобные проекты?
19 фев 14, 04:39    [15586794]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
mad_nazgul
Member

Откуда:
Сообщений: 4918
Johny999,

Все зависит готовы вы "уйти" с Delphi и куда "уйти".
1) Можно остаться на Delphi . Благо писать трехзвенку можно было с 3 версии.
2) Можно уйти на .NET. Есть версии Delphi которые работают с .NET. С постепенным переходом на C#
3) Можно уйти на Java. Но это надо сразу и полностью переписывать все приложение.

P.S. Я бы остановился на 1) варианте.
19 фев 14, 07:45    [15586884]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Если хотите уйти то в чем вопрос?
Работать будет для всех 3х вариантов.
Delphi заточен под веб не очень.
19 фев 14, 08:04    [15586903]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
iscrafm
Member [заблокирован]

Откуда:
Сообщений: 35350
Johny999
От дельфи хочется уйти, т.к., вроде бы среда умирающая. Однако программисты у нас все на дельфи. И пишем на дельфях не замечая его "ущербности" (как многие критики пишут).

а вы среду выбираете по каким критериям? Уверены что она "умрет" быстрее продукта, который вы разрабатываете с ее помощью?
19 фев 14, 11:27    [15588057]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
iscrafm
Member [заблокирован]

Откуда:
Сообщений: 35350
Petro123
Delphi заточен под веб не очень.

что означает "заточка"?
19 фев 14, 11:27    [15588063]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
rockclimber
Member

Откуда: у меня в голове опилки?
Сообщений: 11086
Johny999
За одно решить основную проблему, которую мы сейчас имеем на связке "толстый клиент на Delphi7, MySQL" - безопасность. Для этого, очевидно, нужна трехзвенка, чтобы сервер приложений контролировал права пользователей.
Ох... Не знаю, что вас заставило так думать, но я с таким мнением категорически несогласен. Неужели в MySQL нет никаких средств контроля доступа?
Johny999
От дельфи хочется уйти, т.к., вроде бы среда умирающая.
Не умирающая, а малопопулярная в силу неэффективного маркетинга и всеобщей болезненой моды "на веб-формачки". Это, мягко говоря, разные вещи.
19 фев 14, 11:47    [15588278]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
iscrafm
Petro123
Delphi заточен под веб не очень.

что означает "заточка"?

Excell заточен под таблички лучше чем Ворд (фольклёр)
19 фев 14, 11:59    [15588399]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
iscrafm
Member [заблокирован]

Откуда:
Сообщений: 35350
Petro123
iscrafm
пропущено...

что означает "заточка"?

Excell заточен под таблички лучше чем Ворд (фольклёр)

ну на делфи клиентские веб-приложения и не пишутся. А сервер, который отдает информацию клиенту, в том же JSON и др. - почему бы и нет.
19 фев 14, 12:12    [15588556]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
iscrafm
А сервер, который отдает информацию клиенту, в том же JSON и др. - почему бы и нет.

Там много чего....
Если БЛ на АппСервере, то нужен ОРМ и т.д.
А иначе какая 3-х звенка.
19 фев 14, 12:22    [15588664]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
iscrafm
Member [заблокирован]

Откуда:
Сообщений: 35350
Petro123
iscrafm
А сервер, который отдает информацию клиенту, в том же JSON и др. - почему бы и нет.

Там много чего....
Если БЛ на АппСервере, то нужен ОРМ и т.д.
А иначе какая 3-х звенка.

к примеру у нас БЛ на APP сервере или в СУБД. Никакие ORM и т.д. не нужны. По разному системы строятся
19 фев 14, 12:39    [15588850]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
iscrafm,
у вас фреймворк. Это оффтоп.
Т.к. фреймворк можно хоть на Assemblere писать.
19 фев 14, 12:45    [15588937]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
iscrafm
Member [заблокирован]

Откуда:
Сообщений: 35350
Petro123
iscrafm,
у вас фреймворк. Это оффтоп.
Т.к. фреймворк можно хоть на Assemblere писать.

почему оффтоп? На этом фреймворке такие же бизнес-приложения разрабатываются как и у ТС, т.е. задачи решаются те же. Фреймворк - это не вещь сама в себе. Это основа для приложений, которая просто наполняется этой самой бизнес-логикой. Тема этого топика - на чем разрабатывать трехвенку при наличии готовой уже системы на Delphi7. Ответ - начать с того же Delphi7, если речь не идет о наличии каких-то сторонних причин, не позволяющих этого сделать.
19 фев 14, 12:51    [15588995]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
iscrafm,
А - есть платформа ---> создать ИС
Б - есть платформа ---> создать фреймворк-платформу ---> создать ИС на фреймворке

пусть аффтар топика решает, но архитектура и ответы будут разные по А и Б
Удачи!
19 фев 14, 13:36    [15589581]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
iscrafm
Member [заблокирован]

Откуда:
Сообщений: 35350
Petro123
iscrafm,
А - есть платформа ---> создать ИС
Б - есть платформа ---> создать фреймворк-платформу ---> создать ИС на фреймворке

пусть аффтар топика решает, но архитектура и ответы будут разные по А и Б
Удачи!

Архитектура в обоих случаях одинаковая. Вопрос только в том, на каком шаге остановиться: ограничиться только платформой или наполнить ее содержанием
19 фев 14, 13:59    [15589904]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
OFF
iscrafm
Архитектура в обоих случаях одинаковая

угу.
В А я не делаю ГУИ окно по привязке формы 1 ко многим. Т.к. программисту оно не нужно.
У тебя оно есть.
19 фев 14, 14:20    [15590153]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
iscrafm
Member [заблокирован]

Откуда:
Сообщений: 35350
Petro123
я не делаю ГУИ окно по привязке формы 1 ко многим. Т.к. программисту оно не нужно.
У тебя оно есть.

значит тебе оно не нужно. Мне нужно, потому что у меня много проектов и они постоянно требуют внесения каких-то изменений как можно более простым способом. Но это уже настолько "выше" самой платформы...
19 фев 14, 14:33    [15590280]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
krapotkin
Member

Откуда: Екатеринбург
Сообщений: 688
Отвечу по существу
работаю в Delphi XE3, XE5
трех-(3++)-звёнка - довольно удобная вещь

есть у меня один проект:

1) изначально - полноценный толстый клиент на Delphi + сервер Firebird
2) появился тонкий клиент на Андроид. написан на Java/Eclipse с применением Datasnap.
3) появился промежуточный сервер данных для общения с тонким клиентом на Андроиде. Принимает запросы Datasnap и лазит в БД Firebird
4) для чисто информационных и мало-мало действий целей появился HTML-клиент (JQuery + JSON)
5) данные для него предоставляет специальный Web-сервер (Delphi) который берет нужные данные на сервере данных

все части проекта чувствуют себя нормально и адекватно требуемым целям
19 фев 14, 16:36    [15591446]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
krapotkin
все части проекта чувствуют себя нормально и адекватно требуемым целям

ну и замечательно).
1 - БЛ в БД в хранимках?
2 - Начали на Java....вполне потом на неё всё и перепишете.
3- Как согласовываете новую БД и параллельную старую?
4,5 - получается что п.5 только из-за Delphi
PS
В D_XE5 поддержки Андроид не появилось?
19 фев 14, 17:17    [15591862]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
krapotkin
Member

Откуда: Екатеринбург
Сообщений: 688
1) не всякая БЛ укладывается в хранимки, присутствует немного сверху...
2) за время разработки не раз похвалил Delphi, так что и десктоп и сервера на ней и останутся 100% )))
3) нет новой и старой БД. она одна
4) для задачи "просто смотреть" на мобилах, планшетах и смарт-холодильниках иного варианта чем HTML/JS вовсе нет
5) делать отдельный доступ к БД для HTML под к-нить PHP когда есть готовый дата-сервер вообще нет смысла.
Если бы не некоторые особенности задачи, web-сервер и дата-сервер вообще жили бы в одном модуле

экстраординарные новые фичи Delphi они как бы того, эмм..
пусть еще полежат чуток...
FireMonkey вон уже 3-я версия, а Copy/Paste на форме в IDE дает AV ))
У меня есть пара прог, которые "по-новому", но так - для того чтобы быть в теме.
19 фев 14, 18:01    [15592316]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
Johny999
Member

Откуда:
Сообщений: 8
Спасибо всем большое за обсуждение!
Сегодня я многое понял (с):
1) Дельфи - не такая мертвая среда, как мне казалось.
2) Дельфи достаточно функциональная среда, которая позволит сделать и серверную и клиентскую части. (правда, сервер придется держать только под виндой)
3) В таком случае мы сможем сделать плавный переход от текущей 2-х звенки к 3-х звенке. Сначала мы сделаем доступ к данным через специальную объектную модель документов, потом сделаем в этих объектах разделение на клиентскую и серверную часть, и разнесем их на разные машины. Причем это можно делать постепенно - на переходном этапе клиент будет коннектиться к серверу приложений по 2-м портам - SQL и сам сервер приложений. Прямые SQL-запросы сервер приложений будет транслировать через себя "насквозь" к SQL-серверу под своим подключением к SQL, чтобы транзакции от одного клиента шли под одним подключением.
4) Изменения основы-основ структуры данных тоже могут быть сделаны постепенно, сохраняя обратную совместимость, для плавного перехода.

rockclimber
Johny999
За одно решить основную проблему, которую мы сейчас имеем на связке "толстый клиент на Delphi7, MySQL" - безопасность. Для этого, очевидно, нужна трехзвенка, чтобы сервер приложений контролировал права пользователей.
Ох... Не знаю, что вас заставило так думать, но я с таким мнением категорически несогласен. Неужели в MySQL нет никаких средств контроля доступа?

Вот есть таблица клиентов. У каждый менеджер должен видеть только своих клиентов. Неужели в SQL-сервере (хоть в каком-то!) есть такая настройка прав, что на запрос "select * from clients" он вернет только тех, у кого в приджойненной таблице есть записи о причастности этого менеджера к этим клиентам?
20 фев 14, 17:49    [15600372]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Johny999,
Есть
20 фев 14, 18:47    [15600800]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Johny999,
Значит у тебя АппСервер тупо перенаправляет за просы?
Это прокси а не 3х звенка LOL
20 фев 14, 18:51    [15600814]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
iscrafm
Member [заблокирован]

Откуда:
Сообщений: 35350
Petro123
Johny999,
Значит у тебя АппСервер тупо перенаправляет за просы?

именно этим и занимается middle tier в трехзвенке.

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

ORACLE
Middle-tier servers also provide system-level services:

Remote access to clients and back-office systems

Session and transaction management

Security enforcement

Resource pooling


Можно конечно это назвать и прокси. Но это обычная трехзвенка. Просто в переводной комплитературе на русский действительно проповедовалось всегда, что среднее звено в трехзвенке - это какие-то мифические процедуры бизнес-логики. Но даже в википедии:
Application tier (business logic, logic tier, data access tier, or middle tier)
20 фев 14, 19:41    [15601056]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
rockclimber
Member

Откуда: у меня в голове опилки?
Сообщений: 11086
Johny999
rockclimber
пропущено...
Ох... Не знаю, что вас заставило так думать, но я с таким мнением категорически несогласен. Неужели в MySQL нет никаких средств контроля доступа?

Вот есть таблица клиентов. У каждый менеджер должен видеть только своих клиентов. Неужели в SQL-сервере (хоть в каком-то!) есть такая настройка прав, что на запрос "select * from clients" он вернет только тех, у кого в приджойненной таблице есть записи о причастности этого менеджера к этим клиентам?
Да, есть. В оракле точно, в MS SQL скорее всего тоже есть, и кажется даже в постгресе что-то такое то ли было, то ли планировалось. Гуглите по фразе Row level security - это общеупотребительный термин для подобной фичи. Я сам не пользовался, так что возможно в деталях выглядит немного иначе. В конце концов, стандарт SQL, если мне склероз не изменяет, требует от СУБД наличия функции current_user. Этой функции и одного view достаточно для реализации всего необходимого.
20 фев 14, 19:55    [15601131]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
Johny999
Member

Откуда:
Сообщений: 8
Petro123
Johny999,
Значит у тебя АппСервер тупо перенаправляет за просы?
Это прокси а не 3х звенка LOL

Нет. У меня его пока вообще нет. А когда появится - на переходном этапе будет часть именно проксить, а часть - иметь у себя бизнес-логику. Постепенно будем переводить бизнес-логику в него.

rockclimber
В конце концов, стандарт SQL, если мне склероз не изменяет, требует от СУБД наличия функции current_user. Этой функции и одного view достаточно для реализации всего необходимого.

Точно! Так mysql и предлагает делать: http://www.sqlmaestro.com/resources/all/row_level_security_mysql/
А я-то все думал - зачем они нужны, эти вьюхи... Похоже - только для этого. Или я еще чего-то не знаю?
21 фев 14, 00:00    [15602385]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26804
Johny999
Или я еще чего-то не знаю?
Риторический вопрос
21 фев 14, 02:45    [15602756]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Главное выбрать платформу по вкусу. Таблички можно и в ворд делать

Удачи.
21 фев 14, 07:54    [15602971]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
krapotkin
Member

Откуда: Екатеринбург
Сообщений: 688
Johny999
3) В таком случае мы сможем сделать плавный переход от текущей 2-х звенки к 3-х звенке. Сначала мы сделаем доступ к данным через специальную объектную модель документов, потом сделаем в этих объектах разделение на клиентскую и серверную часть, и разнесем их на разные машины. Причем это можно делать постепенно - на переходном этапе клиент будет коннектиться к серверу приложений по 2-м портам - SQL и сам сервер приложений. Прямые SQL-запросы сервер приложений будет транслировать через себя "насквозь" к SQL-серверу под своим подключением к SQL, чтобы транзакции от одного клиента шли под одним подключением.
4) Изменения основы-основ структуры данных тоже могут быть сделаны постепенно, сохраняя обратную совместимость, для плавного перехода.


мысли были примерно те же, кроме того, в сервер плавно переехало ядро БЛ из толстого клиента, соотв-но и разработка проще
и доступ к данным регулируется на промежуточном сервере более понятно, чем "row level security" ))
ну, и сразу перспективы коннекта с разнородных клиентов тоже большой плюс
21 фев 14, 10:14    [15603344]     Ответить | Цитировать Сообщить модератору
 Re: Помогите определиться с трехзвенкой  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
krapotkin
и сразу перспективы коннекта с разнородных клиентов тоже большой плюс

это не плюс.
Незачем делать изначального толстого даже в 2-х звенке (клиент-сервер)
21 фев 14, 10:19    [15603373]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Разработка информационных систем Ответить