2012-01-22 5 views
0

У меня есть решение Visual Studio с 5 услугами WCF. Все они находятся в одном проекте «MyCompany.MySoftware.Services».Принимать несколько сервисов в одном приложении с использованием IIS 7.5

На этот раз я размещаю их все в IIS (я использую хостинг с помощью Windows Services, но планирую использовать AppFabric, поэтому решил изменить), и я включил использование HTTP и привязок Net.TCP.

Конфигурация каждого сервиса выглядит следующим образом:

<service name="Kipany.Belvedere.Services.Services.AppointmentService" 
     behaviorConfiguration="GeneralBehavior"> 
    <endpoint address="" binding="wsHttpBinding" 
      contract="Company.Software.Services.IService1" 
      name="appointmenthttp"/> 
    <endpoint address="" binding="netTcpBinding" 
      bindingConfiguration="netTcpBindingConfig" 
      name="appointmenttcp" 
      contract="Company.Software.Services.IService1"/> 
    <endpoint address="mex" binding="mexHttpBinding" 
      contract="IMetadataExchange"/> 
</service> 

<service name="Kipany.Belvedere.Services.Services.AppointmentService" 
     behaviorConfiguration="GeneralBehavior"> 
    <endpoint address="" binding="wsHttpBinding" 
      contract="Company.Software.Services.IService5" 
      name="appointmenthttp"/> 
    <endpoint address="" binding="netTcpBinding" 
      bindingConfiguration="netTcpBindingConfig" 
      name="appointmenttcp" 
      contract="Company.Software.Services.IService5"/> 
    <endpoint address="mex" binding="mexHttpBinding" 
      contract="IMetadataExchange"/> 
</service> 

Я прочитал в этом посте, что я должен позволить своему netTcp конечную точку без адреса при размещении в IIS. На данный момент мой IIS сконфигурирован с портом 808, поэтому я понимаю, что все мои сервисы используют этот порт.

Вопросы:

 
1 - Is this a good architecture to use ? 
2 - Can I face problems with this configuration ? 
3 - What if I want to use every service in a different tcp port ? 
4 - The port for tcp binding is configurated in the Default Website but I have the option to fill the 'address' in the endpoint, what happens in this case ? As I have to put ONE port in the Default Website binding, how can I use more than one port in my Web.Config ? 
5 - My tcp is using the 808 port but this is my Client's Web.Config: 

Где 808 порт?

ответ

0
  1. эта архитектура прекрасно
  2. нет ничего такого, в конфигурации, которые будут вызывать проблемы
  3. порта, который использует TCP настроен на уровне сайта в IIS (связывание сайта), так что услуги будет должны находиться на разных сайтах для использования разных портов - порт, а остальная часть адреса - для маршрутизации запроса, поэтому нет никаких преимуществ для услуг, находящихся на разных портах.
  4. Как сказано в 3 - все услуги в одном сайт будет использовать тот же порт
  5. клиент должен чтобы полностью определить адрес, но в IIS, на котором установлено определение служебного адреса (включая порт), выводится из конфигурации IIS и файла .svc.
+0

Таким образом, только один порт может обрабатывать все запросы без боли? Как насчет параллелизма? Два запроса, выполненные в одно и то же время, будут обрабатываться параллельно или один будет ждать другого? – Catinodeh

+0

Все зависит от ваших настроек и настроек параллельного использования вашего сервиса (я писал об этом здесь http://www.dotnetconsult.co.uk/weblog2/PermaLink,guid,1efac821-2b89-47bb-9d27-48f0d6347914.aspx), но конечно, нет основополагающей причины, по которой вы не можете обрабатывать запросы параллельно –