Я относительно новичок в разработке .Net и C #, и у меня возникла проблема с разделением служб WCF из приложения в создаваемую мной сетевую DLL.Цель DLL - предложить простой способ размещения и доступа к сервису из серверного и клиентского приложения, а также добавить некоторые функции в базовую службу для пульса и автоматического переподключения , при этом каждое приложение не должно указывать методы пульса вих службы WCF и те, у которых есть приложения, управляют таймером автоматического переподключения.
DLL предлагает ServiceServer и класс ServiceClient, которые имеют следующие цели:
ServiceServer
:
- Создает и управляет экземпляром
ServiceHost
. - Размещает службу извне DLL (передается как универсальная).
- Добавляет операции пульса в службу, которая будет размещена, а также другие операции, общие для всех наших клиент-серверных приложений.
ServiceClient
:
- Создает и делает ссылку на службу клиента доступной для клиентского приложения.Ссылка на службу (сгенерированная автоматически) также передается из приложения в качестве универсальной.
- Добавьте методы пульса в ссылку на службу для клиента, а также другие операции, общие для всех наших клиент-серверных приложений.
- Автоматическое переподключение с использованием таймера или аналогичного.
До сих пор я безуспешно пытался использовать частичные классы, обобщенные и статические методы расширения.Проблема заключается в том, что для полной развязки моей DLL я получаю и создаю ссылку на службу и службу с использованием обобщений; Я не могу расширить полученный универсальный тип, используя любой из этих подходов .
Я в основном пытаюсь расширить ссылку на службу клиента с помощью дополнительных методов, чтобы можно было отправлять тактовые импульсы и тому подобное без необходимостидругое независимое соединение и обслуживание (которое сделало бы сердцебиение неэффективным), и клиентское приложение не должно было ничего знать об отправке сердцебиения и автоматическом переподключении.Кроме того, я хочу расширить службу, которую серверный класс получает в качестве параметра, для добавления операций и реализации контрольного кода сервера и, в конечном счете, других общих для всех приложений методов.