Я нахожусь в процессе написания приложения уровня предприятия, использующего сервисы WCF и NetTCP. Изначально я выбрал NetTCP из любопытства, но позже определил, что это лучший вариант для меня, поскольку у меня могут быть вызванные сервисы, которые возвращают результаты в течение 5+ часов из-за большого объема данных.
То, как я в настоящее время порождаю свои сервисы, является многошаговым процессом. У меня есть часть конфигурации (с использованием System.Configuration), которая задает некоторые вещи по умолчанию (номер порта, имя сервера для клиентов, подключающихся к нему, нужно ли включать HTTP, а также NetTCP и т. Д.), И в которой есть коллекция «служб» под Это. Например, вот как выглядит основной:
<serverConfiguration tcpListenerPortNumber="60000" httpGetEnabled="true" httpListenerPortNumber="6000" serverName="localhost" retryEnabled="true" retryInterval="5" maxRetryAttempts="3">
<services>
<add virtualDirectory="Service1" applicationName="Service1" assembly="SampleService" type="SampleService.Service1" />
</services>
</serverConfiguration>
По сути, здесь происходит то, что моя служба Windows запускает и просматривает все в коллекции и порождает поток для каждой службы, чтобы ускорить время запуска, и каждый поток содержит домен приложений, где служба действительно живет, так что если служба есть какая-то ошибка, которая не приводит к выходу системы из строя.
«Проблема», с которой я сталкиваюсь, заключается в том, что это приложение содержит около 20 служб, и для запуска и запуска всех служб требуется 15-20 секунд. Я выполнил работу с потоками и частями AppDomain, чтобы привести его к этому значению (раньше это занимало более минуты, так как каждый сервис открывался последовательно), но мне все еще кажется, что на самом деле это может идти намного быстрее.
У кого-нибудь есть предложения? Google В Bing есть множество примеров для размещения одного сервиса, но я не нахожу много для реальных приложений (к сожалению, "Hello World" просто не нравится конечным пользователям). Если вы в настоящее время размещаете несколько служб через Windows Service и NetTCP, как вы это делаете?