Лучшие практики WCF / WPF - WCF ChannelFactory и PRISM - PullRequest
3 голосов
/ 03 ноября 2010

Я новичок в структуре PRISM, поэтому мой вопрос может быть немного не по теме.

Я создал службу WCF, состоящую из двух проектов.

  1. Проект WCF .svc и Web.config содержит только определения служб.
  2. Проект типа сервиса, который определяет интерфейс сервиса WCF и тип сервиса.

На стороне клиента я немного опасаюсь того, как мне реализовать один долгоживущий прокси для службы.

Мой подход заключается в создании канала для службы с использованием ChannelFactory<T> и регистрации его в контейнере Unity в моем модуле. Это означает, что мой модуль должен ссылаться на проект Service Type для получения интерфейса службы ( это правильный путь? ).

Вопрос в том, "каков наилучший способ управления этим каналом, когда нам необходимо обеспечить аутентификацию для создания канала, и как обрабатывать разъединения / повторные соединения."

1 Ответ

1 голос
/ 01 апреля 2011

Прокси-сервер не должен быть IMO синглтоном (или синглтоном-синглтоном), а должен создаваться по требованию. таким образом, каждый логический модуль может создавать его по своему желанию, не мешая другим модулям.

кроме того, что вы подходите очень правильно. прокси должен иметь ссылку на проект ServiceType и т. д.

если вы хотите реализовать аутентификацию "службы", то я бы создал другой класс с именем AuthenticationService и зарегистрировал бы его в Unity как одноэлементный. Это, в свою очередь, получит ссылку на новый прокси и будет иметь дело со всем, что связано с аутентификацией / авторизацией.

Идея состоит в том, чтобы позволить каждому логическому модулю вести себя так, как будто это единственное в приложении, без необходимости беспокоиться о других модулях, кроме его зависимостей. таким образом, если у вас есть два представления, каждое из них может получить свой собственный IAuthenticationService, который будет одинаковым (и им это не нужно), в то время как сам AuthenticationService зависит от прокси-сервера и будет содержать ссылку на него через свою жизнь.

...