Лучшие практики WCF/WPF - WCF ChannelFactory и PRISM
Я новичок в структуре PRISM, поэтому мой вопрос может быть немного не по теме.
Я создал сервис WCF, состоящий из двух проектов.
- Проект WCF .svc и Web.config содержит только определения служб.
- Проект типа сервиса, который определяет интерфейс сервиса WCF и тип сервиса.
На стороне клиента я немного опасаюсь того, как мне реализовать один, долгоживущий прокси для службы.
Мой подход заключается в создании канала для сервиса с использованием ChannelFactory<T>
и зарегистрировать это в контейнере Unity в моем модуле. Это означает, что мой Модуль должен ссылаться на проект Service Type, чтобы получить интерфейс службы (это правильный путь?).
Вопрос заключается в том, "как лучше всего управлять этим каналом, когда нам нужно обеспечить аутентификацию для создания канала, и как обрабатывать разъединения / повторные соединения".
1 ответ
Прокси-сервер не должен быть IMO синглтоном (или синглтоном-синглтоном), а должен создаваться по требованию. таким образом, каждый логический модуль может создавать его по своему желанию, не мешая другим модулям.
кроме этого вы подходите очень правильно. прокси должен иметь ссылку на проект ServiceType и т. д.
если вы хотите реализовать "службу" аутентификации, то я бы создал другой класс с именем AuthenticationService и зарегистрировал бы его в Unity как одноэлементный. Это, в свою очередь, получит ссылку на новый прокси и будет иметь дело со всем, что связано с аутентификацией / авторизацией.
Идея состоит в том, чтобы позволить каждому логическому модулю вести себя так, как будто это единственное в приложении, без необходимости беспокоиться о других модулях, кроме его зависимостей. таким образом, если у вас есть два представления, каждое из них может получить свой собственный IAuthenticationService, который будет одинаковым (и они не должны заботиться об этом), в то время как сам AuthenticationService зависит от прокси-сервера и будет содержать ссылку на него. через всю свою жизнь.