venky
venky

Reputation: 55

Host WCF service in console Application

I have around 15-20 services - each service has its own contract and implementation file. I want to host all these service in a console app so that it will be easier to debug during development.

Project structure

I have an app.config file in the ServiceConsoleHost project here the sample text from config file...

<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>

Thanks in advance...

Upvotes: 3

Views: 6079

Answers (2)

cdturner
cdturner

Reputation: 432

as everyone mentioned you need 15 ServiceHosts to host 15 services. However they are not blocking. If you notice the MSDN code just sits waiting for a keypress whilst the service is running. This means all the service code is running on separate threads. So creating and hosting 15 services is not an issue. You dont need a "loop" as that is already handled once you do ServiceHost.Open().

Upvotes: 1

SliverNinja - MSFT
SliverNinja - MSFT

Reputation: 31651

You are probably looking for self-hosted services. See MSDN Reference on self-hosting using ServiceHost.

Also take a look at enumerating WCF configuration bindings. Here is an SO post which describes enumerating WCF service and endpoint bindings.

Upvotes: 2

Related Questions