Возможно ли создать автономный веб-сервис на C #, развернутый как EXE-файл или служба Windows?
-
06-07-2019 - |
Вопрос
Возможно ли создать C # EXE или службу Windows, которая может обрабатывать запросы веб-службы?Очевидно, что какой-то встроенный, возможно ограниченный, веб-сервер должен был бы быть частью EXE / service.EXE / service не должен был бы полагаться на установленный IIS.Предпочтительно, чтобы встроенный веб-сервис мог обрабатывать соединения типа HTTPS /SSL.
Сценарий таков:клиент хочет установить небольшой агент (службу Windows) на свои корпоративные компьютеры.У агента было бы две основные задачи:1) отслеживать систему с течением времени и собирать определенные фрагменты данных и 2) отвечать на запросы веб-службы (SOAP -v- REST все еще обсуждается) для сбора данных или изменения системы.Заказчику нравится идея API веб-служб, чтобы можно было написать любое количество клиентов (на любом языке) для подключения к различным агентам, работающим на корпоративных компьютерах.Они хотят, чтобы установка была относительно безболезненной (установите .NET, некоторые сборки, службу, измените брандмауэр Windows, запустите службу), не требуя установки и настройки IIS.
Я знаю, что могу сделать это с помощью Delphi.Но клиент предпочел бы, чтобы это было сделано на C #, если это возможно.
Есть какие-нибудь предложения?
Решение
Да, это возможно, возможно, вы захотите взглянуть на WCF и Самостоятельный Хостинг.
Другие советы
Да, это возможно (и довольно легко).
Вот такой Статья CodeProject показано, как создать базовый HTTP-сервер на C #.Это можно легко поместить в отдельный EXE-файл или сервис и использовать как веб-сервис.
Одна из технологий, с которой вы, возможно, захотите ознакомиться, - это WCF.Вникать в WCF может быть непросто, но на DNRTV есть отличный скринкаст Кита Элдера, который показывает, как очень просто начать работу с WCF.
Вы могли бы взглянуть на Элементе httplistener на .Net framework.
Я бы настоятельно рекомендовал WCF.Это очень хорошо вписалось бы в продукт, подобный тому, который вы описываете.Существует большое количество Книги Доступно.
Конечно, ты можешь это сделать.Обязательно измените тип вывода проекта на Консольное приложение.Затем в вашей основной функции добавьте параметр string[].С помощью некоторого параметра, который вы получаете в командной строке, вы можете перейти к ServiceBase.Выполнить для запуска в качестве службы Windows или перейти к какому-либо другому коду для запуска консольного приложения.