|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
Здравствуйте уважаемые коллеги! Есть проект: толстый клиент на Delphi7, MySQL. Примерно 300 форм, 200 таблиц в БД, до 20 млн записей в таблице, объем данных до 100 Гб (есть таблицы с файлами). Проекту 10 лет. Сейчас задумались об изменении структуры "основы основ". Не то, чтобы база была спроектирована неверно, просто сейчас она применяется не совсем для того, для чего изначально была задумана. Переделка затронет 70% кода (в основном поменяются запросы к БД). Соответственно, задумались над тем, чтобы переписать (конечно, хочется многие наработки как-то попроще перенести) систему. За одно решить основную проблему, которую мы сейчас имеем на связке "толстый клиент на Delphi7, MySQL" - безопасность. Для этого, очевидно, нужна трехзвенка, чтобы сервер приложений контролировал права пользователей. Ну и еще плюс - сразу иметь некие веб-сервисы, которыми можно было бы интегрироваться со всевозможными другими системами и веб-интерфейсами. Сервер менять не предполагаем, т.к. мы хорошо "умеем его готовить", и чтобы там ни говорили - он надежен, выдерживает большие нагрузки, функционален (используем триггеры, ХП и т.д.), и бесплатен (что, пожалуй, самое главное, т.к. продукт рассчитан в том числе на небольшие и не богатые компании). После переработки планируется использование с нагрузкой от 1 до 1000 человек одновременно. Посоветуйте современное средство (или набор средств/технологий/сред разработки), что можно было бы рассматривать как платформу для перехода. Какими средствами делать серверную и клиентскую части. Веб-интерфейс в силу определенных причин отметается сразу. Была у меня идея писать серверную часть на PHP, и клиентам на тех же дельфях общаться с ней XML-запросами. У этого есть плюс - сервер приложений вместе с SQL-сервером смогли бы жить вместе на *nix платформах (у нас сейчас несколько серверов работает по linux, в основном под ubuntu. Основная масса - под виндой). Однако, пишут, что хорошо, когда сервер приложений может кэшировать у себя определенные не часто меняющиеся данные, а на PHP этого я так понимаю, не получится. Еще - решение выглядит каким-то надуманным. Ощущение, что я изобретаю велосипед, а все давно пользуются какими-то интегрированными средами, которые делают сразу и сервер и клиент и протокол между ними, а я об этом ничего не знаю. В сети ничего толком не нашел. От дельфи хочется уйти, т.к., вроде бы среда умирающая. Однако программисты у нас все на дельфи. И пишем на дельфях не замечая его "ущербности" (как многие критики пишут). Какие подскажете идеи? На чем сейчас делают подобные проекты? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2014, 04:39 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
Johny999, Все зависит готовы вы "уйти" с Delphi и куда "уйти". 1) Можно остаться на Delphi . Благо писать трехзвенку можно было с 3 версии. 2) Можно уйти на .NET. Есть версии Delphi которые работают с .NET. С постепенным переходом на C# 3) Можно уйти на Java. Но это надо сразу и полностью переписывать все приложение. P.S. Я бы остановился на 1) варианте. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2014, 07:45 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
Если хотите уйти то в чем вопрос? Работать будет для всех 3х вариантов. Delphi заточен под веб не очень. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2014, 08:04 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
Johny999От дельфи хочется уйти, т.к., вроде бы среда умирающая. Однако программисты у нас все на дельфи. И пишем на дельфях не замечая его "ущербности" (как многие критики пишут). а вы среду выбираете по каким критериям? Уверены что она "умрет" быстрее продукта, который вы разрабатываете с ее помощью? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2014, 11:27 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
Petro123Delphi заточен под веб не очень. что означает "заточка"? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2014, 11:27 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
Johny999За одно решить основную проблему, которую мы сейчас имеем на связке "толстый клиент на Delphi7, MySQL" - безопасность. Для этого, очевидно, нужна трехзвенка, чтобы сервер приложений контролировал права пользователей.Ох... Не знаю, что вас заставило так думать, но я с таким мнением категорически несогласен. Неужели в MySQL нет никаких средств контроля доступа? Johny999От дельфи хочется уйти, т.к., вроде бы среда умирающая.Не умирающая, а малопопулярная в силу неэффективного маркетинга и всеобщей болезненой моды "на веб-формачки". Это, мягко говоря, разные вещи. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2014, 11:47 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
iscrafmPetro123Delphi заточен под веб не очень. что означает "заточка"? Excell заточен под таблички лучше чем Ворд (фольклёр) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2014, 11:59 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
Petro123iscrafmпропущено... что означает "заточка"? Excell заточен под таблички лучше чем Ворд (фольклёр) ну на делфи клиентские веб-приложения и не пишутся. А сервер, который отдает информацию клиенту, в том же JSON и др. - почему бы и нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2014, 12:12 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
iscrafmА сервер, который отдает информацию клиенту, в том же JSON и др. - почему бы и нет. Там много чего.... Если БЛ на АппСервере, то нужен ОРМ и т.д. А иначе какая 3-х звенка. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2014, 12:22 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
Petro123iscrafmА сервер, который отдает информацию клиенту, в том же JSON и др. - почему бы и нет. Там много чего.... Если БЛ на АппСервере, то нужен ОРМ и т.д. А иначе какая 3-х звенка. к примеру у нас БЛ на APP сервере или в СУБД. Никакие ORM и т.д. не нужны. По разному системы строятся ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2014, 12:39 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
iscrafm, у вас фреймворк. Это оффтоп. Т.к. фреймворк можно хоть на Assemblere писать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2014, 12:45 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
Petro123iscrafm, у вас фреймворк. Это оффтоп. Т.к. фреймворк можно хоть на Assemblere писать. почему оффтоп? На этом фреймворке такие же бизнес-приложения разрабатываются как и у ТС, т.е. задачи решаются те же. Фреймворк - это не вещь сама в себе. Это основа для приложений, которая просто наполняется этой самой бизнес-логикой. Тема этого топика - на чем разрабатывать трехвенку при наличии готовой уже системы на Delphi7. Ответ - начать с того же Delphi7, если речь не идет о наличии каких-то сторонних причин, не позволяющих этого сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2014, 12:51 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
iscrafm, А - есть платформа ---> создать ИС Б - есть платформа ---> создать фреймворк-платформу ---> создать ИС на фреймворке пусть аффтар топика решает, но архитектура и ответы будут разные по А и Б Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2014, 13:36 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
Petro123iscrafm, А - есть платформа ---> создать ИС Б - есть платформа ---> создать фреймворк-платформу ---> создать ИС на фреймворке пусть аффтар топика решает, но архитектура и ответы будут разные по А и Б Удачи! Архитектура в обоих случаях одинаковая. Вопрос только в том, на каком шаге остановиться: ограничиться только платформой или наполнить ее содержанием ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2014, 13:59 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
OFF iscrafmАрхитектура в обоих случаях одинаковая угу. В А я не делаю ГУИ окно по привязке формы 1 ко многим. Т.к. программисту оно не нужно. У тебя оно есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2014, 14:20 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
Petro123я не делаю ГУИ окно по привязке формы 1 ко многим. Т.к. программисту оно не нужно. У тебя оно есть. значит тебе оно не нужно. Мне нужно, потому что у меня много проектов и они постоянно требуют внесения каких-то изменений как можно более простым способом. Но это уже настолько "выше" самой платформы... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2014, 14:33 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
Отвечу по существу работаю в Delphi XE3, XE5 трех-(3++)-звёнка - довольно удобная вещь есть у меня один проект: 1) изначально - полноценный толстый клиент на Delphi + сервер Firebird 2) появился тонкий клиент на Андроид. написан на Java/Eclipse с применением Datasnap. 3) появился промежуточный сервер данных для общения с тонким клиентом на Андроиде. Принимает запросы Datasnap и лазит в БД Firebird 4) для чисто информационных и мало-мало действий целей появился HTML-клиент (JQuery + JSON) 5) данные для него предоставляет специальный Web-сервер (Delphi) который берет нужные данные на сервере данных все части проекта чувствуют себя нормально и адекватно требуемым целям ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2014, 16:36 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
krapotkinвсе части проекта чувствуют себя нормально и адекватно требуемым целям ну и замечательно). 1 - БЛ в БД в хранимках? 2 - Начали на Java....вполне потом на неё всё и перепишете. 3- Как согласовываете новую БД и параллельную старую? 4,5 - получается что п.5 только из-за Delphi PS В D_XE5 поддержки Андроид не появилось? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2014, 17:17 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
1) не всякая БЛ укладывается в хранимки, присутствует немного сверху... 2) за время разработки не раз похвалил Delphi, так что и десктоп и сервера на ней и останутся 100% ))) 3) нет новой и старой БД. она одна 4) для задачи "просто смотреть" на мобилах, планшетах и смарт-холодильниках иного варианта чем HTML/JS вовсе нет 5) делать отдельный доступ к БД для HTML под к-нить PHP когда есть готовый дата-сервер вообще нет смысла. Если бы не некоторые особенности задачи, web-сервер и дата-сервер вообще жили бы в одном модуле экстраординарные новые фичи Delphi они как бы того, эмм.. пусть еще полежат чуток... FireMonkey вон уже 3-я версия, а Copy/Paste на форме в IDE дает AV )) У меня есть пара прог, которые "по-новому", но так - для того чтобы быть в теме. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2014, 18:01 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
Спасибо всем большое за обсуждение! Сегодня я многое понял (с): 1) Дельфи - не такая мертвая среда, как мне казалось. 2) Дельфи достаточно функциональная среда, которая позволит сделать и серверную и клиентскую части. (правда, сервер придется держать только под виндой) 3) В таком случае мы сможем сделать плавный переход от текущей 2-х звенки к 3-х звенке. Сначала мы сделаем доступ к данным через специальную объектную модель документов, потом сделаем в этих объектах разделение на клиентскую и серверную часть, и разнесем их на разные машины. Причем это можно делать постепенно - на переходном этапе клиент будет коннектиться к серверу приложений по 2-м портам - SQL и сам сервер приложений. Прямые SQL-запросы сервер приложений будет транслировать через себя "насквозь" к SQL-серверу под своим подключением к SQL, чтобы транзакции от одного клиента шли под одним подключением. 4) Изменения основы-основ структуры данных тоже могут быть сделаны постепенно, сохраняя обратную совместимость, для плавного перехода. rockclimberJohny999За одно решить основную проблему, которую мы сейчас имеем на связке "толстый клиент на Delphi7, MySQL" - безопасность. Для этого, очевидно, нужна трехзвенка, чтобы сервер приложений контролировал права пользователей.Ох... Не знаю, что вас заставило так думать, но я с таким мнением категорически несогласен. Неужели в MySQL нет никаких средств контроля доступа? Вот есть таблица клиентов. У каждый менеджер должен видеть только своих клиентов. Неужели в SQL-сервере (хоть в каком-то!) есть такая настройка прав, что на запрос "select * from clients" он вернет только тех, у кого в приджойненной таблице есть записи о причастности этого менеджера к этим клиентам? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2014, 17:49 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
Johny999, Есть ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2014, 18:47 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
Johny999, Значит у тебя АппСервер тупо перенаправляет за просы? Это прокси а не 3х звенка LOL ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2014, 18:51 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
Petro123Johny999, Значит у тебя АппСервер тупо перенаправляет за просы? именно этим и занимается middle tier в трехзвенке. Как вариант среднее звено конечно может содержать и бизнес-логику. Но это всего лишь один вариант из нескольких. К примеру, среднее middle-tier сервер, предлагаемый ORACLE выполняет следующие функции: ORACLEMiddle-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.02.2014, 19:41 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
Johny999rockclimberпропущено... Ох... Не знаю, что вас заставило так думать, но я с таким мнением категорически несогласен. Неужели в MySQL нет никаких средств контроля доступа? Вот есть таблица клиентов. У каждый менеджер должен видеть только своих клиентов. Неужели в SQL-сервере (хоть в каком-то!) есть такая настройка прав, что на запрос "select * from clients" он вернет только тех, у кого в приджойненной таблице есть записи о причастности этого менеджера к этим клиентам?Да, есть. В оракле точно, в MS SQL скорее всего тоже есть, и кажется даже в постгресе что-то такое то ли было, то ли планировалось. Гуглите по фразе Row level security - это общеупотребительный термин для подобной фичи. Я сам не пользовался, так что возможно в деталях выглядит немного иначе. В конце концов, стандарт SQL, если мне склероз не изменяет, требует от СУБД наличия функции current_user. Этой функции и одного view достаточно для реализации всего необходимого. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2014, 19:55 |
|
Помогите определиться с трехзвенкой
|
|||
---|---|---|---|
#18+
Petro123Johny999, Значит у тебя АппСервер тупо перенаправляет за просы? Это прокси а не 3х звенка LOL Нет. У меня его пока вообще нет. А когда появится - на переходном этапе будет часть именно проксить, а часть - иметь у себя бизнес-логику. Постепенно будем переводить бизнес-логику в него. rockclimberВ конце концов, стандарт SQL, если мне склероз не изменяет, требует от СУБД наличия функции current_user. Этой функции и одного view достаточно для реализации всего необходимого. Точно! Так mysql и предлагает делать: http://www.sqlmaestro.com/resources/all/row_level_security_mysql/ А я-то все думал - зачем они нужны, эти вьюхи... Похоже - только для этого. Или я еще чего-то не знаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2014, 00:00 |
|
|
start [/forum/topic.php?fid=33&msg=38566465&tid=1547620]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
95ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 207ms |
0 / 0 |