Возможно ли создать автономный веб-сервис на C #, развернутый как EXE-файл или служба Windows?

StackOverflow https://stackoverflow.com/questions/1013896

Вопрос

Возможно ли создать 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.

http://www.dnrtv.com/default.aspx?showNum=135

Вы могли бы взглянуть на Элементе httplistener на .Net framework.

Я бы настоятельно рекомендовал WCF.Это очень хорошо вписалось бы в продукт, подобный тому, который вы описываете.Существует большое количество Книги Доступно.

Конечно, ты можешь это сделать.Обязательно измените тип вывода проекта на Консольное приложение.Затем в вашей основной функции добавьте параметр string[].С помощью некоторого параметра, который вы получаете в командной строке, вы можете перейти к ServiceBase.Выполнить для запуска в качестве службы Windows или перейти к какому-либо другому коду для запуска консольного приложения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top