#web-services #soap #windows-services #soa
#веб-службы #soap #windows-службы #soa
Вопрос:
Настольное приложение Window предоставляет C API, который предоставляет массив информации о клиентах, такой как имя и адрес. Я хочу представить это как веб-службу SOAP с защитой, чтобы авторизованные клиенты (с удаленных серверов на базе Linux / Java через ESB) этой веб-службы могли получать эту информацию в любое время, когда они захотят, в реализации SOA (на основе Java). У настольного приложения нет стандартной базы данных. Оно хранит свои данные внутри. Это в основном старое пользовательское CRM-приложение, которое установлено на ПК каждого агента. У каждого агента есть свой собственный список клиентов.
Каковы шаги для решения этой задачи?
Нужно ли мне запускать это как службу Windows?
Ответ №1:
Короткий ответ: да, вы можете предоставить доступ к данным из настольного приложения через веб-службу SOAP. Это проще сделать с C # и .NET, но не невозможно сделать с C . Какие шаги вам нужно предпринять, будет зависеть от того, для какой платформы вы разрабатываете.
Примерно —
Внедрите конечную точку, поддерживающую SSL, где клиенты могут подключаться к вашему настольному приложению (используя сокеты на C или HttpListener с использованием .NET).
Напишите код, который может получать и отправлять запросы SOAP.
Обрабатывайте запросы SOAP и возвращайте ответы SOAP в правильном формате.
Обрабатывать запросы WSDL.
Внедрите механизм безопасности (на основе файлов cookie или иным образом).
Использование .NET, большая часть этого уже есть в коде платформы, вам просто нужно собрать кусочки вместе. В C вы можете найти некоторые сторонние библиотеки, но по сути вы будете писать свои собственные.
Вам нужно внедрить службу Windows, только если вы хотите, чтобы данные были доступны, пока пользователь настольного компьютера не вошел в систему и не запустил ваше настольное приложение. Проблема здесь в том, что вам нужно убедиться, что служба Windows может получить доступ к тем же данным, которые использует настольное приложение.
Другой стратегией было бы получить доступ к данным из вашего настольного приложения с помощью C API и Interop и реализовать веб-службу как стандартную готовую asmx, размещенную на IIS.
Комментарии:
1. Исходя из вашей информации, кажется, что служба Windows является лучшим вариантом. Разработка программы на C , которая обращается к информации из настольного приложения с использованием C API, не является проблемой. Эта программа на C является частью упомянутой службы Windows. Но большой вопрос, как эта служба Windows может действовать на основе веб-службы на основе SOAP (без использования .NET), чтобы удаленные клиенты могли обращаться к этой веб-службе для получения информации?
2. Для реализации веб-службы в ее самой простой форме требуется только, чтобы вы открыли прослушивающий сокет и обрабатывали запросы http и https в формате soap на нем. Прошло некоторое время с тех пор, как я выполнял какую-либо работу на C , но я уверен, что вы можете найти реализации анализаторов SOAP на C , и там должно быть достаточное количество кода «как написать веб-сервер на C «. Проблема заключается в поиске «бесплатного» и безопасного.