2010-10-17 5 views
0

Мы только что добавили выделенный тестовый сервер для наших приложений Silverlight. Мы развертываем полные копии всех наших приложений и сервисов на тестовом сервере. Проблема заключается в том, что мы должны вручную обновлять ServiceReference.ClientConfig при развертывании, указывать на соответствующий сервер (т. Е. Тестировать или жить).Silverlight - настройка конфигурации службы

Я уверен, что это распространенная проблема. Что такое «наилучшая практика»?

ответ

1

Обычно я создаю папку Configuration в моем веб-проекте SL, содержащую ServiceReferences.ClientConfig для каждого местоположения, на котором я планирую опубликовать приложение (ServiceReferences.ClientConfig.dev, ServiceReferences.ClientConfig.test, ServiceReferences.ClientConfig.prod) ,

Затем создать конфигурацию решения для каждой среды (Dev, тест, прод) и установить событие SL приложение сборки для:

xcopy /R /Y $(ProjectDir)Configuration\ServiceReferences.ClientConfig.$(ConfigurationName) $(ProjectDir)ServiceReferences.ClientConfig 

До публикации, мне просто нужно выбрать конфигурацию, создавать и публиковать

1

Я бы программным образом изменил имя хоста конечной точки внутри приложения silverlight в зависимости от конкретного параметра, переданного с главной страницы в приложение SL (конечно, это означает, что вам придется разместить ваше приложение на другой странице при развертывании на тестовый сервер, или вы можете редактировать хост-страницу «на лету» как часть вашего сценария развертывания).

Для напр .: на тестовой странице:

<param name="initParams" value="testServer=myhost.com"/> 

Затем в Silverlight приложении вы читаете параметр TestServer (вы получите Хеш initParams в случае Application_Startup) и программно задать имя хоста на то, что вы получили , Для удаленного прокси-сервера вам понадобится какая-то централизованная фабрика, иначе вам придется заменить имя хоста в нескольких разных местах.

Кроме того, я бы сделал это только в #if DEBUG (или даже лучше определить другую константу компиляции, которая будет удалена до фактического развертывания), поэтому нет никакого риска, что это будет использоваться для любой злонамеренной цели.

+1

Я делаю что-то подобное, но я нашел, что результаты лучше, если вы размещаете приложение на странице ASP.NET и динамически записываете initParams из файла web.config хоста. Он позволяет легко устанавливать в разных местах, устанавливая различные конфигурационные файлы на главной странице. – Stephan