2012-02-13 2 views
3

У меня есть около 15-20 сервисов - каждая служба имеет свой собственный контракт и файл реализации. Я хочу разместить все эти службы в консольном приложении, чтобы во время разработки было легче отлаживать.Хост WCF-сервис в консоли Приложение

Структура проекта

  • Услуги - Решение
    • ServiceContracts - Проект
    • реализации - Проект
    • ServiceHost - проект службы Windows - Уже Inplace и работает нормально ..
    • ServiceConsoleHost - Проект - В настоящее время работает над этим.

У меня есть app.config файла в ServiceConsoleHost проекте здесь образец текст из файла конфигурации ...

<service name="TestpricingService" behaviorConfiguration="HostBehavior"> 
<host> 
    <baseAddresses> 
     <add baseAddress="http://localhost:8000/testService/pricingService"/> 
    </baseAddresses> 
</host> 
    <!-- use base address provided by host --> 
    <endpoint address="net.tcp://localhost:820/testService/pricingService" 
         binding="netTcpBinding" 
         bindingConfiguration="HostBinding" 
         contract="Test.Services.Contracts.IpricingService" /> 
    <!-- the mex endpoint is exposed at http://localhost:8000/testService/purchasing/mex --> 
    <endpoint address="mex" 
    binding="mexHttpBinding" 
    contract="IMetadataExchange" /> 
</service> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="HostBehavior"> 
     <serviceMetadata httpGetEnabled="True"/> 
     <serviceDebug includeExceptionDetailInFaults="True" /> 
     <dataContractSerializer maxItemsInObjectGraph="2147483647"/> 
    </behavior> 
    <behavior name="PooledHostBehavior"> 
     <serviceMetadata httpGetEnabled="True"/> 
     <serviceDebug includeExceptionDetailInFaults="True" /> 
     <ObjectPoolingServiceBehavior minPoolSize="0" maxPoolSize="5" idleTimeOut="30000"/> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

Заранее спасибо ...

+3

В чем вопрос? – Rajesh

+0

Необходим код для размещения этих сервисов в консоли приложения. – venky

+1

Что вы подразумеваете под «in loop»? Также в вашем app.config у вас есть привязка net.tcp и mexhttpbinding, и ваше имя службы не полностью соответствует требованиям. – Rajesh

ответ

2

Вы, вероятно, ищете самообслуживания. См. MSDN Reference на самообслуживании с использованием ServiceHost.

Также взгляните на enumerating WCF configuration bindings. Вот сообщение SO, которое описывает enumerating WCF service and endpoint bindings.

+0

Я уже посмотрел на это - весь пример показывает, как размещать одну услугу - в моем случае у меня 15 служб, и я не хочу создавать объект-хост для каждого оказание услуг. – venky

+1

@venky - вам нужна отдельная «ServiceHost» для каждой вашей службы. – SliverNinja

+0

Можем ли мы использовать serviceHost как коллекцию для хранения всех сервисов? – venky

1

Как вы сказали, вам необходимо 15 ServiceHosts для размещения 15 сервисов. Однако они не блокируют. Если вы заметили, что код MSDN просто сидит в ожидании нажатия клавиши, пока работает служба. Это означает, что все служебные коды выполняются на отдельных потоках. Поэтому создание и размещение 15 сервисов не является проблемой. Вам не нужен «цикл», поскольку он уже обрабатывается после выполнения ServiceHost.Open().

Смежные вопросы