2009-03-28 14 views
5

¿Cuáles son las mejores opciones para conectar aplicaciones PHP a la lógica ubicada en las bibliotecas .NET?¿La mejor manera de llamar a clases de .NET desde PHP?

PHP, desde v5.0, admite a DOTNET class que se supone que me permite invocar la lógica .NET desde un script PHP. Pero parece que hay muchos problemas: no he podido hacer que funcione de manera confiable, con clases de .NET arbitrarias. El documento es algo delgado y lo que está documentado no es realmente correcto. Las preguntas en los internets en esta clase son muchas, al igual que los informes de errores en php.net.

He podido obtener PHP para conectarme con .NET a través de la interoperabilidad COM, pero esto requiere que la clase .NET sea ComVisible. Y hasta donde yo sé, debido al requisito de COM, esto funciona solo en Windows.

He oído hablar del Phalanger project pero no conozco muchos detalles. ¿Funciona con scripts PHP arbitrarios? Trabajar en Linux? ¿Tiene implicaciones pesadas o de tiempo de ejecución?

¿Tiene sentido incluso hacer esto, o es uno de esos tipos de cosas que podría hacer pero no debería hacer?

EDITAR: Me gustaría escuchar sobre el caso general: hay una gran variedad de bibliotecas de clases .NET disponibles, y sería bueno poder aprovecharlas de diferentes entornos, incluido PHP. Los ejemplos pueden ser cifrado, registro, acceso a datos, clientes a clusters HPC. El escenario inmediato particular es una biblioteca ZIP con encriptación AES, disponible en .NET.

+0

¿Puede dar más información sobre el tipo de escenario en el que desea utilizar clases .NET? tanto en relación con el contexto como con lo que desea usar en .net classes – eglasius

Respuesta

0

Creo que la mejor manera es hacerlo a través de COM.

+2

COM no es seguro para subprocesos, y las aplicaciones web son cosas que funcionan en un entorno multiproceso ... Así que dudo mucho que esta sea la mejor manera. Puede ser la manera más fácil (y funcionar fantásticamente en su sistema de desarrollo de un solo usuario), pero como dijo Einstein: Haga que sea lo más fácil posible, pero no más fácil. –

2

Microsoft no envía ni es compatible con .NET en Linux. Si desea ejecutar el código .NET en Linux, entonces debería mirar Mono. No sé si PHP 5 es compatible con Mono así como con MicroSoft.NET

+0

Sé acerca de Mono. Pero no sé si PHP + Mono funciona o tiene sentido. – Cheeso

1

El uso de clases .net y métodos .net de llamadas desde Phalanger es muy fácil, ya que es un compilador de PHP para .NET. Puede consultar este artículo PHP for .NET: Introduction for .NET developers, el artículo es anterior (2007) por lo que puede haber pocos ejemplos desactualizados, pero se aplican los principios.

En Linux Phalanger funciona bien en Mono, la mayor limitación aquí es que no puede usar extensiones nativas (de distribución PHP), que solo son compatibles con Windows (el administrador de extensión en Phalanger está construido con C++/CLI que no es compatible con Mono). Pero aún puede usar algunas extensiones administradas para Phalanger que están disponibles.

El rendimiento de la Phalanger en la versión real (versión de febrero de 2011) es aproximadamente 2 veces más rápido que PHP 5.3.5 a través de FastCGI.

2

NetPhp es un contenedor que funciona sobre la extensión com_dotnet para PHP, por lo que puede llamar a cualquier ensamblado .Net en PHP, incluso si no es COM Visible y funciona con cualquier versión de .Net framework.

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

Cuestiones relacionadas