Какая архитектура для обмена данными между встроенным устройством Linux и настольной Windows? - PullRequest
0 голосов
/ 08 февраля 2012

Я работаю над созданием встроенного устройства Linux, которое должно обмениваться данными с системой, работающей в среде рабочего стола Windows.Моя команда разрабатывает программное обеспечение для встроенного устройства и разрабатывает API для обмена данными с устройством.Я хотел бы некоторые идеи по архитектуре обмена данными.Я хотел бы, чтобы архитектура соответствовала принципам SOA.

Вот важные характеристики:

  • База данных: устройство будет запускать сервер базы данных SQL локально.
  • Сеть: Устройство и настольная система будут подключены через WLAN или LAN.Запуск веб-сервера на устройстве также возможен, если для этого есть веская причина.
  • Обмен данными будет осуществляться в обоих направлениях.Текстовая информация о клиенте и файлы изображений jpeg (~ 1 МБ данных один раз в день).

Моя первая мысль - традиционный подход: запустить процесс на устройстве Linux, который через сокет TCP взаимодействует с процессом насторона Windows.В этом сценарии моей команде нужно написать Windows DLL (либо библиотеку .NET, либо Win32) для реализации API.Я думаю, что формат данных здесь будет XML, хотя я не уверен, как передать файлы изображений .jpg с помощью этого подхода.

Я думаю, что более "современный" подход - это запусквеб-сервер на устройстве Linux и предоставляет набор веб-сервисов для обработки взаимодействия с внешней системой.У меня не было большого опыта в этой области, поэтому я не уверен, что это подойдет для нашей ситуации.

Ваши мысли об этих подходах очень ценятся.Я уверен, что коллективная мудрость здесь, на SO, поможет мне принять обоснованное решение.Спасибо за вашу помощь.

1 Ответ

1 голос
/ 09 февраля 2012

Я бы тоже пошел с веб-сервисами. Если вы используете необработанное TCP-соединение, у вас могут возникнуть проблемы с кодированием или даже порядком байтов (вы говорите о встроенном linux, у вас могут быть разные порядки байтов на встроенном процессоре).

Мой опыт:

  • SOAP : отлично подходит для windows, в c # есть много инструментов для этого. На стороне Linux вы должны использовать gsoap , если вы не хотите писать парсер самостоятельно, но обычно это плохо. gsoap работает, но его трудно освоить.
  • REST : это легче реализовать, хотя я не знаю, для linux, какая-либо программа, которая генерирует код для вас. Я никогда не использовал его на стороне окон, но насколько я знаю, Visual Studio поддерживает это.
  • JSON-WSP : это очень легко реализовать и легко. Я использую его с Ladon на Python, это действительно делает меня счастливым.

Ladon также поддерживает SOAP, но если вы хотите обмениваться файлами, у него есть небольшие ограничения. Посмотрите на это .

...