Вы, кажется, спрашиваете о двух вещах -
- способ размещения долго работающего, постоянного приложения в Windows, которое будет переключаться с тем или иным устройством через последовательный порт.
- способ связи с этим приложением из других приложений.
Служба Windows - хорошее решение для первого. Служба Windows выступает в качестве хоста приложения для вашей пользовательской логики. Это дает вам возможность запускать / останавливать и облегчает мониторинг и конфигурирование с помощью общего интерфейса и API. Сервисы Windows легко создавать на C #. Запускать и останавливать службы Windows легко из командной строки, из приложения, из инструмента с графическим интерфейсом.
Думайте о WCF как о главном коммуникационном интерфейсе. WCF может использоваться для создания внешнего интерфейса, предоставляемого службой Windows. Если вы хотите подключиться к приложению (службе) из клиентов .NET или HTTP (REST или SOAP), то WCF будет работать для вас.
COM .... Беспорядок, с которым вы сталкиваетесь в связи с использованием COM, связан с тем, что COM связывает механизм интерфейса (IDispatch, IUnknown и т. Д.) С моделью хостинга + жизненного цикла (локальные серверы, серверы Inproc, Удаленные серверы, автоматический запуск по запросу и т. Д.). Хостинг и жизненный цикл в COM работали, но всегда были довольно тонкими. Трудно понять, какие услуги были, и как долго. Трудно начать и остановить по требованию.
COM, в этой ситуации, как и WCF, в первую очередь представляет интерес как коммуникационный интерфейс. Если вы хотите использовать компонентный интерфейс для подключения к службе, COM может быть хорошим дополнением к службе Windows для хостинга.
COM и WCF (REST или SOAP) не являются взаимоисключающими, и на самом деле многие приложения предоставляют несколько интерфейсов. Вы можете выбрать сделать одно или другое, или оба. Там нет неправильного ответа, это зависит от ваших требований.
Если бы я делал это, я бы использовал службу Windows, а также я бы выставил интерфейс COM из этой службы, , как описано здесь . О жизненном цикле и хостинге заботится служба Windows. Сервис доступен через COM, то есть практически через любой язык программирования или скриптовую среду. Javascript, VB6, Excel или OFfice, Python, Perl и т. Д.
Я бы также подумал о предоставлении интерфейса WCF из сервиса. Это также позволит подключиться любому клиенту REST. Думайте о WCF как о беспроводном телефоне, а о COM - как о стационарном. Иногда хочется только одного. Иногда вы хотите оба.