Гость
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Помогите определиться с трехзвенкой / 25 сообщений из 29, страница 1 из 2
19.02.2014, 04:39
    #38565384
Johny999
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
Здравствуйте уважаемые коллеги!
Есть проект: толстый клиент на Delphi7, MySQL. Примерно 300 форм, 200 таблиц в БД, до 20 млн записей в таблице, объем данных до 100 Гб (есть таблицы с файлами). Проекту 10 лет.
Сейчас задумались об изменении структуры "основы основ". Не то, чтобы база была спроектирована неверно, просто сейчас она применяется не совсем для того, для чего изначально была задумана. Переделка затронет 70% кода (в основном поменяются запросы к БД).
Соответственно, задумались над тем, чтобы переписать (конечно, хочется многие наработки как-то попроще перенести) систему. За одно решить основную проблему, которую мы сейчас имеем на связке "толстый клиент на Delphi7, MySQL" - безопасность. Для этого, очевидно, нужна трехзвенка, чтобы сервер приложений контролировал права пользователей. Ну и еще плюс - сразу иметь некие веб-сервисы, которыми можно было бы интегрироваться со всевозможными другими системами и веб-интерфейсами. Сервер менять не предполагаем, т.к. мы хорошо "умеем его готовить", и чтобы там ни говорили - он надежен, выдерживает большие нагрузки, функционален (используем триггеры, ХП и т.д.), и бесплатен (что, пожалуй, самое главное, т.к. продукт рассчитан в том числе на небольшие и не богатые компании).
После переработки планируется использование с нагрузкой от 1 до 1000 человек одновременно.
Посоветуйте современное средство (или набор средств/технологий/сред разработки), что можно было бы рассматривать как платформу для перехода. Какими средствами делать серверную и клиентскую части.
Веб-интерфейс в силу определенных причин отметается сразу.
Была у меня идея писать серверную часть на PHP, и клиентам на тех же дельфях общаться с ней XML-запросами. У этого есть плюс - сервер приложений вместе с SQL-сервером смогли бы жить вместе на *nix платформах (у нас сейчас несколько серверов работает по linux, в основном под ubuntu. Основная масса - под виндой). Однако, пишут, что хорошо, когда сервер приложений может кэшировать у себя определенные не часто меняющиеся данные, а на PHP этого я так понимаю, не получится. Еще - решение выглядит каким-то надуманным. Ощущение, что я изобретаю велосипед, а все давно пользуются какими-то интегрированными средами, которые делают сразу и сервер и клиент и протокол между ними, а я об этом ничего не знаю. В сети ничего толком не нашел.
От дельфи хочется уйти, т.к., вроде бы среда умирающая. Однако программисты у нас все на дельфи. И пишем на дельфях не замечая его "ущербности" (как многие критики пишут).
Какие подскажете идеи? На чем сейчас делают подобные проекты?
...
Рейтинг: 0 / 0
19.02.2014, 07:45
    #38565425
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
Johny999,

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

P.S. Я бы остановился на 1) варианте.
...
Рейтинг: 0 / 0
19.02.2014, 08:04
    #38565432
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
Если хотите уйти то в чем вопрос?
Работать будет для всех 3х вариантов.
Delphi заточен под веб не очень.
...
Рейтинг: 0 / 0
19.02.2014, 11:27
    #38565684
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
Johny999От дельфи хочется уйти, т.к., вроде бы среда умирающая. Однако программисты у нас все на дельфи. И пишем на дельфях не замечая его "ущербности" (как многие критики пишут).
а вы среду выбираете по каким критериям? Уверены что она "умрет" быстрее продукта, который вы разрабатываете с ее помощью?
...
Рейтинг: 0 / 0
19.02.2014, 11:27
    #38565687
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
Petro123Delphi заточен под веб не очень.
что означает "заточка"?
...
Рейтинг: 0 / 0
19.02.2014, 11:47
    #38565743
rockclimber
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
Johny999За одно решить основную проблему, которую мы сейчас имеем на связке "толстый клиент на Delphi7, MySQL" - безопасность. Для этого, очевидно, нужна трехзвенка, чтобы сервер приложений контролировал права пользователей.Ох... Не знаю, что вас заставило так думать, но я с таким мнением категорически несогласен. Неужели в MySQL нет никаких средств контроля доступа?
Johny999От дельфи хочется уйти, т.к., вроде бы среда умирающая.Не умирающая, а малопопулярная в силу неэффективного маркетинга и всеобщей болезненой моды "на веб-формачки". Это, мягко говоря, разные вещи.
...
Рейтинг: 0 / 0
19.02.2014, 11:59
    #38565781
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
iscrafmPetro123Delphi заточен под веб не очень.
что означает "заточка"?
Excell заточен под таблички лучше чем Ворд (фольклёр)
...
Рейтинг: 0 / 0
19.02.2014, 12:12
    #38565817
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
Petro123iscrafmпропущено...

