Me pregunta Ivanov Cepeda de Microsoft Colombia como conectar una aplicación Java a SQL Server 2005, con la ayuda de algunos de los muchachos del grupo COS (Commercial Open Source) de Gattaca hemos revisado el tema y tenemos la siguiente alternativa: 1. Descargar de este URL el JDBC Driver para SQL 2005. 2. Seguir con mucha atención las instrucciones del archivo Install.txt, este driver es tanto para sistemas operativos windows como linux, para los linux trae el tar.gz, para los windows el .exe. 3. Ahora si puede escribir una clase como esta package persistencia;
import java.util.*;
import java.sql.*;
public class Consultas {
public static void main(String[] args) {
// Create a variable for the connection string.
String connectionUrl = "jdbc:sqlserver://192.168.16.19:1433;forwardReadOnlyMethod=direct" +
"databaseName=MyDataBase;user=UserSQL;password=xxxxxxxx";
// Declare the JDBC objects.
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
// Establish the connection.
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(connectionUrl);
// Create and execute an SQL statement that returns some data.
String SQL = "SELECT TOP 10 * FROM ApplicationUser;";
stmt = con.createStatement();
rs = stmt.executeQuery(SQL);
// Iterate through the data in the result set and display it.
while (rs.next()) {
System.out.println(rs.getString(4) + " " + rs.getString(6));
}
}
// Handle any errors that may have occurred.
catch (Exception e) {
e.printStackTrace();
}
finally {
if (rs != null) try { rs.close(); } catch(Exception e) {}
if (stmt != null) try { stmt.close(); } catch(Exception e) {}
if (con != null) try { con.close(); } catch(Exception e) {}
}
}
}
Espero que sea de Ayuda, y Gracias a Carlos Andres Valencia que le saco un rato a sus 11 proyectos para ayudarnos a resolver esto.
Juan Carlos Peláez
MCTS
Miembro del Microsoft Speaker Group Andino
Miembro de Influencers Group Colombia.
Keywords: SQL Server 2005, JDBC, JDBC Driver for SQL Server 2005, Conectividad, JAVA, SQL2005, SQL Server 2005, Drivers, Interoperabilidad
Microsoft ha anunciado el lanzamiento de la version final (1.0) de Silverlight un plugin para los diferentes browsers de internet que permite ejecutar código manejado y/o javascript con presentaciones innovadoras basadas en XAML, así como mejoras en aspectos como el video. Una de las características principales que son necesarias para que esto sea exitoso y pueda competir realmente con Flash Player es que sea interoperable entre plataformas y entre los browsers. para lograr que funcione correctamente sobre Linux el grupo de Mono (en Novell) con Miguel Icaza a la cabeza han establecido una alianza para crear MoonLight, la version Linux, de SilverLight. Algunas de las caracteristicas importantes de Silverlight incluyen: - · Render de XAML en el browser, animaciones, gráficos vectoriales y todos los juguetes que contiene esta tecnología.
- · soporte para streaming desde cualquier web server, esta característica es muy útil ya que simplifica la infraestructura y la experiencia de usuario al implementar video en un sitio web.
- · Soporte opcional para servidores de Streaming como Windows Media Server. (Producto gratuito que hace parte de Windows Server)
- · Muchas mejoras en la experiencia del usuario al trabajar con Video en el Servidor.
También fue anunciado el lanzamiento de la versión final de Expression Encoder, una aplicación realmente buena para generar videos que pueden usarse con Silverlight, esta aplicación permite tomar un video de casi cualquier formato y convertirlo en WMV. Sobre la propagación de este componente, algunos cálculos independientes demuestran que los sitios propiedad de Microsoft tocan las dos terceras partes de los usuarios de internet en un año, esto sin contar con muchos otros sitios como terra, MBL, etc. que ya están usando Silverlight en sus sitios garantizarán la rápida popularización de este componente y sus aplicaciones. Convirtiendo Archivos a XAML. Como una de las características fundamentales de Silvelight es el uso de XAML para el manejo de los aspectos gráficos muchos necesitarán convertir sus activos (assets) de otras herramientas o formatos a XAML, para ello algunos han creado herramientas que siguen avanzado en ese tema, una bien recomendada (aunque no la he usado personalmente) está publicada en WPF-Graphics site Gattaca y Silverlight. La primera compañía colombiana en anunciar la capacidad de realizar proyectos con Expression Blend y Visual Studio, así como proyectos que utilicen las funcionalidades de Silverlight es Gattaca S.A. Esto beneficia especialmente a los clientes de Gattaca en España, Colombia y Latinoamérica. Pd: Un buen ejemplo de cómo usar Silverlight: MSN's new Election '08 site, también creo que es un buen ejemplo de cómo debería ser usada la tecnología en un proceso electoral, como el que se avecina en Colombia, sin embargo se requiere contenido de parte de los diferentes candidatos que es algo que parece que ninguno tiene. Espero que sea de Ayuda. Juan Carlos Peláez MCTS Miembro del Speaker Group de Microsoft Andino Miembro del Influencers Group Colombia. Keywords: Silverlight, Microsoft Expression Encoder, Microsoft Expression Blend, Encoder, Visual Studio 2008, Convertir a XAML, Proyectos con Silverligth, Proyectos con Microsoft Expression.
Roberto Fontanarrosa "El Negro", no requiere ni presentación ni homenaje de alguien como yo, cuando miles de personas en todo el mundo ya han expresado el dolor por su perdida y lo mucho que se le extrañará. A pesar de ello no pude evitar este post luego de leer su "ultimo" libro de cuentos titulado el rey de la milonga, gracias a Noel que tuvo la cortesía inmensa de traerme un ejemplar en su última visita a Buenos Aires. (el tipo de artículos que no es que no se puedan comprar en Colombia o por Internet, pero que adquieren un valor incalculable por la historia asociada, por el detalle y por el cariño. Gracias de nuevo Noelito). El negro se volvió famoso en todo el mundo por ser un tipo muy amable, nada agrandado, consistente con el mismo, con sus pasiones y comprometido con sus amigos, todo un ser humano. No será fácil saber si fue un buen escritor, que un gran dibujante y humorista lo fue sin duda, pero hizo algo importante en el entorno de la literatura, acerco la letras a las personas de a pie, al lector del día a día, le robo algunos lectores a la televisión, una de las razones que hicieron esto posible fue su gran amor por el futbol, por su ciudad (rosario, argentina) y por sus tradiciones y costumbres argentinas. Extracto de su cuento titulado: Una interesante observación sobre las Narigonas. (...) Y hasta el perrito compañero...-canturreó Ricardo riéndose. -...que por tu ausencia no comía...-se unió el Chelo, también a carcajadas -...al verme solo el otro día, también se fue- terminaron los dos al unísono. -ojo, ojo, ojo-casi se puso de pie el Pitufo-, que ese tango replantea muy seriamente la verosimilitud de lo que se dice que los perros son tan fieles, el mejor amigo del hombre y todo eso. -Perro hijo de mil putas, apenas lo vio solo a ese muchacho se fue a la mierda... -Ah sí, viejo - se enojo el Chelo- si vos no le das de comer o lo cuidas como querés que se quede con vos. -¡Porque es tu amigo, querido - salto Ricardo - y te debe lealtad! -Lealtad las pelotas- dijo Belmondo -. Seguro que ahí la que le daba de comer era la mina. Cuando se piro la mina el tipo ya se tiró al abandono y no le daba ni cinco de bola al perro ese. - Porque ese tango es engañoso -agito el dedo índice el pitu -. Narra ese acontecimiento como al pasar, sin darle importancia, pero no es un dato menor que un perro argentino se raje de la casa porque el tipo se quedó solo. -Era un dogo argentino que no reconoce al dueño. -¡El perro- Ricardo golpeo con el puño contra la mesa- se tiene que quedar ahí con el dueño aunque el dueño sea un pelotudo al que se lo cagó la mina, porque para eso es un perro de tango! ¡Si quiere comer bombones o canapés que labure en un bolero! (...) Este fragmento me gustó especialmente por involucrar los tangos, los perros y las discusiones típicas que se dan entre amigos al tocar apasionadamente cualquier tema. Y pues si Cervantes ha sido recordado por su aporte al español al crear una novela que recopilaba el idioma y que permitía a los comunes acercarse a la novela, entonces el aporte de Fontanarrosa no puede ser considerado poco a la letras latinoamericanas. Juan Peláez. Keywords: Literatura, Roberto Fontanarrosa, El rey de la Milonga y Otros Cuentos, Opinion.
Otra de las áreas de interés de la Plataforma Microsoft son los servicios de SharePoint, que en la versión 3.0 corren en maquinas Windows 2003 y permiten construir rápidamente intranets, aplicaciones Web y Sistemas de Colaboración muy integrados con la plataforma Windows y Office.
Sin embargo para los desarrolladores que usamos Windows Vista (o Windows XP) en la máquina de desarrollo ha sido un poco complicado desarrollar webparts y otros tipos de proyectos para sharepoint ya que no instalan sobre Windows Vista, esto nos ha llevado a usar soluciones de maquinas virtuales y demás.
Sin embargo buscando en internet he encontrado la forma de instalar las extensiones de SharePoint para Visual Studio 2005, lo que simplifica mucho el desarrollo de estos proyectos sobre mi maquina de trabajo.
La solución es crear la siguiente llave en el registro para que el instalador se ejecute normalmente.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\12.0] "Sharepoint"="Installed"
Referencia: http://blogs.msdn.com/jannemattila/default.aspx ,
Yo lo acabo de probar y funcionó perfectamente. Aquí una foto de mi Visual Studio en Windows Vista listo para crear un proyecto de SharePoint.
Recursos
Windows SharePoint Services
Windows SharePoint Extensions for Visual Studio 2005.
Espero que sea de ayuda.
Actualizacion Nov 24 de 2008: Me ha escrito Jesus Arantegui desde España. Él ha descubierto que este procedimiento solo funciona cuando el visual studio estan en el mismo idioma que la extensiones de sharepoint, si uno baja las extensiones en ingles, por ejemplo, pero el VS esta en espanol, parecera estar bien instalado pero los proyectos no apareceran en la ventana de creacion de proyectos.
Juan Carlos Peláez
MCTS.
Miembro del Microsoft Speaker Group Andino
Miembro del Microsoft Influencers Group de Colombia.
KeyWords: Sharepoint Services 3.0, Juan Peláez, .Net, Windows Vista, Extensiones para Visual Studio 2005, Instrucciones, Instalacion, Programación, Soluciones SharePoint, WSS 3.0. Web Parts, Templates
Este post es una continuación del anterior sobre FastCGI y el IIS7, en Windows 2008 Beta 3 y Windows Vista, se incluye como soporte nativo FastCGI, lo que permite correr en maquinas Windows aplicaciones PHP y otros lenguajes de Script con altísimo rendimiento y estabilidad, incluso en ambientes en producción. El FastCGI CTP preview 2 también pueden montarse sobre IIS 5.1 y 6.0.
En este post, más allá de las instrucciones de cómo instalar una aplicación PHP en Windows Vista o Windows 2008, hablaré un poco de las razones por las que el rendimiento de las aplicaciones se incrementa al usar FastCGI.
Primero un poco de Antecedentes.
Common Gateway Interface (CGI)
El estándar de facto para aplicaciones en servidores web es CGI, que fue implementado inicialmente por el servidor NCSA. CGI tiene varios beneficios:
· Simplicidad. es fácil de entender
· Independencia del Lenguaje. Las aplicaciones CGI pueden ser escritas en cualquier lenguaje
· Independencia de Procesos. Ya que las aplicaciones corren en procesos separados, las aplicaciones con problemas no pueden dañar el servidor web o acceder al estado interno y privado del servidor.
· Estándar Abierto. Alguna forma de CGI ha sido implementada en todos los servidores web
· Independencia Arquitectónica. CGI no está atado a ninguna arquitectura particular de servidor
CGI también tiene algunas deficiencias importantes. El problema principal es el rendimiento: debido a que se crea un nuevo proceso para cada request y este se elimina cuando el request se completa, la eficiencia es pobre.
CGI también tiene una funcionalidad limitada: solo soporta el Rol "responder", donde la aplicación genera la respuesta que es enviada al cliente, los programas CGI no pueden asociarse a otras partes del procesamiento del request como autorización o registro de errores.
APIs de Servidor
En respuesta a los problemas de rendimiento de CGI, diferentes compañías han desarrollado APIS para sus servidores. Los dos más relevantes son NSAPI de Netscape e ISAPI de Microsoft. El servidor Apache también tiene un API.
Las aplicaciones asociadas al API del servidor pueden correr mucho más rápido que los programas CGI. El problema del Inicio / iniciación se ha mejorado, ya que la aplicación corre en un proceso dedicado de servidor y se persiste entre las solicitudes. Las API del servidor Web, ofrecen mucha más funcionalidad que CGI, cada persona puede escribir extensiones que realizan control de accesos, acceder a los archivos de registro del servidor, y pueden conectarse en otras etapas del procesamiento del request.
Entonces que es FastCGI?
La interface FastCGI combina los mejores aspectos de CGI y las APIs propietarias. Como CGI, las aplicaciones FastCGI corren en procesos separados e independientes. Las ventajas de FastCGI's incluyen:
· Rendimiento. Los procesos FastCGI son persistentes –se re usan en manejar múltiples solicitudes. – Esto resuelve los problemas de rendimiento de CGI de crear nuevos procesos para cada request.
· Simplicidad, fácil migración desde CGI. La librería de aplicación FastCGI simplifica la migración de las aplicaciones CGI existentes. Las aplicaciones construidas con FastCGI pueden correr programas CGI para compatibilidad con Web Servers antiguos.
· Independencia de Language. Como CGI, las aplicaciones FastCGI pueden ser escritas en cualquier lenguaje.
· Independencia de Procesos. Una aplicación FastCGI con errores no puede corromper el core del servidor web o alguna otra aplicación. Una aplicación FastCGI no puede robar ningún secreto (como las llaves de sesión para encripción) del servidor Web.
· No-propietario. FastCGI es soportado por todo los productos del Open Source del Mercado, incluyendo apache, NCSA y ahora es soportado por servidores comerciales de Microsoft y Netscape.
· Independencia Arquitectónica. La interface FastCGI no está atada a ninguna arquitectura particular de servidor. Cualquier servidor puede implementar la interface FastCGI. De igual manera, FastCGI no impone ninguna arquitectura a la aplicación: las aplicaciones pueden ser single o multi-threaded, sin importar la arquitectura de hilos del servidor web.
· Soporte para computación distribuida. FastCGI prove soporte para correr aplicaciones remotamente, lo cual es útil para distribuciones de carga y manejo externo de web sites.
La interface FastCGI
La funcionalidad que provee la interface FastCGI es muy similar a la que provee CGI. Para entender mejor el protocolo FastCGI. El procesamiento de peticiones CGI es así:
1. Para cada Request, el servidor crea un nuevo proceso y el proceso se inicializa por sí mismo.
2. El servidor web pasa la información del request( como host remoto, nombre de usuario, encabezados HTTP, etc) a las variables de entorno del programa CGI.
3. El web server envía cualquier input del cliente (como valores entrados por el usuario en un formulario HTML) al estándar input del programa CGI.
4. El programa CGI escribe cualquier output para que sea retornado al cliente como salida estándar. La información de error es escrita por el web server.
5. Cuando el proceso CGI se cierra, la solicitud queda completa.
FastCGI es conceptualmente muy similar a CGI, con dos diferencias principales:
· Los procesos FastCGI son persistentes: después de finalizar una solicitud, los procesos quedan en espera en vez de finalizar.
· En vez de usar variables de ambiente del sistema operativo y pipes, el protocolo FastCGI multiplexa la información del ambiente, el input estándar, el output estándar y error sobre una conexión full-duplex. Esto permite a los programas FastCGI correr en maquinas remotas, usando conexiones TCP entre el servidor web y las aplicaciones FastCGI.
El procesamiento de una solicitud en una aplicación single-threaded FastCGI ocurre así :
1. El Web server crea la aplicación FastCGI para manejar las solicitudes al servidor. El proceso puede ser creado en el inicio o creado por demanda.
2. El programa FastCGI seinicializa por sí mismo, y espera una nueva conexión con el web server.
3. Cuando llega una solicitud de un cliente, el servidor web abre una conexión a los procesos FastCGI. El servidor envía la información de ambiente y el input estándar sobre la conexión.
4. el proceso FastCGI envía la salida estándar y la información de errores de regreso al servidor sobre la misma conexión.
5. Cuando el proceso FastCGI cierra la conexión, la solicitud se completa. El proceso FastCGI queda a la espera de otra conexión desde el servidor web.
Las FastCGI pueden correr localmente (en la misma máquina que el web server) o remotamente. Para aplicaciones locales, el servidor usa un full-duplex pipe para conectarse con el proceso de la aplicación FastCGI . Para aplicaciones remotas, el servidor usa conexiones TCP.
Las aplicaciones FastCGI pueden ser single-threaded or multi-threaded. para aplicaciones single threaded, el servidor web mantiene un pool de procesos (si la aplicación corre localmente) para manejar las solicitudes de los clientes. El tamaño del Pool es configurable por el usuario. Las aplicaciones FastCGI Multi-threaded pueden recibir múltiples conexiones del web server y manejarlas de forma simultánea en un solo proceso. (De esta forma lenguajes, con soporte para multi thead, garballe collection, entre otros, lo hacen lenguajes naturales para implementar aplicaciones multithread usando FastCGI)
Roles de Aplicación.
Un problema importante con CGI es su funcionalidad limitada: los programas CGI solo proveen respuestas simples al request. FastCGI provee funcionalidad ampliada con soporte para tres diferentes roles de aplicación:
· Responder. este es el rol básico en FastCGI y corresponde a la funcionalidad básica ofrecida por CGI hoy.
· Filter. las aplicaciones FastCGI filtran los archivos solicitados al web server antes de que sean enviados al cliente.
· Authorizer. El programa FastCGI realizan una decisión de control de acceso para el request ( por ejemplo realizando una búsqueda a la base de datos del tipo Usuario/password).
Otros roles serán definidos en el futuro. Por ejemplo, un rol "logger" podría ser útil, donde el programa FastCGI podría recibir el registro del log del servidor para procesamiento y análisis en tiempo real.
Que tan rápido es FastCGI?
La respuesta depende de la aplicación, algunas pruebas hechas en internet muestra lo siguiente:
En esta medición se usa un archivo, una solicitud CGI y una fastCGI, usando una aplicación que retorna un número fijo de bytes.
Archivo
21ms + 0.19ms per Kbyte
FastCGI
22ms + 0.28ms per Kbyte
CGI
59ms + 0.37ms per Kbyte
Con este dato podemos trata de calcular la velocidad después de migrar una aplicación típica CGI de base de datos a FastCGI, asumiendo que la aplicación toma 50ms para inicializar las conexiones a las bases de datos y genera 5k de datos. Los resultados finales pueden calcularse así:
CGI
59ms + 50ms + (0.37ms)(5) = 111ms
FastCGI
22ms + (0.28ms)(5) = 23ms
En esta prueba, FastCGI tuvo una ventaja de rendimiento de 5x sobre CGI, más que nada debido a no tener que crear e iniciar un nuevo proceso para cada solicitud.
En resumen
FastCGI es un protocolo estándar que permite a ejecutables que usen Frameworks CGI interactuar con un Web Server.
La mayor diferencia con el Protocolo CGI Estándar es que FastCGI rehúsa los Procesos CGI para múltiples peticiones, lo que incrementa el rendimiento en comparación con CGI.
El soporte de IIS para FastCGI permite a IIS hospedar programas CGI normales como PHP, o Ruby On Rails, usando el protocolo FastCGI, ofreciendo alto rendimiento y estabilidad en ambientes de producción
Para usar el soporte FastCGI en IIS se requieren tres elementos:
· El web server IIS (IIS5.1, IIS6, and IIS7).
· El componente FastCGI para IIS
· EL programa CGI que será hospedado.
Como funciona?
El servidor web despacha las solicitudes http que se han realizado a su aplicación usando el componente FastCGI, este a su vez lanza el programa ejecutable CGI y reenvía el request para que sea procesado. Una vez la solicitud se procesa y la respuesta se finaliza y es retornada al servidor y al cliente, el proceso CGI es usado para llamadas siguientes. Esto permite evita las penalidades de alto rendimiento de iniciar un nuevo proceso para cada solicitud, lo que resulta en mucho mejor rendimiento y escalabilidad en ambientes de producción.
El protocolo FastCGI es estándar si quiere tener más información sobre FastCGI puede ver más aquí. http://www.fastcgi.com/devkit/doc/fcgi-spec.html.
El paquete FastCGI es totalmente compatible con la distribución actual y oficial PHP 5.x disponible para Windows desde www.php.net/downloads. También puede usar el preview de Fast CGI con la instalación existente de PHP 5.x (sin embargo usar la versión ThreadSafe incrementa el rendimiento hasta un 30%)
La versión 5.2.3 también contiene las mejoras desarrolladas por Zend para mejorar el rendimiento del motor de PHP sobre Windows.
Espero que sea de Ayuda
Juan Carlos Peláez
MCTS
Miembro del Microsoft Speaker Group Andino
Miembro del Microsoft Influencers Group de Colombia.
Keywords: PHP, FastCGI, Windows Vista, Windows 2008, IIS7, Arquitectura.
Con el lanzamiento de Windows 2008 Beta3 (del que Gattaca es Early Adopter gracias a Invitación de Microsoft Colombia) hemos comenzado la fase final de la migración de nuestras aplicaciones para esta plataforma. Sin embargo hay algunas cosas nuevas en este servidor que merecen verse con atención, una de ellas es el soporte nativo de PHP y otros lenguajes de Script como IronRuby a través de una iniciativa conjunta de Microsoft y Zend para desarrollar algo llamado FastCGI que es una nueva forma mejorada para multiprocesamiento de CGI.
En este post comentaremos sobre la experiencia de instalar y correr aplicaciones de PHP sobre IIS7 usando FastCGI.
El Ambiente.
Esto puede hacerse en Windows 2008 Beta3 que tiene el soporte FastCGI nativo ó
En una maquina corriendo Windows Vista con IIS7, en este caso debe instalarse el soporte FastCGI CTP 2 disponible en este link
También hay que contar con PHP, este puede descargarse de http://www.php.net/ , aunque hay gente corriendo esto con php4, yo lo hice con la versión 5.2, en esta página pueden descargarse diversas versiones pero la recomendación es bajar la que se llama PHP 5.2.3 Non-thread-safe Win32 binaries [9,523Kb] - 01 June 2007, esta versión está optimizada para correr con IIS7 y FastCGI. (Las otras también corren y muy bien, pero esta tiene un rendimiento 30% superior según las pruebas realizadas por Microsoft y Zend)
La Instalación
El PHP
Descomprimir el PHP en una ruta sin espacios en el nombre, por ejemplo c:\php o d:\php, renombrar el archivo php.ini-recomended por php.ini, abrir el archivo php.ini y cambiar las siguientes variables:
Redirect cgi a falso (cgi.force_redirect = 0), modificar la ruta de las extensiones (extension_dir = "D:\PHP\ ext") (o la ruta en donde haya puesto el PHP),
También debe crear las variables de Entorno (En Panel de Control, Sistema, Configuración Avanzada del Sistema, Opciones Avanzadas, Variables de Entorno) Agregar la variables de Usuario “PHPRC = d:\php\php”, agregar en la variable del Sistema Path la ruta: “d:\php\php”
Con eso el PHP debería estar listo para correr en el modo anterior de PHP y también en el modo nuevo. Algunas Variables opcionales que hemos configurado que podían ser de utilidad (short_open_tag = On, error_reporting = E_ALL & ~E_NOTICE, upload_max_filesize = 10M, session.save_path = "D:\PHP\TempSessions")
Finalmente hay que darle permisos en la carpeta PHP al usuario del IIS Process.
El FastCGI
Descomprimir el archivo que descargo en alguna ruta del Disco, por ejemplo D:\FastCGI
En el archivo de readme.txt vienen las instrucciones muy sencillas que son básicamente:
Instalar FastCGI corriendo desde la consola de comandos con permisos de administrador:
fcgisetup.exe /install
Relacionar el Php con el FastCGI:
fcgisetup.exe /add d:\php\php-cgi.exe PHP, (La ruta donde dejo el PHP)
Listo, esto debería crear los módulos y handlers necesarios en el IIS 7.0, para verificar que quedo correctamente instalado debería encontrar algo como esto en su consola de administración del IIS7.
En la lista de Módulos (por vista de Características) un modulo nativo llamado iisfcgi apuntando a C:\Windows\system32\inetsrv\iisfcgi.dll,
En la lista de asignaciones de controladores (Handlers) una asignación de Script llamada PHP-iisfcgi apuntando a su PHP (por ejemplo: D:\PHP\php-cgi.exe) con una ruta de acceso de solicitudes apuntando a los archivos PHP (*.PHP).
Si tienen otros manejadores apuntando a *.PHP seguramente ya tenia php corriendo o trato de hacer algo similar a esta instalación. En nuestra instalación eliminamos los modulos y controladores asociados a PHP que no eran FastCGI. (Pero antes de hacer esto usted debe entender correctamente que es lo que hacen los módulos y controladores que está eliminando y por que los elimina).
Si llego hasta aquí, toda parece está bien instalado y configurado, puede crear una aplicación apuntando a un directorio y crear una página PHP sencilla como esta para probar (modinfo.php que contiene unicamente "<?php phpinfo(); ?>", esta página vista desde el browser debería mostrarle el status del PHP y en la línea Server Api indicar :
Server API : CGI/FastCGI
La Aplicación.
Ahora que ya está corriendo aplicaciones PHP en IIS7 y con el nuevo soporte mejorado de alto rendimiento de PHP FastCGI puede ejecutar sus aplicaciones PHP, nosotros corremos Sugar CRM versión 4.5.1 sobre SQL Server. (Como distribuidores y consultores de Sugar CRM es muy útil poder ofrecer a nuestros clientes el producto sobre IIS7 y estar listos para cuando vayan a los nuevos servidores Windows 2008, pero otra razón importante de escoger esta aplicación es que Sugar ha venido trabajando desde hace más de un año con Microsoft para ofrecer lo mejor del mundo open source sobre la plataforma Microsoft, esto es soporte mejorado para IIS, optimización para integración con el Directorio Activo, y soporte para SQL Server (incluyendo Express, Standard y Enterprise) y Soporte para el Modelo de Licenciamiento Microsoft Community License. (Parte de la iniciativa Microsoft Shared Source Initiative) entre otros aspectos.
En otro post hablaremos de por que esto funciona mejor que antes (las razones) y como correr Ruby o algun otro lenguaje de Scripting usando FastCGI.
Nota: Tengo que agradecer a Ivan Suárez y German Cárdenas del Grupo Commercial Open Source de Gattaca quienes son expertos en PHP, y me han ayudado mucho en la instalación, configuración y comprensión de los conceptos propios de PHP. Gracias Muchachos.
Espero que sea de Ayuda.
Juan Carlos Peláez
MCTS
KeyWords: PHP, Windows Vista, IIS7, Windows Server 2008 Beta 3, FastCGI, Sugar CRM, Juan Peláez
Hola a todos, en las últimas semanas hemos estado desarrollando con el grupo de diseño de Gattaca un Juego para uno de nuestros clientes y hemos decidido usar WCF y WPF, estamos usando el preview de Agosto de Blend y hemos encontrado diversas cosas que pueden parecer interesantes a otras personas que estén llevando a cabo proyectos similares.
Desde la perspectiva del Diseñador Gráfico la cosa siempre se ve diferente así que estaremos publicando es este blog algunas notas sobre lo que podemos y no podemos hacer en blend, lo que es fácil y lo que no. : http://tatuajefalso.wordpress.com/
Espero que sea de Utilidad.
Juan Carlos Peláez
MCTS
Keywords: Blend, Expression, WPF, Diseñadores Gráficos, Juan Peláez, Juan Diego Velazco, WCF.
Ocasionalmente se tiene la oportunidad de descubrir en una frase, en una obra o en un gesto un ejemplo maravilloso de Sencillez, humildad o dedicación al trabajo, o simplemente de aceptación a la realidad. También se encuentran ejemplos de la forma como se puede con constancia, dedicación cambiar el destino y seguir en pos de un sueño. En este post recopilare algunos de esos comentarios. Si usted tiene conoce alguno que crea que podemos incluir en esta lista no deje de anotarlo en los comentarios, con mucho gusto lo incluiré. "Además de darle las gracias a Dios y a mi familia, estoy segura que esta victoria llegó gracias al trabajo y la dedicación de varios años. No nací talentosa, pero he luchado y recibí la mejor recompensa por todos mis esfuerzos." María José Uribe. Golfista Colombiana y Primera Suramericana EN LA HISTORIA, en ganar el US Women's Amateur (Abierto de Estados Unidos) Agosto 13 de 2008. Otro Ejemplo: Pregunta Daniel Samper a Roberto Fontanarrosa "El Negro" -Todos esos premios, esos homenajes populares, esas condecoraciones, esos viajes, esos aplausos -le pregunto un día en Cartagena, mientras tomamos jugo de níspero debajo de un ceibo-, ¿son acaso la gloria? - Déjeme contarle una anécdota, Samper -me contesta-. A mediados de enero se inauguró en Victoria, pueblo situado a una hora de Rosario, un restaurante de tenedor libre. Allí va el cliente, paga una suma y come los indescriptibles frutos del asado argentino: churrasco, chorizo, asado de tira, matahambre, colita de cuadril, pollo a la brasa, vacío, bife de chorizo, provolone al orégano... El lugar fue bautizado Parrilla Fontanarrosa, y está adornado con enormes dibujos de Boogie, Inodoro Pereyra, su mujer, Eulogia, el perro Mendieta... Cuando acudo con mis amigos no me cobran nada, y además pido repetición cuantas veces me da la gana. Eso, Samper, es la gloria. Lo demás son efímeras vanidades.
El grupo de desarrollo de Microsoft ha liberado la versión beta 2 de visual studio 2008 así como la actualización del framework (version 3.5), también la actualización RC de Silverlight y una actualización del Control Toolkit de Ajax para VS2008, (sin mencionar el update de agosto del blend2 de expression). Con todo esto cada vez estamos más cerca de la actualización final de las herramientas de desarrollo y siguiendo con la tendencia de los últimos meses (años) no solo son correcciones de algunos bugs, es toda una nueva forma de enfrentar los problemas de desarrollo con herramientas como LINQ, WWF, WCF y sobre todo Silverlight y WPF que seguramente cambiaran la forma como entendemos la experiencia del usuario en internet.
Todos los geeks que están conectados con scott guttie y su grupo de desarrollo han visto ya instrucciones y procedimientos de instalación, pero para aquellos que lo prefieren en español y paso a paso aquí está el paso a paso de poner mi maquina de pruebas en VS2008 y demás bits nuevos.
Nota: Yo hice todo esto en una maquina virtual corriendo Windows 2003 server, recomiendo mucho hacer esto para no tener problemas con la máquina de "producción" en la que están desarrollando actualmente, aunque todas las instalaciones son compatibles side by side es la mejor y más segura práctica. (También es posible descargar la maquina virtual ya instalada con todo en el mismo sitio de VS2008.)
Entonces:
1. Desinstale Visual Studio 2008 Beta 1, MSDN y Visual Studio express que tenía en esa máquina, también desinstale acrópolis.
2. En el sitio de Silverlight descargue la versión RC actualización Alpha 1.1. para desarrolladores, la instalación es muy simple e inteligente y me dejo la maquina en la ultima versión disponible., Download the Silverlight Alpha.
3. Gracias a Ivanov de Microsoft Colombia tuve acceso al DVD con los 3.5 gigas de Visual Studio 2008 Professional, gracias parce!!
4. Para los que no tienen esa fortuna existen dos formas, la primera para los que no están detrás de firewalls:
a. Instale Microsoft Secure Content Downloader
b. Seleccione Visual Studio Pro SKU de la lista y dígale salvar como...
5. Para los que están detrás de un firewall deben usar la pagina de Microsoft VS2008 Beta 2 donde pueden descargarla instalando un complemento de descargas inteligentes para IE7 o pueden hacer una descarga normal http (no recomiendo esto último son 3.5 gigas). Pueden descargar la imagen ISO del DVD o los archivos estan las versiones Team Sytem, Profesional, etc.
6. Yo instale Visual Studio 2008 Team System Beta 2, seleccione la versión full, no tuve ningún problema en la instalación aunque se tardo un rato pero creo que es más por mi maquina virtual.
7. Después de Instalar debe correrse un script que pueden descargar de aquí: Run this file post installation. , esto es muy importante porque permite tener proyectos en Ajax con el framework 2.0 (los que estan haciendo ahora) y también proyectos con el Framework 3.5, sin correr este archivo se tendrá el siguiente problema: al abrir el proyecto de ajax actual se establecerá una referencia con el framework 3.5 que hará obligatorio instalar esta versión del framework en la maquina donde se instala el proyecto. (A diferencia de otras versiones de VS como 2005 y 2003 el VS2008 permite desarrollar proyectos para cualquier versión del framework, pero eso será tema de otro blog).
8. Ahora, si su máquina alguna vez tuvo instalado algún beta vaya a la ventana de línea de comando de VS2008 en herramientas de VS2008, y ejecute el siguiente comando "DevEnv /resetsettings" (esto solo debe hacerse por una vez y es importante porque garantiza el rendimiento adecuado del nuevo editor web incluido con VS2008).
Con esto ya podrá crear nuevos proyectos o cargar los actuales en Visual Studio 2008, en una rápida exploración de características solo en la creación de proyectos podrá ver la opción de crear proyectos para frameworks diferentes (Derecha arriba de la ventana de crear proyecto), también encontrará los proyectos de tipo WCF y WWF sin tener que instalar complementos adicionales (y si, él sabe que no puede crear proyectos de WCF para el Framework 1.1). Los proyectos de Acrópolis (nueva versión de Windows Forms para WPF) merecen su propio blog y una de las mejores cosas: los proyectos de tester de Visual Studio Team System estan incluidos, no se si esto será asi en la versión final pero deberia serlo, los proyectos de pruebas son demasiado importantes para que estén por fuera en otra versión de visual studio.
Ahora, si lo que usted quiere (como yo) crear aplicaciones para internet con la última tecnología disponible no puede dejar de instalar los siguientes:
1. Expression Blend 2 August Preview
2. Silverlight Tools Alpha for VS2008.
Espero que sea de Ayuda.
Juan Carlos Peláez MCTS
Miembro del Microsoft Speaker Group Andino
Miembro del Microsoft Influencers Group de Colombia.
Keywords: VS2008 Beta 2, Instalación VS2008, Juan Peláez, .Net, Visual Studio, Framework 3.5, Visual Studio 2008, Instrucciones Instalación
(...)Es por eso que uno trepa montañas, rema furiosamente en las aguas blancas, camina en el desierto y busca lugares remotos; para quitarse de encima lo superfluo, para eliminar las barreras protectoras entre lo que llama su yo y algo mucho mayor. Y las montañas vuelven a tentarte a treparlas y los ríos a navegar por ellos. Y los lugares remotos te llaman.
La pregunta no es si volverás a arriesgarte. La pregunta es: A donde la próxima vez? Y la otra pregunta también: Hasta donde? Peter Stark Último Aliento, Historias acerca del límite de la resistencia humana.
Durante la presentación de Visual Studio Team System en Medellín tuve oportunidad de discutir con Freddy Angarita un problema que se presentaba en mi maquina con la ventana de Performace Explorer en Visual Studio, gracias a sus instrucciones ahora puedo ejecutar análisis de código, comparto aquí el problema y la solución.
Problema: No puedo ver la ventana Performance Explorer dentro de Visual Studio Team System, debido a ello no puedo iniciar análisis de rendimiento para mis aplicaciones.
Solución: ejecutar desde la línea de comandos de Visual Studio la instrucción devenv /resetskippkgs (Si es una maquina corriendo vista tiene que abrir esta consola como administrador).
Investigando un poco más esta línea de comando lo que hace es borrar todas las etiquetas skip VSPackage que se han colocado en el entorno de desarrollo, al eliminar las etiquetas el sistema carga nuevamente todos los Paquetes de VS, en este caso particular el de Análisis de Rendimiento (Performance Explorer)
Todas las funcionalidades Out-Of-The-Box de visual studio (editor de c#, por ejemplo) se implementan a través de VSPackage, por los tanto este mismo comportamiento y solución puede aplicar para otros elementos de visual studio como diseñadores de páginas, clases, etc, y no solo para visual studio team system sino para otras versiones como professional y express.
Espero que sea de utilidad
Juan Carlos Peláez MCTS
Keywords: Visual Studio Team System, Visual Studio Express, Visual Studio Professional, Performance Explorer, Visual Basic, C#, Microsoft, Juan Peláez.
Durante el desarrollo de la nueva versión de nuestras aplicaciones usando arquitecturas distribuidas con WCF encontré los siguientes problemas en las herramientas de Visual Studio que quiero compartir aqui. El primero, que muchos habran identificado, es que al generar el código usando la opción de nueva libreria de WCF en visual basic genera una clase datacontract1 que no tiene marcada ninguna de sus propiedades como datamember, por lo que cuando se publica el servicio y se genera el proxy esta clase no tiene ninguna propiedad publica que pueda trasmitirse con por el cable, esto se soluciona facilmente marcando como datamember la propiedad generada para que quede asi: (en negrillas lo que hay que adicionar) <DataContract()> _ Public Class DataContract1 Private m_firstName As String Private m_lastName As String <DataMember()> _ Public Property FirstName() As String Get Return m_firstName End Get Set(ByVal value As String) m_firstName = value End Set End Property <DataMember()> _ Public Property LastName() As String Get Return m_lastName End Get Set(ByVal value As String) m_lastName = value End Set End Property End Class El segundo tiene que ver con el nombre por default para el namespace que coloca Visual Studio a los proyectos, este namespace genera un problema en la serialización de los objetos marcados como datacontract ya que estos llegan correctamente al servicio pero no estan inicializados, si se depura el cliente se ve correctamente creado el objeto pero en el servicio no estan los valores. Este punto se puede resolver usando alguno de los siguientes procedimientos: a. Eliminado el namespace colocado por default en el cliente, el host y el servicio. (usando las propiedades del proyecto dentro de visual studio). b. al generar el proxy del servicio usando la herramienta svcutil.exe usar el modificar /n para indicar que se quiere generar un proxy con el namespace del cliente, algo como esto: svcutil.exe *.wsdl *.xsd /namespace:*,MyNamespace /language:VB siendo MyNamespace el nombre del namespace del cliente del servicio. Estos problemas no se presentan cuando se usan servicios con tipos basicos del CRL como strings o enteros o en algun otro tipo de contracto (operacion,fault,etc), es unicamente para cuando tiene contratos de datos del tipo datacontract, tampoco se presentan en C#. espero que sea de utilidad. Juan Carlos Peláez MCTS KeyWords: WCF, svcutil, Visual Basic, Framework, net, Arquitectura, Componentes Distribuidos, Cliente, Servicio, Host, Microsoft
El concepto de las pruebas unitarias ha venido desarrollando todo un nuevo modelo de programación, los modelos basados en pruebas (TDD por Test Driven Development) han demostrado sus beneficios entre los que se pueden contar rápidamente la confianza en el código generado, la habilidad de hacer refactoring mucho más rápido y con más confianza y la reducción en los tiempos de depuración.
Visual Studio Professional versión 2005 es una de las herramientas de desarrollo más usadas en el mundo, y la herramienta preferida de los desarrolladores sobre plataforma Microsoft, sin embargo los equipos de desarrollo que no utilizan Visual Studio Team System versión Developer o Tester no tienen la posibilidad de realizar pruebas unitarias Out-Of-The-Box, esta guía ayudar a configurar Visual Studio Professional para la ejecución de pruebas unitarias.
1. Preparando el Ambiente.
Lo primero es descargar un framework de pruebas unitarias, aunque existen varios recomiendo el uso de NUnit, en nuestras pruebas ha funcionado bastante bien, tiene funcionalidad consistente y es fácil de configurar y usar. Descárguelo e instálelo del siguiente link: (Para el Framework de NUnit (.NET)) http://www.nunit.org/
Instalando nUnit podrá escribir, ejecutar y tener resultados de pruebas unitarias, pero aún desde fuera de Visual Studio, Para la integracion con el IDE de Visual Studio deberá instalar un Add-in que puede descargar de esta dirección: http://www.testdriven.net/, esto permitirá la ejecución de pruebas unitarias, con depuración, cobertura (coverage) y otras características desde el propio entorno del IDE de Visual Studio.
2. Escribiendo el Código de Pruebas.
Con el entorno listo podemos crear el proyecto de Pruebas para nuestro ensamblado, yo recomiendo crear otro proyecto para poder tener clara independencia entre el proyecto de código y el proyecto de pruebas, una ventaja adicional de hacerlo de esta forma es que puede subir el proyecto de pruebas a su sistema de control de versiones. (Una recomendación adicional tiene que ver con la nomenclatura del namespace, cree un namespace de pruebas para su proyecto).
En el nuevo proyecto creado debe agregarse una referencia al ensamblado nunit.framework.dll que encontrará en la carpeta nUnit 2.4/Bin, en la ubicación de archivos de programas o donde haya instalado el framework del nUnit.
También debe agregar una referencia al proyecto o ensamblado que quiere probarse.
Ahora puede escribir una clase de pruebas unitarias que se parecerá a esta:
Imports NUnit.Framework Imports TestClass = NUnit.Framework.TestFixtureAttribute Imports TestMethod = NUnit.Framework.TestAttribute Imports TestInitialize = NUnit.Framework.SetUpAttribute Imports TestCleanup = NUnit.Framework.TearDownAttribute
<TestClass()> _ Public Class eMailTest
end Class.
Como puede verse aquí, se han usado unos alias para los atributos del framework que facilitan su uso en la clase, estos alias le permitirán al framework de nunit identificar la clase de pruebas, los métodos de pruebas, los métodos de inicialización y finalización del proceso de pruebas.
Estos alias permitirán decorar la clase como en el ejemplo anterior que la clase ha sido decorada con el atributo TestClass
Lista la clase, ahora podemos construir métodos de pruebas, un método básico de pruebas quedaría parecido a este:
<TestMethod()> _ Sub AddFolderTest()
...Su Código aqui.
End Sub
Ahora con el botón derecho del mouse sobre el método o la clase de pruebas puede ejecutar la prueba unitaria.
Ahora bien la idea de esta pequeña guía no es reproducir todo el manual de nunit pero hay algunos tips que pueden ser interesantes, 1. Use las funciones assert dentro de sus métodos de pruebas, 2. en los casos en que la prueba debe retornar una excepción utilice la decoración expectedexception para indicarle a nunit cual es el tipo de excepción que espera, 3. Puede configurar el ambiente de pruebas usando un método decorado como TestInicialize y limpiar todo usando TestCleanup.
En próximos artículos hablaré de 1. Como usar BD para ejecutar conjuntos de pruebas automaticos simulando la funcionalidad de Visual Studio Team System y 2. cómo crear un modelo de pruebas usando Enterprise Services que al finalizar las pruebas realice un rollback de todos los datos de pruebas insertados.
Espero que sea de utilidad.
Juan Carlos Peláez
MCTS
Keywords: Visual Studio Team System, Visual Studio Proffesional 2005, nUnit, Mejores Practicas, Metodología, Microsoft, VB, Pruebas Unitarias, Desarrollo basado en Pruebas, Eventos Microsoft Colombia.
|