По моему мнению WCF - это путь.
Если вы разрабатываете его с использованием WCF, то вы отделяете код своего приложения от коммуникационной инфраструктуры.
Создайте свой интерфейс (не пользовательский интерфейс), затем внедрите его в класс, и, когда возникнет необходимость в общении с ним, решите, как выставить его через транспортный носитель (конечная точка / привязка), и все готово, ничего не меняя. в логике вашего приложения.
По сути, у вас есть один контракт WCF, и из него вы можете создать несколько конечных точек WCF для связи.
примеры:
Если у вас есть клиентские приложения, которые находятся в той же сети, что и служба WCF, вы можете добавить конечную точку WCF к существующей службе WCF ( NetTCPBinding / NetNamedPipeBinding), чтобы повысить производительность сети,
Если ваш клиент использует интернет для общения, просто добавьте новый webHttpBinding к вашей службе WCF, и теперь вы можете общаться со своей службой WCF из Javascript.
Если ваш клиент - веб-сервер, просто добавьте Basic / WS / WSDual / * HttpBinding * и получите связь и некоторые приятные функции, такие как двухканальная связь.
Суть в том, что вы немного не изменили свой код, он все еще функционирует. Что вы просто сделали, так это выставили ему конечные точки связи, чтобы к ним могли подключаться новые типы клиентов или выполнялись новые требования к приложениям / функциям.
Кроме того, если вы разрабатываете в WCF, тогда вы будете в некотором роде перспективой, поскольку, когда WCF раскрывает новые типы привязок «из коробки», вы готовы общаться с новыми типами клиентов (например, с веб-интерфейсом). сокеты. см. предстоящий веб-интерфейс)