что означает "заточка"?
Excell заточен под таблички лучше чем Ворд (фольклёр)
ну на делфи клиентские веб-приложения и не пишутся. А сервер, который отдает информацию клиенту, в том же JSON и др. - почему бы и нет.
...
Рейтинг: 0 / 0
19.02.2014, 12:22
    #38565833
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
iscrafmА сервер, который отдает информацию клиенту, в том же JSON и др. - почему бы и нет.
Там много чего....
Если БЛ на АппСервере, то нужен ОРМ и т.д.
А иначе какая 3-х звенка.
...
Рейтинг: 0 / 0
19.02.2014, 12:39
    #38565869
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
Petro123iscrafmА сервер, который отдает информацию клиенту, в том же JSON и др. - почему бы и нет.
Там много чего....
Если БЛ на АппСервере, то нужен ОРМ и т.д.
А иначе какая 3-х звенка.
к примеру у нас БЛ на APP сервере или в СУБД. Никакие ORM и т.д. не нужны. По разному системы строятся
...
Рейтинг: 0 / 0
19.02.2014, 12:45
    #38565895
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
iscrafm,
у вас фреймворк. Это оффтоп.
Т.к. фреймворк можно хоть на Assemblere писать.
...
Рейтинг: 0 / 0
19.02.2014, 12:51
    #38565909
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
Petro123iscrafm,
у вас фреймворк. Это оффтоп.
Т.к. фреймворк можно хоть на Assemblere писать.
почему оффтоп? На этом фреймворке такие же бизнес-приложения разрабатываются как и у ТС, т.е. задачи решаются те же. Фреймворк - это не вещь сама в себе. Это основа для приложений, которая просто наполняется этой самой бизнес-логикой. Тема этого топика - на чем разрабатывать трехвенку при наличии готовой уже системы на Delphi7. Ответ - начать с того же Delphi7, если речь не идет о наличии каких-то сторонних причин, не позволяющих этого сделать.
...
Рейтинг: 0 / 0
19.02.2014, 13:36
    #38566022
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
iscrafm,
А - есть платформа ---> создать ИС
Б - есть платформа ---> создать фреймворк-платформу ---> создать ИС на фреймворке

пусть аффтар топика решает, но архитектура и ответы будут разные по А и Б
Удачи!
...
Рейтинг: 0 / 0
19.02.2014, 13:59
    #38566088
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
Petro123iscrafm,
А - есть платформа ---> создать ИС
Б - есть платформа ---> создать фреймворк-платформу ---> создать ИС на фреймворке

пусть аффтар топика решает, но архитектура и ответы будут разные по А и Б
Удачи!
Архитектура в обоих случаях одинаковая. Вопрос только в том, на каком шаге остановиться: ограничиться только платформой или наполнить ее содержанием
...
Рейтинг: 0 / 0
19.02.2014, 14:20
    #38566142
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
OFF
iscrafmАрхитектура в обоих случаях одинаковая
угу.
В А я не делаю ГУИ окно по привязке формы 1 ко многим. Т.к. программисту оно не нужно.
У тебя оно есть.
...
Рейтинг: 0 / 0
19.02.2014, 14:33
    #38566184
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
Petro123я не делаю ГУИ окно по привязке формы 1 ко многим. Т.к. программисту оно не нужно.
У тебя оно есть.
значит тебе оно не нужно. Мне нужно, потому что у меня много проектов и они постоянно требуют внесения каких-то изменений как можно более простым способом. Но это уже настолько "выше" самой платформы...
...
Рейтинг: 0 / 0
19.02.2014, 16:36
    #38566465
krapotkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
Отвечу по существу
работаю в Delphi XE3, XE5
трех-(3++)-звёнка - довольно удобная вещь

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

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

все части проекта чувствуют себя нормально и адекватно требуемым целям
...
Рейтинг: 0 / 0
19.02.2014, 17:17
    #38566543
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
krapotkinвсе части проекта чувствуют себя нормально и адекватно требуемым целям
ну и замечательно).
1 - БЛ в БД в хранимках?
2 - Начали на Java....вполне потом на неё всё и перепишете.
3- Как согласовываете новую БД и параллельную старую?
4,5 - получается что п.5 только из-за Delphi
PS
В D_XE5 поддержки Андроид не появилось?
...
Рейтинг: 0 / 0
19.02.2014, 18:01
    #38566622
krapotkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
1) не всякая БЛ укладывается в хранимки, присутствует немного сверху...
2) за время разработки не раз похвалил Delphi, так что и десктоп и сервера на ней и останутся 100% )))
3) нет новой и старой БД. она одна
4) для задачи "просто смотреть" на мобилах, планшетах и смарт-холодильниках иного варианта чем HTML/JS вовсе нет
5) делать отдельный доступ к БД для HTML под к-нить PHP когда есть готовый дата-сервер вообще нет смысла.
Если бы не некоторые особенности задачи, web-сервер и дата-сервер вообще жили бы в одном модуле

