В настоящее время мы разработали приложение с использованием WCF. Наши клиенты устанавливают соединения с различными сервисными хостами WCF, расположенными на сервере, а сервисные хосты возвращают данные из БД, которые нужны клиентам. Стандартная модель. Однако в этом текущем проекте все наши данные WCF содержатся в файлах app.config как на стороне клиента, так и на стороне сервисного хоста. Мы хотим сделать это более динамичным и перенесли все данные, включая конечные точки, контракты и привязки, в БД.
Теперь вопрос в том, как нам получить эти данные и получить к ним надлежащий доступ. У нас есть проект, который работает там, где у нас есть одна определенная конечная точка в файле конфигурации, и, используя эту конечную точку, мы можем вызвать ее, чтобы получить остальную информацию о конечной точке, которая нам нужна (т.е. все привязки, контракты и различные конечные точки, которые он определил в своем app.config). Это касается как клиентской, так и сервисной стороны.
Проблема, с которой я сейчас борюсь, заключается в том, как мне кодировать эти динамические конечные точки? Когда клиент выполняет вызов к узлу службы, он не только делает простые вызовы узлу службы, но и извлекает и передает объекты для обработки узлу службы по мере необходимости. Например, при загрузке формы мы можем извлечь объект со всеми текущими заданными настройками из БД, а затем пользователь делает все, что угодно для fornm, и мы затем возвращаем обновленный объект на сервисный хост. Мы можем сделать это сейчас, потому что в Visual Studio 2008 мы добавили все ссылки на сервисы, которые автоматически генерировали методы и объекты, которые можно вызывать и получать из сервисных хостов. Если мы перейдем к динамическому соединению с конечной точкой, как мы получим эти данные на этапе разработки?
В прошлом я разработал подобное приложение в .NET 2.0, используя удаленное взаимодействие .NET, где мы передавали объект туда-сюда, а клиент и сервер использовали один и тот же класс определения объекта, чтобы узнать об этом объекте. Я не уверен, как мы поступим с WCF.