По сути, в вашей службе вы должны иметь возможность определять любое количество конечных точек службы на любом количестве портов.
Есть два способа сделать это:
- определить базовый адрес и относительный адрес в конечной точке вашей службы
- определяет полный адрес в каждой конечной точке
Если вы сделаете вариант № 1, у вас будет что-то вроде этого:
<service name="YourService">
<host>
<baseAddresses>
<add baseAddress="net.tcp://YourServer:5151/Services" />
</baseAddresses>
</host>
<endpoint name="endpoint1"
address="Service1"
binding="netTcpBinding"
contract="IYourService" />
<endpoint name="endpoint2"
address="Service2"
binding="netTcpBinding"
contract="IYourService" />
</service>
Таким образом, в этом случае у вас есть две конечные точки службы для одного контракта, и они будут прослушивать URL-адреса
net.tcp://YourServer:5151/Services/Service1
и
net.tcp://YourServer:5151/Services/Service2
Вы можете иметь несколько конечных точек службы, но только один базовый адрес.
Другой вариант - не указывать базовые адреса и напрямую указывать полный адрес службы в конечной точке:
<service name="YourService">
<endpoint name="endpoint1"
address="net.tcp://YourServer:5151/Services/Service1"
binding="netTcpBinding"
contract="IYourService" />
<endpoint name="endpoint2"
address="net.tcp://YourServer:6868/Services/Service2"
binding="netTcpBinding"
contract="IYourService" />
</service>
В этом случае, поскольку вы определяете весь адрес в конечной точке, вы можете выбрать два разных порта TCP, по одному для каждой конечной точки. Это должно работать без проблем на всех. У вас есть две отдельные конечные точки на двух отдельных портах, которые слушают и обслуживаются одним и тем же классом обслуживания в фоновом режиме.
Марк