Форма Windows и служба WCF - PullRequest
       0

Форма Windows и служба WCF

0 голосов
/ 27 ноября 2011

Я оглянулся и не нашел именно то, что искал.

У меня есть форма Windows и служба wcf в том же проекте, и я размещаю службу wcf вместе с формой, выполняя следующие действия:

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
ServiceHost host = new ServiceHost(typeof(Service1));
host.Open();

Application.Run(new Form1());
host.Close();

И приложение, использующее сервис, не имеет проблем с его вызовом.

Моя проблема сейчас вызывает методы службы wcf в форме Windows. Я мог бы просто сделать

Service1 service = new Service1();
service.doWork();

Но, делая это, я не использую тот же экземпляр, что и клиенты Сервиса (даже если я использую InstanceMode.Single), и я хочу.

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

Но я просто хочу, чтобы служба wcf размещалась в форме windows и имела доступ к тому же экземпляру службы, что и клиенты wcf. Как я могу это сделать?

1 Ответ

3 голосов
/ 27 ноября 2011

Имеет смысл «получить тот же экземпляр клиентов», если вы используете InstanceMode.Single, так что это будет обязательно.Если вы делаете это, вы можете использовать свойство ServiceHost.SingletonInstance.Это дает вам экземпляр (типа Object, так что вам придется его разыграть).

Я думаю, чтобы это работало, вам нужно создать экземпляр ServiceHost с instance из Service1а не с типом.

Подробнее см. здесь:

http://msdn.microsoft.com/en-us/library/ms585487.aspx

В этом случае вы можете просто сохранить ссылку на используемый вами экземплярчтобы создать ServiceHost, а не ServiceHost, что сэкономит вам дополнительный вызов ServiceHost.SingletonInstance ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...