экстраординарные новые фичи Delphi они как бы того, эмм..
пусть еще полежат чуток...
FireMonkey вон уже 3-я версия, а Copy/Paste на форме в IDE дает AV ))
У меня есть пара прог, которые "по-новому", но так - для того чтобы быть в теме.
...
Рейтинг: 0 / 0
20.02.2014, 17:49
    #38567904
Johny999
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
Спасибо всем большое за обсуждение!
Сегодня я многое понял (с):
1) Дельфи - не такая мертвая среда, как мне казалось.
2) Дельфи достаточно функциональная среда, которая позволит сделать и серверную и клиентскую части. (правда, сервер придется держать только под виндой)
3) В таком случае мы сможем сделать плавный переход от текущей 2-х звенки к 3-х звенке. Сначала мы сделаем доступ к данным через специальную объектную модель документов, потом сделаем в этих объектах разделение на клиентскую и серверную часть, и разнесем их на разные машины. Причем это можно делать постепенно - на переходном этапе клиент будет коннектиться к серверу приложений по 2-м портам - SQL и сам сервер приложений. Прямые SQL-запросы сервер приложений будет транслировать через себя "насквозь" к SQL-серверу под своим подключением к SQL, чтобы транзакции от одного клиента шли под одним подключением.
4) Изменения основы-основ структуры данных тоже могут быть сделаны постепенно, сохраняя обратную совместимость, для плавного перехода.

rockclimberJohny999За одно решить основную проблему, которую мы сейчас имеем на связке "толстый клиент на Delphi7, MySQL" - безопасность. Для этого, очевидно, нужна трехзвенка, чтобы сервер приложений контролировал права пользователей.Ох... Не знаю, что вас заставило так думать, но я с таким мнением категорически несогласен. Неужели в MySQL нет никаких средств контроля доступа?
Вот есть таблица клиентов. У каждый менеджер должен видеть только своих клиентов. Неужели в SQL-сервере (хоть в каком-то!) есть такая настройка прав, что на запрос "select * from clients" он вернет только тех, у кого в приджойненной таблице есть записи о причастности этого менеджера к этим клиентам?
...
Рейтинг: 0 / 0
20.02.2014, 18:47
    #38567949
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
Johny999,
Есть
...
Рейтинг: 0 / 0
20.02.2014, 18:51
    #38567954
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
Johny999,
Значит у тебя АппСервер тупо перенаправляет за просы?
Это прокси а не 3х звенка LOL
...
Рейтинг: 0 / 0
20.02.2014, 19:41
    #38568005
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
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)
...
Рейтинг: 0 / 0
20.02.2014, 19:55
    #38568031
rockclimber
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
Johny999rockclimberпропущено...
Ох... Не знаю, что вас заставило так думать, но я с таким мнением категорически несогласен. Неужели в MySQL нет никаких средств контроля доступа?
Вот есть таблица клиентов. У каждый менеджер должен видеть только своих клиентов. Неужели в SQL-сервере (хоть в каком-то!) есть такая настройка прав, что на запрос "select * from clients" он вернет только тех, у кого в приджойненной таблице есть записи о причастности этого менеджера к этим клиентам?Да, есть. В оракле точно, в MS SQL скорее всего тоже есть, и кажется даже в постгресе что-то такое то ли было, то ли планировалось. Гуглите по фразе Row level security - это общеупотребительный термин для подобной фичи. Я сам не пользовался, так что возможно в деталях выглядит немного иначе. В конце концов, стандарт SQL, если мне склероз не изменяет, требует от СУБД наличия функции current_user. Этой функции и одного view достаточно для реализации всего необходимого.
...
Рейтинг: 0 / 0
21.02.2014, 00:00
    #38568204
Johny999
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите определиться с трехзвенкой
Petro123Johny999,
Значит у тебя АппСервер тупо перенаправляет за просы?
Это прокси а не 3х звенка LOL
Нет. У меня его пока вообще нет. А когда появится - на переходном этапе будет часть именно проксить, а часть - иметь у себя бизнес-логику. Постепенно будем переводить бизнес-логику в него.

rockclimberВ конце концов, стандарт SQL, если мне склероз не изменяет, требует от СУБД наличия функции current_user. Этой функции и одного view достаточно для реализации всего необходимого.
Точно! Так mysql и предлагает делать: http://www.sqlmaestro.com/resources/all/row_level_security_mysql/
А я-то все думал - зачем они нужны, эти вьюхи... Похоже - только для этого. Или я еще чего-то не знаю?
...
Рейтинг: 0 / 0
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Помогите определиться с трехзвенкой / 25 сообщений из 29, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]