Запуск нескольких служб через сеть.труба в WCF


Я создаю распределенное приложение, которое потребует 6 различных служб. Мне придется продемонстрировать приложение на моем ноутбуке XP с помощью Visual Studio 2008.

Возможно ли запустить несколько служб на localhost одновременно, все используя net.трубка?

Например:

net.pipe://localhost/DirectoryService
net.pipe://localhost/MathService

Если нет, то есть ли другой способ разместить эти службы WCF без использования IIS/webdev server? сеть.протокол TCP? Что-то еще?

3 4

3 ответа:

Да, при условии, что адреса привязки уникальны. Два примера, которые вы показали, прекрасно работают с сетью.обвязка труб.

Имейте в виду сеть.связывание труб будет работать только на локальной машине. Если вы хотите, чтобы ваши службы были доступны с удаленных компьютеров, вам потребуется использовать другую привязку, например net.протокол TCP. Тем не менее, нет.pipe-эторекомендуемая привязка , которую следует использовать, если ваши службы работают на локальном хосте, поскольку она более эффективна, чем другие привязки.

Еще одна вещь, которую вы должны знать о сети.адреса каналов - это то, что вы предоставляете URN, а не URL. сеть.pipe-это реализация в памяти, и" адрес", который вы указываете, может быть любым.

net.pipe://IHateCats
net.pipe://NamedPipes/Are/Fast

Все это будет работать, независимо от любого другого фактора. Это просто уникальный идентификатор для этого именованного канала. Сетевой стек не участвует в этой форме связи.

Вы можете использовать HTTP в качестве конечной точки службы без IIS, взгляните на класс ServiceHost . Это то, что я использую для локального тестирования WCF, и это работает очень хорошо.