powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Пятничный клиент базы данных (Linux)
8 сообщений из 8, страница 1 из 1
Пятничный клиент базы данных (Linux)
    #39947998
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с чего всё началось
CEMb: Кроссплатформа не нужна. C++ сам по себе кроссплатформенен. Когда мне вдруг понадобится, я просто соберу под линукс :)
Вселенная: Да нууу?!?... А ну-ка иди сюда... :\

В общем, есть у меня программа, под Windows, которая работает с базой через ADO, к программе можно подцепиться через DCOM и через внутренние методы объекта погонять данные. Суть в том, что DCOM в данной ситуации берёт на себя заботу о удалённом сервере, очереди подключений и прочей удалённой рутине. ADO же тут ходит в базу данных. Всё ок.

Но вот тут (см. спойлер) всплыла вероятность, что заказчик захочет это всё под линупс.

И тут встают несколько вопросов. Возможно, глупых.
1. Я бы для простоты сделал сервер, который руками запускается, слушает порт по listen и так далее. Но скорее всего под линуксом есть какие-то стандартные готовые паттерны/решения для создания/управления серверами?
2. ADO. Очень удобная универсальная штука. Но, что можно использовать под Linux?

Просто приложение довольно большое, не хотелось бы его портировать на другой язык, хотелось бы доработать и собрать под Linux. Я понимаю, что возможно "доработать и собрать" будет больше по объёму, но всё-таки сейчас там дофига просто логического кода, структур данных, запросов в базу и прочего - что к платформе не имеет отношения. Поэтому изначально хочется оценить, насколько сложно будет избавиться от DCOM и ADO?
...
Рейтинг: 0 / 0
Пятничный клиент базы данных (Linux)
    #39948009
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbнасколько сложно будет избавиться от DCOM и ADO?

Практически невозможно.

Если твоё поделие не запустится под WINE или производными - в морг.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пятничный клиент базы данных (Linux)
    #39948043
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.

Тут уже рисков меньше будет. А будет такое себе поэтапное развитие.
...
Рейтинг: 0 / 0
Пятничный клиент базы данных (Linux)
    #39948247
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb
1. Я бы для простоты сделал сервер, который руками запускается, слушает порт по listen и так далее. Но скорее всего под линуксом есть какие-то стандартные готовые паттерны/решения для создания/управления серверами?
Зачем сервер? Какой сервер? Для DCOM? Ну.... в принципе, Wine делали аналог, не знаю правда насколько успешный.
Но это будет не linux-way, это в любом случае будет эмуляция и соответственно подтормаживать и давать странные глюки. Попробуй, может и взлетит, хотя-бы невысоко.

CEMb
2. ADO. Очень удобная универсальная штука. Но, что можно использовать под Linux?
Традиционно, используют нативные интерфейсы к БД. В последние годы набирает популярность ODBC. Особенно после того как Мелкомягие сдались и выпустили свой драйвер ОДБЦ для SQL Server.
Переход с ADO на ODBC будет не особо сложным. Достаточно будет сделать обертку функций в класс. За примером сходи в nanodbc Это не совсем ADO, но близко по духу.

CEMb
насколько сложно будет избавиться от DCOM и ADO?
От DCOM - не знаю, я с ним не работал. От ADO - легко.

А можно "усугубить" и перейти на .Net. А потом просто запускать под родным Мелкомягким dotnet. Оно правда уже с год как застыло на версии 3.1 и то что написано для 4.5 на Линуксе соответственно не запустится. Но то что писано для .Net 2 и 3 - бегает как родное.
...
Рейтинг: 0 / 0
Пятничный клиент базы данных (Linux)
    #39948250
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я-бы предложил не решать эту задачу сразу а провести серию рефакторингов твоего кода. И разбить его
на 2 модуля. 1) Generic. Туда зайдут алгоритмы и структуры данных гетерогенные по отношению к С++
и бизнес задаче. 2) Windows-Spec. Туда зайдут какраз вещи прибитые гвоздями к ADO/DCOM.

В двух модульном варианте приложение должно 100% компилироваться и работать. Дальше - надо просто
провести некую умственную оценку объема работ по переписыванию модуля Window-Spec, в модуль Linux-Spec.

Тут уже рисков меньше будет. А будет такое себе поэтапное развитие.
Ну это совершенная классика! Подход оттестированный годами и фреймворками.

В самом тяжелом случае в проекте будет структура каталогов типа:
Код: plaintext
1.
2.
3.
4.
/src
   /business
   /platform
      /windows
      /linux
Копируешь свой исходник как есть в windows каталог, потом копируешь его-же в linux и начинаешь доводить linux версию до ума.
Потом перетаскиваешь логику работы одинаковую в обоих платформах на уровень бизнес-логики и в итоге исходники в платформенных каталогах должны истончиться. За примером... на хотя бы Qt глянь.

Сначала у тебя будет два набора сценариев сборки под разные компиляторы/среды. Потом вместо двух сценариев делаешь один, более умный, на makefile, CMake или их кузенах.
...
Рейтинг: 0 / 0
Пятничный клиент базы данных (Linux)
    #39948253
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я-бы сказал что в линуксе все проще. Нет разделения на приложения и службы.
это хорошо, спасибо.
mayton
Я-бы предложил не решать эту задачу сразу а провести серию рефакторингов твоего кода. И разбить его на 2 модуля.
Он уже разбит на три независимые библиотеки. Одна из них - для работы с БД, но через ADO. Разбивка, вроде бы, годная - я где-то месяц назад спонтанно решил сделать свой sql-navigator, но в любую БД, в какую может ходить ADO. И взяв эту библиотеку, сделал его за полтора дня.
White Owl
Зачем сервер? Какой сервер? Для DCOM?
Да, я уточню: у нас трёхзвенная архитектура, есть тонкий клиент, который ходит по DCOM в этот сервер, сервер ходит в базу через ADO, переправляет данные клиенту.
White Owl
Традиционно, используют нативные интерфейсы к БД.
Наверное, это знак :) Наша БД - Оракл, у неё есть свой SDK, меня давно подталкивали перейти с ADO на него. Наверно, этот момент настал. Просто вот с ADO хорошо получилось, я сделал удобную для себя библиотеку, с разными типами загрузки-выполнения запросов, с контейнером, который курирует запрос и ведёт жизненный цикл. И она (библиотека) мне позволила сделать в другом проекте удобное кеширование данный на стороне клиента в базе данных MSSQL(даже в любой базе, через ADO, ранее я спрашивал, про куда перейти с MSSQL , потому что её нет из коробки), поэтому мне не хотелось уходить от универсального интерфейса к нативному. Но, видимо, придётся написать отдельную Оракл-библиотеку. С другой стороны, это хорошая новость, потому что под Linux оно должно собираться без проблем.

White Owl
Сначала у тебя будет два набора сценариев сборки под разные компиляторы/среды.
Вот я подумываю о том, чтобы работать прям под Linux, чтобы избежать любых нестыковок, которые могут быть при сборке из-под Windows. Раньше я только с командной строки собирался :)
...
Рейтинг: 0 / 0
Пятничный клиент базы данных (Linux)
    #39948399
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb
White Owl
Традиционно, используют нативные интерфейсы к БД.
Наверное, это знак :) Наша БД - Оракл, у неё есть свой SDK, меня давно подталкивали перейти с ADO на него.
[/quot]Есть. Называется OCI/OCCI (для С и С++). Но есть и ODBC драйвера, так что универсальность не теряется.

CEMb
White Owl
Сначала у тебя будет два набора сценариев сборки под разные компиляторы/среды.
Вот я подумываю о том, чтобы работать прям под Linux, чтобы избежать любых нестыковок, которые могут быть при сборке из-под Windows. Раньше я только с командной строки собирался :)
Да оно и сейчас с командной строки удобнее будет. Но никто же не запрещает сделать в IDE собственную клавишу запускающую make. Впрочем, большинство IDE такую клавишу уже имеет, достаточно только в настройках указать как именно называется сборщик или где он находится, если не стандартный.
...
Рейтинг: 0 / 0
Пятничный клиент базы данных (Linux)
    #39948420
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb
mayton
Я-бы сказал что в линуксе все проще. Нет разделения на приложения и службы.
это хорошо, спасибо.
mayton
Я-бы предложил не решать эту задачу сразу а провести серию рефакторингов твоего кода. И разбить его на 2 модуля.
Он уже разбит на три независимые библиотеки. Одна из них - для работы с БД, но через ADO. Разбивка, вроде бы, годная - я где-то месяц назад спонтанно решил сделать свой sql-navigator, но в любую БД, в какую может ходить ADO. И взяв эту библиотеку, сделал его за полтора дня.

Смотри. Я думаю что в форуме у нас уже закончились здравые предложения.
Тебе надо сесть и начать кодить. Напиши план что делать.

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

Еще просто для себя собери метрики сложности (Холстед и цикломатическая).
Они хотя-бы укажут где у тебя самый сложный модуль или процедура в 10000 строк.
Или где самый запутанный вложенный цикл. Холстед вообще выдает время в минутах
требуемое для освоения человеком смысла исходника. Понятное дело что время - среднее.
Гипотетическое.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Пятничный клиент базы данных (Linux)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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