Я разрабатываю часть программного обеспечения, которое должно управлять различными частями аппаратных средств, базирующихся главным образом на расписании, но это также должно иметь веб-интерфейс для конфигурирования настроек, настраивая расписание, и возможно даже вручную управляя аппаратными средствами. Я не уверен, как разработать архитектуру программного обеспечения как это.
Одна мысль, что я имел, состояла в том, чтобы создать службу Windows, которая делает связь с аппаратными средствами, а также "публикующий" веб-сервисы через WCF и затем имеющий приложение ASP.NET, которое затем управляет службой Windows через WCF. Этот подход, кажется, большая работа для того, что я пытаюсь выполнить.
Кто-то мог дать мне некоторое направление, является ли это хорошим подходом, и даже дайте мне лучший способ сделать это, если Вы существуете?
Спасибо! Joel
Вы можете инстанцировать конечную точку WCF как службу TCP из службы Windows, как объясняется на MSDN: Как: Host WCF in a Windows Service Using TCP .
Оттуда, это относительно прямо, чтобы потреблять ту конечную точку в приложении ASP.NET (так же, как потребление любой другой конечной точки WCF).
В отсутствие каких-либо убедительных причин сделать иначе, это, вероятно, тот подход, который я бы взял. Ваш единственный другой вариант состоит в том, чтобы использовать некоторую другую форму IPC, такую как сопоставленные с памятью файлы или именованные трубы. WCF намного легче запустить и запустить.
Вы можете встроить веб-сервер ASP.Net в службу с помощью API хостинга ASP.Net, а затем использовать его для непосредственного запуска веб-сайта ASP.Net.
Обратите внимание, что сайт ASP.Net будет работать в отдельном домене приложений.
Вы можете просто использовать обычный XML-файл (или что-то еще), который служба отслеживает на предмет изменений. Веб-интерфейс мог просто читать / записывать этот XML-файл. Это работает только в том случае, если служба и веб-сайт работают на одном компьютере (вы также можете сделать это через общий ресурс, но это дополнительная конфигурация, и в этом случае вы можете просто использовать WCF).