Подключение к службе WCF в php через NetTcpBinding

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

У меня есть служба WCF, которая находится внутри моей локальной сети. Для клиентов .NET в моей локальной сети подходящей привязкой является NetTcpBinding. Однако одним из моих клиентов является веб-приложение PHP. Есть какой-либо способ сделать это?

Обновление: мне хорошо известно, что у меня может быть несколько конечных точек. Я хочу знать, могу ли я наслаждаться скоростью, уменьшенным сетевым трафиком и отсутствием задержки nettcp по сравнению с wshttp из приложения php.

Это приложение PHP, работающее в Windows, поэтому взаимодействие COM или .NET Interop будет работать. Мне интересно, есть ли «родное» решение, такое как модуль pecl или грушевая библиотека.


person Justin Dearing    schedule 19.12.2009    source источник
comment
+1 Удалось ли вам найти правильное решение для использования NetTcpBinding в PHP? Я ищу то же здесь.   -  person Will Marcouiller    schedule 25.04.2012
comment
@WillMarcouiller Я этого не делал, но опубликовал новый ответ, в котором предположил некоторые возможности.   -  person Justin Dearing    schedule 30.04.2012


Ответы (3)


NetTcpBinding предназначен только для связи между WCF и WCF. (MSDN)

Эта привязка использует собственный протокол для связи, и она не предназначена для взаимодействия, поскольку она оптимизирована для WCF-to-WCF.

У вас могут быть разные конечные точки для службы WCF. Почему бы вам не предоставить другую конечную точку с привязкой, которую можно было бы легко использовать из вашего php-приложения? (например, BasicHttpBinding или WebHttpBinding)

person Daniel Vassallo    schedule 19.12.2009
comment
Задуманный и способный тоже две разные вещи. Но я рассмотрю этот документ. - person Justin Dearing; 19.12.2009
comment
@Justin: у вас могут быть разные конечные точки для вашей службы WCF. Почему бы вам не предоставить другую конечную точку с привязкой, которую можно было бы легко использовать из вашего php-приложения? - person Daniel Vassallo; 20.12.2009

Вы можете добавить еще одну привязку к существующей конечной точке службы. Так почему бы вам просто не добавить привязку basichttp или wshttp в дополнение к привязке nettcp. Это всего лишь несколько строк в вашем конфигурационном файле, не требующих изменения кода.

person softveda    schedule 19.12.2009
comment
Мне нужна компактность, скорость и отсутствие задержек, которые дает netTcp по сравнению с http. Ваше предложение именно то, что я делаю сейчас. - person Justin Dearing; 20.12.2009

Возможны следующие варианты взлома. Я включаю их туда для других, которые находят этот вопрос.

  • Это позволяет создавать сборки .NET с неуправляемым экспортом, который можно вызывать из пользовательского модуля PHP. ,

  • Phalanger интерпретирует PHP в среду выполнения .NET. Это также дает вам полный доступ к .NET API. Я только немного поиграл с этим. Однако он определенно читает ваш файл web.config. Если он не учитывает аспект служб WCF в файле web.config, я бы использовал этот скрипт PowerShell, изначально разработанный Кристианом Глесснером, в качестве справки для полной настройки заглушки клиента службы WCF в коде.

person Justin Dearing    schedule 27.04.2012