Подключение к службе WCF в php через NetTcpBinding - PullRequest
1 голос
/ 19 декабря 2009

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 19 декабря 2009

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

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

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

0 голосов
/ 27 апреля 2012

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

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

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

0 голосов
/ 20 декабря 2009

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

...