Размещение нескольких служб в одном приложении с использованием IIS 7.5 - PullRequest
0 голосов
/ 22 января 2012

У меня есть решение Visual Studio с 5 службами WCF. Все они находятся в одном проекте "MyCompany.MySoftware.Services".

На этот раз я размещаю их все в 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>

Я прочитал в этом посте, что при размещении в IIS мне нужно разрешить конечной точке netTcp без адреса. На данный момент мой 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?

1 Ответ

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