Хочу портировать некоторые старые наработки с 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, чего мне хотелось бы избежать.