|
Пятничный клиент базы данных (Linux)
|
|||
---|---|---|---|
#18+
с чего всё началось CEMb: Кроссплатформа не нужна. C++ сам по себе кроссплатформенен. Когда мне вдруг понадобится, я просто соберу под линукс :) Вселенная: Да нууу?!?... А ну-ка иди сюда... :\ В общем, есть у меня программа, под Windows, которая работает с базой через ADO, к программе можно подцепиться через DCOM и через внутренние методы объекта погонять данные. Суть в том, что DCOM в данной ситуации берёт на себя заботу о удалённом сервере, очереди подключений и прочей удалённой рутине. ADO же тут ходит в базу данных. Всё ок. Но вот тут (см. спойлер) всплыла вероятность, что заказчик захочет это всё под линупс. И тут встают несколько вопросов. Возможно, глупых. 1. Я бы для простоты сделал сервер, который руками запускается, слушает порт по listen и так далее. Но скорее всего под линуксом есть какие-то стандартные готовые паттерны/решения для создания/управления серверами? 2. ADO. Очень удобная универсальная штука. Но, что можно использовать под Linux? Просто приложение довольно большое, не хотелось бы его портировать на другой язык, хотелось бы доработать и собрать под Linux. Я понимаю, что возможно "доработать и собрать" будет больше по объёму, но всё-таки сейчас там дофига просто логического кода, структур данных, запросов в базу и прочего - что к платформе не имеет отношения. Поэтому изначально хочется оценить, насколько сложно будет избавиться от DCOM и ADO? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2020, 12:42 |
|
Пятничный клиент базы данных (Linux)
|
|||
---|---|---|---|
#18+
CEMbнасколько сложно будет избавиться от DCOM и ADO? Практически невозможно. Если твоё поделие не запустится под WINE или производными - в морг. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2020, 12:55 |
|
Пятничный клиент базы данных (Linux)
|
|||
---|---|---|---|
#18+
CEMb И тут встают несколько вопросов. Возможно, глупых. 1. Я бы для простоты сделал сервер, который руками запускается, слушает порт по listen и так далее. Но скорее всего под линуксом есть какие-то стандартные готовые паттерны/решения для создания/управления серверами? Скорее всего нет. Я-бы сказал что в линуксе все проще. Нет разделения на приложения и службы. Чтобы твой процесс стал сервисом его надо описать в скриптах /etc/init.d/*, /etc/* и может задать привегелии и на этом пожалуй все. 2. ADO. Очень удобная универсальная штука. Но, что можно использовать под Linux? Скорее всего аналогов нету. Можно попробовать съехать на ODBC под Linux. Хотя возможно для твоего кода это будет некая деградация или упрощение. ADO должен быть более сложным и комплексным. Со ссылкой на https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15 Просто приложение довольно большое, не хотелось бы его портировать на другой язык, хотелось бы доработать и собрать под Linux. Я понимаю, что возможно "доработать и собрать" будет больше по объёму, но всё-таки сейчас там дофига просто логического кода, структур данных, запросов в базу и прочего - что к платформе не имеет отношения. Поэтому изначально хочется оценить, насколько сложно будет избавиться от DCOM и ADO? Вот то что выделено - очень хорошо. Вселяет некую надежду. Я-бы предложил не решать эту задачу сразу а провести серию рефакторингов твоего кода. И разбить его на 2 модуля. 1) Generic. Туда зайдут алгоритмы и структуры данных гетерогенные по отношению к С++ и бизнес задаче. 2) Windows-Spec. Туда зайдут какраз вещи прибитые гвоздями к ADO/DCOM. В двух модульном варианте приложение должно 100% компилироваться и работать. Дальше - надо просто провести некую умственную оценку объема работ по переписыванию модуля Window-Spec, в модуль Linux-Spec. Тут уже рисков меньше будет. А будет такое себе поэтапное развитие. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2020, 14:51 |
|
Пятничный клиент базы данных (Linux)
|
|||
---|---|---|---|
#18+
CEMb 1. Я бы для простоты сделал сервер, который руками запускается, слушает порт по listen и так далее. Но скорее всего под линуксом есть какие-то стандартные готовые паттерны/решения для создания/управления серверами? Но это будет не linux-way, это в любом случае будет эмуляция и соответственно подтормаживать и давать странные глюки. Попробуй, может и взлетит, хотя-бы невысоко. CEMb 2. ADO. Очень удобная универсальная штука. Но, что можно использовать под Linux? Переход с ADO на ODBC будет не особо сложным. Достаточно будет сделать обертку функций в класс. За примером сходи в nanodbc Это не совсем ADO, но близко по духу. CEMb насколько сложно будет избавиться от DCOM и ADO? А можно "усугубить" и перейти на .Net. А потом просто запускать под родным Мелкомягким dotnet. Оно правда уже с год как застыло на версии 3.1 и то что написано для 4.5 на Линуксе соответственно не запустится. Но то что писано для .Net 2 и 3 - бегает как родное. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2020, 05:15 |
|
Пятничный клиент базы данных (Linux)
|
|||
---|---|---|---|
#18+
mayton Я-бы предложил не решать эту задачу сразу а провести серию рефакторингов твоего кода. И разбить его на 2 модуля. 1) Generic. Туда зайдут алгоритмы и структуры данных гетерогенные по отношению к С++ и бизнес задаче. 2) Windows-Spec. Туда зайдут какраз вещи прибитые гвоздями к ADO/DCOM. В двух модульном варианте приложение должно 100% компилироваться и работать. Дальше - надо просто провести некую умственную оценку объема работ по переписыванию модуля Window-Spec, в модуль Linux-Spec. Тут уже рисков меньше будет. А будет такое себе поэтапное развитие. В самом тяжелом случае в проекте будет структура каталогов типа: Код: plaintext 1. 2. 3. 4.
Потом перетаскиваешь логику работы одинаковую в обоих платформах на уровень бизнес-логики и в итоге исходники в платформенных каталогах должны истончиться. За примером... на хотя бы Qt глянь. Сначала у тебя будет два набора сценариев сборки под разные компиляторы/среды. Потом вместо двух сценариев делаешь один, более умный, на makefile, CMake или их кузенах. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2020, 05:28 |
|
Пятничный клиент базы данных (Linux)
|
|||
---|---|---|---|
#18+
mayton Я-бы сказал что в линуксе все проще. Нет разделения на приложения и службы. mayton Я-бы предложил не решать эту задачу сразу а провести серию рефакторингов твоего кода. И разбить его на 2 модуля. White Owl Зачем сервер? Какой сервер? Для DCOM? White Owl Традиционно, используют нативные интерфейсы к БД. White Owl Сначала у тебя будет два набора сценариев сборки под разные компиляторы/среды. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2020, 06:14 |
|
Пятничный клиент базы данных (Linux)
|
|||
---|---|---|---|
#18+
CEMb White Owl Традиционно, используют нативные интерфейсы к БД. CEMb White Owl Сначала у тебя будет два набора сценариев сборки под разные компиляторы/среды. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2020, 16:03 |
|
Пятничный клиент базы данных (Linux)
|
|||
---|---|---|---|
#18+
CEMb mayton Я-бы сказал что в линуксе все проще. Нет разделения на приложения и службы. mayton Я-бы предложил не решать эту задачу сразу а провести серию рефакторингов твоего кода. И разбить его на 2 модуля. Смотри. Я думаю что в форуме у нас уже закончились здравые предложения. Тебе надо сесть и начать кодить. Напиши план что делать. И по факту ошибок и проблем - приходить сюда и говорить на какой фазе ты находишся. Еще просто для себя собери метрики сложности (Холстед и цикломатическая). Они хотя-бы укажут где у тебя самый сложный модуль или процедура в 10000 строк. Или где самый запутанный вложенный цикл. Холстед вообще выдает время в минутах требуемое для освоения человеком смысла исходника. Понятное дело что время - среднее. Гипотетическое. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2020, 16:28 |
|
|
start [/forum/topic.php?fid=57&msg=39948253&tid=2017451]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 268ms |
total: | 389ms |
0 / 0 |