Сервис WCF с версией для QA и PROD - PullRequest
1 голос
/ 24 октября 2010

Вот мой сценарий ... У меня есть приложение WPF, которое общается со службой WCF.

Настройки строки подключения находятся в службе WCF.Служба WCF может быть развернута на двух разных веб-сайтах, один для QA и один для PROD (каждый со своим URI).

Я хочу, чтобы мое приложение WPF могло запускаться с использованием данных QA или PROD.По сути, я бы передавал параметр при запуске в приложение WPF, которое было бы QA или PROD.

Я хотел бы развернуть один и тот же код службы WCF на веб-сайтах QA и PROD, с той лишь разницей, что значения строк соединения в соответствующих файлах web.config.

Тогда мне понадобится способ иметь фабричный шаблон в приложении WPF, который бы возвращал интерфейс WCF (прокси-сервер) на основе переданного параметра QA / PROD.

Мне нужно сделатьубедитесь, что в приложении WPF интерфейс WCF (прокси-сервер) рассматривается как один и тот же тип в ссылках QA и PROD.

После всего этого результат будет ... если пользователь запустит приложение WPF и передаст QA, каждый вызов службы WCF будет возвращать данные QA, а если они передадут PROD, каждый вызов службы WCFвернул бы данные PROD.

Я мог бы просто передать QA или PROD в качестве параметра каждому методу службы WCF, но это кажется грубым.Поскольку WCF не имеет состояния и не имеет конструктора, мне нужно найти более гибкое решение.

1 Ответ

1 голос
/ 24 октября 2010

Разве нельзя развернуть службу по 2 отдельным URL?

  1. Сервисный URL 1 - QA URL -> этот web.config имеет строку подключения QA
  2. Сервисный URL 2 - PROD URL -> этот web.config имеет соединительную строку PROD

Приложение WPF, которое использует службу WCF, скорее всего, имеет свой собственный файл конфигурации с хостом службы.

В приложении WPF,

если вам нужно подключиться к URL-адресу QA -> вы измените app.config так, чтобы он указывал на URL1

если вам нужно подключиться к PROD URL -> вы измените app.config так, чтобы он указывал на URL2

Это значительно упростит вашу проблему, если я правильно ее понял.

Таким образом, в вашем приложении нет логики, в которой вы решаете, к какой БД подключаться. Это просто простой вопрос настройки правильного URL-адреса в вашем приложении, а все остальное просто вытекает оттуда.

...