Динамическая регистрация WCF- и Remoting сервисов в IIS
От: baranovda Российская Империя  
Дата: 19.05.08 07:07
Оценка:
Хочу портировать некоторые старые наработки с Remoting на WCF. Мои старые remoting-сервисы хостились в IIS, причём их регистрация производилась автоматически при старте приложения в Global.asax. Алгоритм прост: при помощи Reflection в загруженных сборках ищутся типы, которые имплементируют некий известный интерфейс, и каждый такой тип регистрируется по определённому URL в качестве remoting-сервиса. Это очень удобно, поскольку позволяет избежать возни с конфигурационными файлами, которые я недолюбливаю.

Примерно таким образом:

// Global.asax
<script runat="server">
    
void Application_Start(object sender, EventArgs e) 
{     
  IDictionary props = new Hashtable();
  props["name"] = "Applicaiton Name";
  props["priority"] = "100";

  // Настройка каналов и форматтеров
  IClientChannelSinkProvider clSinkProvider = new SoapClientFormatterSinkProvider();
  IServerChannelSinkProvider srvSinkProvider = new SoapServerFormatterSinkProvider();  

  HttpChannel channel = new HttpChannel(props, clSinkProvider, srvSinkProvider);
  ChannelServices.RegisterChannel(channel, false);

  // Далее для каждого сервиса выполняется его автоматическая регистрация
  foreach (Type serviceType in MyReflectionUtil.FindServiceTypes())             // Псевдокод
  {
    WellKnownServiceTypeEntry wskte = new WellKnownServiceTypeEntry
    (
       type,                                             // Класс сервиса
       type.Name + ".rem",                               // URL сервиса
       WellKnownObjectMode.SingleCall
     );

     RemotingConfiguration.RegisterWellKnownServiceType(wskte);
   }
}


Как можно реализовать нечто подобное в WCF? В MSDN есть несколько примеров, но все они обязывают прописывать эндпойнты в web.config, чего мне хотелось бы избежать.
http://files.rsdn.org/67021/op.jpg
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.