Лучший способ вызвать .NET классы из PHP? - PullRequest
5 голосов
/ 28 марта 2009

Каковы наилучшие варианты подключения приложений PHP к логике, расположенной в библиотеках .NET?

PHP, начиная с версии 5.0, поддерживает класс DOTNET , который должен позволять мне вызывать логику .NET из сценария PHP. Но, похоже, проблем много - я не смог заставить его работать надежно, с произвольными классами .NET. Документ довольно тонкий, и то, что задокументировано , не совсем правильно. Много вопросов в интернете по этому классу, а также отчеты об ошибках на php.net.

Мне удалось подключить PHP к .NET через COM-взаимодействие, но для этого необходимо, чтобы класс .NET был ComVisible. И, насколько я знаю, из-за требования COM это работает только на Windows.

Я слышал о проекте Phalanger , но не знаю многих деталей. Работает ли это с произвольными сценариями PHP? Работаете на Linux? Есть ли у него тяжелые перфоманс или последствия во время выполнения?

Имеет ли смысл даже делать это, или это одна из тех вещей, которые вы могли бы сделать, но не должны сортировать?

РЕДАКТИРОВАТЬ: Я хотел бы услышать об общем случае: существует большое разнообразие библиотек классов .NET, и было бы неплохо иметь возможность использовать их в различных средах, в том числе PHP. Примерами могут быть шифрование, ведение журнала, доступ к данным, клиенты в кластеры HPC. Конкретный непосредственный сценарий - это библиотека ZIP с шифрованием AES, доступная в .NET.

Ответы [ 4 ]

2 голосов
/ 17 апреля 2015

NetPhp - это оболочка, которая работает поверх расширения com_dotnet для PHP, поэтому вы можете вызывать любую сборку .Net в PHP, даже если она не видна COM и работает с любой версией .Net framework.

https://github.com/david-garcia-garcia/netphp

2 голосов
/ 28 марта 2009

Microsoft не поставляет и не поддерживает .NET в Linux. Если вы не хотите запускать код .NET в Linux, вам следует обратить внимание на Mono. Я не знаю, поддерживает ли PHP 5 Mono, а также MicroSoft.NET

1 голос
/ 03 февраля 2011

Использование классов .net и вызов методов .net из Phalanger очень просто, так как это PHP-компилятор для .NET. Вы можете проверить эту статью PHP для .NET: Введение для разработчиков .NET , статья более старая (2007 г.), поэтому здесь может быть несколько устаревших примеров, но принципы применимы.

В Linux Phalanger отлично работает на Mono, самое большое ограничение здесь в том, что вы не можете использовать собственные расширения (из дистрибутива PHP), которые поддерживаются только в Windows (менеджер расширений в Phalanger построен с C ++ / CLI, который не не поддерживается на Mono). Но все же вы можете использовать некоторые управляемые расширения для Phalanger, которые доступны.

Производительность Phalanger в реальной версии (выпуск за февраль 2011 года) примерно в 2 раза выше, чем в PHP 5.3.5 через FastCGI.

0 голосов
/ 10 октября 2009

Я думаю, что лучший способ сделать это через COM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...