Desarollo web con Visual C++

últimamente, mucha gente me está preguntando como puede llevar código escrito en Visual C++ a la web. Aunque en principio C++ no parece el lenguaje ideal para programar «para internet», existen varias motivaciones:


 Aprovechar código o librerias existentes.
 Obtener un mejor rendimiento.
 Utilizar servicios web para interoperar.
 Aprovechar el know-how exitente en C++.


Con idependencia de la motivación, que seguro existen algunas otras, el problema habitual es que la gente desconoce que opciones tiene en Visual C++, y que realmente son variadas, potentes y naturales para el programador de C++. Si no estas familiarizado con las diferentes librerias de Visual C++ lee este post anterior.


En Visual C++ 2005 contamos con variadas posibilidades:


Desarrollar componentes COM en C++ usando ATL, o wrappers .Net manejados usando C++/CLI  y llamarlos desde una aplicación construida en Asp o Asp.net. De manera que el proceso lo hace el componente y la aplicación ASP(.net), solo se encarga de mostrar los resultados y la interfaz de usuario. Pero esta no es una solución 100% C++.


Los clasicos cgi, que podemos programar en cualquier lenguaje que sea capaz de devolver texto a una salida estandar. Se han avandonado por su baja escalabilidad, puesto que cada petición es atendida por un proceso y, especialmente en Windows, crear nuevos proceso es una operación costosa.


Los filtros y las extensiones ISAPI (Internet Server Application Programming Interface) es un API que expone IIS y que permite programar modulos y filtros. ISAPI es una API programable en C, de bajo nivel, y que nos aporta poca ayuda, pero que se encuentra en la base de la programación para IIS y por lo tanto bajo todas las librerias que permiten el desarrollo web, ASP.net incluido. Generalmente, en Visual C++, el camino a seguir no es usar ISAPI directamente sino a través de alguna libreria, MFC  tiene soporte para construir filtros y modulos ISAPI. MFC es una libreria que ya tiene sus añitos y por tanto en ciertos aspectos a sido superada. Es interesante además esta entrada en MSDN que explica las diferencias entre CGI e ISAPI


Pero sin duda, cuando hablamos de programación para web con Visual C++ 200x la opción clara es usar ATL Server.




 ATL Server, es un conjunto de plantillas que permiten escribir aplicaciones web (usando el tipo de proyecto ATL Server Project) y servicios web (usando el tipo de proyecto ATL Server Web Service) extremadamente eficientes de una manera sencilla, pues nos proporciona una serie de clases y atributos y un sistema de plantillas para generar contenido HTML (Server Response Files). Sin duda es el camino a seguir en este tema que nos ocupa. Si estas interesado en ATL Server, debes leer estos articulos.


ATL Server and Visual Studio .NET: Developing High-Performance Web Applications Gets Easier
Use ATL Server Classes to Expose Your Unmanaged C++ Code as an XML Web Service
ATL Server Versus ASP.NET


Otra opción con la que poca gente cuenta es la posibilidad de utilizar C++/CLI, la implementación de C++ para .Net, para construir sevicios web. Esta opción no es 100% nativa, pero nos permite con poco esfuerzo y aprovechando las excelentes caracteristicas de interoperabilidad de C++/CLI exponer liberias nativas como servicios web con gran sencillez.

2 comentarios sobre “Desarollo web con Visual C++”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *