Кроссплатформенные технологии
В кратце суть ядра:
1. Одним каналом оно цепляется к удаленному серверу и по своему протоколу отсылает/принимает данные.
2. Другим каналом оно эти данные складывает в некую условно локальную БД и производит обработку данных из этой БД.
3. Третий канал предоставляет некий программный интерфейс (по типу COM) для управления самим ядром. (в дальнейшем будет к нему привязан UI)
Вопросы:
1. Какими кроссплатформенными технологиями можно организовать 3-й канал?
2. Исходя из моих знаний С++ и шарпа (немного) на чем это лучше реализовывать?
3. Если через шарп делать, в Mono/.NET есть кросплатформенность объектов по работе с сетью и БД?
4. Как осуществлять кросплатформенную связь с БД ?
PS: оптимальней конечно всего для этого джава подходит, но чего не знаю, того не знаю.
Если знаете шарп, то и с Явой довольно быстро подружитесь.
А если нет, то Qt. Прослойки для работы с БД присутствуют.
Вот это ты зря сказал :) Почему же оптимальнее?
А вообще, чтобы не сомневаться - лучше использовать C++ и Qt. Иначе можешь больше просомневаться, чем дело делать.
Java отличный вариант, куча фреймворков есть, Zorkus придет и покажет :)
А в Mono все практически также как в .NET. Вот интерфейсы для работы с БД. А гуя практически аналогично WinForms собирается в GTK#.
П.С. Бинарники как правило будут кроссплатформенными (это если не юзать PInvoke).
Работа с сетью и БД в QT реализована, так что эти вопросы вроде как отпадают.
Гугл подсказывает что в Mono должен работать стандартный механизм удаленного взаимодействия - Remoting.
Насколько я понимаю, это фича Моно/Дотнета, т.е. вне рамок этих платформ я не смогу заюзать этот интерфейс?
В самом начале я упомянул СОМ, если бы она была кроссплатформенна, то это был бы идеальный вариант. Не так давно я делал что то подобное тому что хочу реализовать, но оно было чисто под винду и предоставляло СОМ-овский интерфейс. Работало с 1С, САПом, делал демонстрашки в экселе, подключал к Солиду, т.е. в рамках винды СОМ это универсальный интерфейс и с ним не умеет работать только ленивый (софт в смысле).
Вот хотелось бы найти подобную технологию и в межплатформенном пространстве.
PS: можно в принципе заюзать сокеты под это дело, но это какой то костыль на мой взгляд получается.
PS: можно в принципе заюзать сокеты под это дело, но это какой то костыль на мой взгляд получается.
Вообще там зависит от синка, ремотинг можно завести как поверх обычного TCP, так и поверх HTTP (SOAP), правда я не знаю как с этим обстоят дела в Моно.
Итак, про Java.
Под линуксом действительно работать будет, и библиотеки все вам нужные есть (я гарантирую это). Для любого известного дистрибутива линукса должна JDK (java development toolkit) присутствовать в репозитариях и ставиться одной командой.
Далее, строго рекомендую использовать под все операционки сановскую версию JDK, и не использовать под линукс дерьмо под названием GCJ. Возможно, сейчас оно стало лучше, однако два года назад было убогим.
Про управление.
Под Java рекомендуют использовать JMX, который специально для этой цели предназначен. Т.е. по сути иметь внутри своего ядра т.н. MBeanServer, и регистрировать в нем MBean-ы (управляемые бины) для конкретных операций. Подробней гуглите.
Под .net очевидно, аналогом является NetMX. Hardcase, что скажешь? WMI-то уж точно не подойдет автору...
Под .net очевидно, аналогом является NetMX. Hardcase, что скажешь? WMI-то уж точно не подойдет автору...
Хз, впервые слышу про NetMX :)
Я вообще этими вещами не занимался.
Так называемый кроссплатформенный коннектор для MySQL. ПО сути, просто грузит для каждой платформы свой скомпиленный бинарник. Данный конектор предназначается в основном для работы с MBean контейнерами типа JBoss. Да и в основном JMX используется для JavaEE, что по сути отяготит легкий кросплатформенный перенос ядра.
Одна полезность - доступны исходники.
В целом, ничто не мешает использовать JMX в десктопном приложении, он и используется, только это может быть не видно на "глаз" :).