2012-06-26 14 views
7

estoy en este proyecto:PHP a C# y viceversa

Una página web que va a ser utilizado por las personas de la empresa front-end para consultar y actualizar los datos de una base de datos SQL. Estoy trabajando con Visual Studio y el código detrás (C#) está casi listo, por lo que las interacciones entre SQL y C# son correctas. Mi idea original era trabajar con ASP.NET que me es familiar, pero eso no será posible. Tengo que cambiarme a PHP. Entonces, hoy es mi primer día aprendiendo PHP, comprobando http://php.net/manual/en/index.php y muchas cosas parecen bastante similares a ASP.NET así que supongo que no será tan difícil.

De todos modos, algunas preguntas surgieron bastante rápido ya que quería escribir algo más que un "mundo de hola".

¿Hay una manera fácil de obtener/enviar variables C# de mi clase usando una página php? He leído algo sobre el uso de XML para hacerlo, pero aun así me estoy rascando la cabeza, ¿hay alguna otra forma más fácil de hacerlo?

+4

Tal vez crear un C# WebService y consumirlo a través de PHP. – canon

+0

Investigará su segunda opción, gracias mucha antisandad. –

+2

Sin reiniciar todo en PHP ... En segundo lugar, vuelvo a implementar el C# como un servicio web ... es la única opción que tiene si no quiere almacenar el código realmente ... para hacer el PHP Me resultaría fácil adoptar un enfoque RESTfull para el servicio web. – Brian

Respuesta

11

Tiene opciones.

  1. integración directa. PHP puede crear instancias y usar objetos .NET. Ver la biblioteca DOTNET en PHP. Por lo tanto, si ejecuta PHP en Windows y expone su lógica de .NET de acuerdo con los requisitos de la infraestructura PHP DOTNET, puede simplemente llamar a las clases de .NET directamente desde PHP. Algunas restricciones: PHP está diseñado para integrarse con .NET 2.0 runtime. No puede construir objetos .NET 4.0 y conectarse a ellos desde PHP.

  2. protocolos de red síncrona. Como otros han sugerido que puede exponer su lógica de C# a través de una interfaz de servicios web o RESERVA, invoque esos servicios desde PHP utilizando la biblioteca curl o file_get_contents(). La lógica de C# podría estar, pero no necesariamente, expuesta públicamente. En otras palabras, puede hacer que sea accesible solo desde el firewall de su aplicación, para que no sea posible el acceso público anónimo. por otro lado, su arquitectura puede requerir acceso a la misma API desde aplicaciones de terceros o usuarios. En ese caso, debe ser expuesto públicamente.

    En cualquier caso, público o privado, querrá utilizar WCF o ASPNET MVC para exponer estos servicios implementados en C#.

  3. mecanismos asincrónicos. PHP puede conectarse a MSMQ. Ver Using PHP to Open MSMQ Queues. Por supuesto, C# puede hacer lo mismo. Puede usar MSMQ como un mecanismo de comunicación de almacenamiento intermedio entre los dos mundos. Para hacer esto, necesitaría crear un protocolo de serialización de datos para los mensajes que coloca y coloca en la cola. JSON o XML serían las opciones adecuadas aquí.

  4. Base de datos. Si le preocupa emplear MSMQ ya que es "una pieza más de infraestructura para administrar", también puede emplear una base de datos como intermediario. Se puede acceder a una base de datos compartida tanto por PHP como por C# y usarse como una cola de mensajes o un conducto de comunicación. PHP inserta mensajes en una tabla MySQL, y la aplicación C# podría leerlos y procesarlos, luego colocar los mensajes de respuesta en una tabla diferente. Esto requeriría algún trabajo suyo para diseñar los formatos de mensaje, protocolos, índices y mecanismo de correlación de solicitud/respuesta. Pero depende de la tecnología existente y comprobada que usted ya sabe cómo usar.

  5. Finalmente, está Phalanger. Esto le permite compilar PHP en .NET Framework. Esto significa que la integración entre C# y PHP será simple. No lo he intentado pero podría satisfacer tus requisitos.

+0

muchas gracias por su respuesta, todas parecen buenas ideas pero supongo que probaré la biblioteca de dotnet primero ya que estoy de acuerdo con .net. ¡Gracias de nuevo! –

Cuestiones relacionadas