viernes, 1 de diciembre de 2006

WinFX, WCF, WPF y LINQ en Visual Studio 2005 y en codenames "ORCAS"

 

Todos hemos pensado utilizar Visual Studio 2005 codenames “ORCAS” para poder cacharrear con todas la nuevas tecnologías que ya están en nuestras puertas, si en nuestras puertas, aunque tengo que decir, que aún están un poco “verdes” (Betas, CTPs, etc). Yo me pregunto, ¿Por qué utilizar Visual Studio 2005 codenames “ORCAS” si podemos hacer estas pruebas en nuestro actual Visual Studio 2005? Eso si, con algún que otro problemilla. J

Tras muchos intentos fallidos con la máquina virtual de ORCAS, he intentado ejecutarlo en mi actual Visual Studio 2005 y el resultado ha sido sorprendente. Sigue los pasos que indico a continuación y podrás comenzar a probar todas esas cosas que estas deseando. Tengo que decir, que aún no he comprobado todos los posibles errores que pueda ocasionar esto con versiones 2.0 del Framework o anteriores. Si esto no os importa mucho, os animo a que lo intentéis.

Como requisito previo, será necesario tener instalado Visual Studio 2005.

Seguidamente instalamos el siguiente software:

1. Framework 3.0 (WinFX)
2. Visual Studio 2005 extensions for .NET Framework 3.0 (WCF, WPF), Noviembre 2006
3. Windows Development SDK for Vista and Framework 3.0
4. LINQ Preview (May 2006) [Sólo instalar si se va a trabajar con LINQ]
5. Si quieres trabajar con WWF sólo tienes que instalarlo.

 

Por otro lado y si sigues interesado en trabajar con ORCAS y LINQ te planteo una opción sencilla:

Instala LINQ Preview (May 2006) en la máquina virtual de ORCAS y ya podrás comenzar a realizar tus pruebas con LINQ. Eso sí, necesitarás instalar todo el software anterior para poder realizar pruebas con XAML así como con su diseñador gráfico.

Si la opción es instalarlo todo, ten en cuenta la recomendación del punto 4. Esta es debida al error que os cuento a continuación y por eso es necesario que lo tengas en cuenta. Si y sólo si vas a hacer pruebas con LINQ lo instalas en caso contrario no. Es más, no lo instales hasta que vayas a hacer pruebas con él. Una vez finalizadas dichas pruebas podrás desinstalarlo y así volver a trabajar con WinFX, WCF Y WPF sin ningún problema.

Descarga “LINQ Preview (May 2006)” en: http://www.microsoft.com/downloads/details.aspx?familyid=1e902c21-340c-4d13-9f04-70eb5e3dceea&displaylang=en

Durante la instalación podréis observar el siguiente mensaje, continuar sin problema para las pruebas.

 

Una vez finalizada la instalación, sólo nos queda comenzar a “tirar” código. Eso sí, cuando intentes crear un proyecto en Visual Studio 2005 obtendrás el siguiente nuevo error.

This is an unsupported version of Microsoft visual c# 3.0 / Microsoft visual basic 9.0. Therefore, many features may not work as expected

 

Como he comentado antes si estás haciendo pruebas o “cacharreando” no te preocupes por este error, al menos las pruebas de LINQ, XLINQ y DLINQ las podrás llevar a cabo sin problemas.

El mayor inconveniente que presenta este mensaje es que lo tendremos que ver cada vez que abramos nuestro proyecto/solución.

Espero que esto post haya sido de ayuda para dar un paso adelante en la nueva era de lenguajes dinámicos.

Mucha suerte. Un saludo.

Juanlu.


miércoles, 29 de noviembre de 2006

Instalación de Microsoft Office 2007

Aquí os dejo una ayudita para el que vaya a instalar la versión definitiva de Office 2007.

En primer lugar desinstala la versión anterior de office la 2003, o la 2007 (beta o beta refresh).

Es curioso, pero aunque lo desinstales como se suele hacer normalmente, es decir, “Add/Remove programs” (“Añadir/quitar programas”) no es suficiente. Si tras hacer esto intentas instalar podrás observar el siguiente error:


Solución:

Instala “Windows Installer Cleanup Utility“ y podrás comprobar que hay componentes de Office de la instalación de MS office que con el paso anterior no han sido eliminados. Utilízala para eliminar todos aquellos componentes de Office que encuentres. A continuación prueba de nuevo a intentar la instalación y “ahora sí”, problema solucionado. J

Aquí os dejo una referencia a este problema en donde además podréis encontrar el link de descarga de la aplicación ““Windows Installer Cleanup Utility“.

http://support.microsoft.com/kb/290301

Suerte.
Juanlu


lunes, 27 de noviembre de 2006

Windows Services .NET (Creación, instalación y ejecución)

Todos conocemos sobradamente que es un “Servicio Windows”(Windows Service), al menos sabemos que hay que activarlos, desactivarlos, etc. y que existe una consola para ello y que se encuentran ejecutándose en la máquina de forma indefinida:

Pues bien, con este “post” lo que quiero mostrar es el proceso de creación de un Windows Service, y que en su sentido amplio comienza con el desarrollo del código y termina con la ejecución continuada en la máquina, pasando antes por la instalación necesaria para su integración con el sistema.

Proceso:
Creación:
1. Crear un proyecto .NET del tipo Windows Service.
2. Añadir código al método “OnStart”, este es el método que es llamado durante la inicialización del servicio de la consola.
3. Como buenas prácticas es conveniente escribir en el “Event Log” de Windows para dejar constancia de los posibles errores ocurridos.

INSTALACIÓN
1. Añadir al proyecto una clase del tipo “Installer Class”( ), esta clase permitirá al servicio ser instalada/integrada en el sistema.
2. A continuación incluyo un ejemplo de lo que debería tener la clase Installer.
[RunInstaller(true)]
public partial class ProjectInstaller : Installer
{
private ServiceInstaller serviceInstaller;
private ServiceProcessInstaller processInstaller;

public ListenerInstaller()
{
InitializeComponent();

processInstaller = new ServiceProcessInstaller();
serviceInstaller = new ServiceInstaller();

//processInstaller.Account =
// System.ServiceProcess.ServiceAccount.User;

processInstaller.Account = ServiceAccount.LocalSystem;

serviceInstaller.StartType = ServiceStartMode.Automatic;
serviceInstaller.ServiceName = "MiServicio";

Installers.Add(serviceInstaller);
Installers.Add(processInstaller);
}
}
3. Esta clase será necesaria para que nuestra utilidad “InstallUtil.exe”(C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe) pueda instalarla en el sistema y así poder disponer de nuestro servicio en la consola para manipularlo a nuestro antojo (pararlo, restearlo, cambiar las credenciales, etc.)
Para instalar el servicio utilizaremos esta instrucción: Installutil MiService.exe
Para desinstalarlo esta otra: Installutil /u MiService.exe
4. Una vez instalado el servicio, entraremos en la consola y lo arrancaremos.
5. Si todo el proceso ha sido correcto, nuestro servicio estará realizando su trabajo.

Hasta aquí, bueno, pues será complicado según lo queramos complicar nosotros, pero para un servicio básico y de introducción es más que suficiente, bueno, eso creo.

Algunas NOTAS interesantes a tener en cuenta son:

Si queremos que nuestro servicio acceda a un fichero de configuración “.config”, el acceso a la sección varía un poco con respecto a de una aplicación normal:


int sleepTime = Convert.ToInt32(ConfigurationManager.AppSettings.Get("SleepTimeMilliseconds"));

1.
Configuration exeConfig =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal)
Int sleepTime = Convert.ToInt32(exeConfig.AppSettings.Settings["SleepTimeMilliseconds "].Value);

La primera opción es como lo realizamos normalmente, en cuanto a la opción dos, es como tendremos que hacerlo en un Windows Service.


Otra de los puntos a tener en cuenta y además creo que, quizás uno de los más importantes es:
Normalmente utilizaremos un servicio para que esté ejecutándose en la máquina de forma indefinida y para ello tendremos que seguir los siguientes pasos.
Si introducimos un bucle while(! bStop){ … } or while (true) { … } nunca podremos arrancarlo/inicializarlo puesto que el evento “OnStart” nunca terminará. Como podemos conseguir este cometido, ¿Arrancar el servicio y tener nuestro bucle while? Pues bien, para ello necesitamos ejecutar nuestro bucle en un hilo aparte, de esta forma el evento “OnStart” termina y nuestro hilo es el que sigue la ejecución para realizar el trabajo. El siguiente método OnStart puede ser un ejemplo de ello.
protected override void OnStart(string[] args)
{
base.OnStart(args);

Thread t = new Thread(new ThreadStart(Run));
t.Start();
}

private void Run()
{…}
Donde Run() será el método encargado de soportar todo el trabajo a realizar.
Además nuestro bucle while deberá tener una espera en cada iteración para evitar sobrecargar a la CPU, para ello:
System.Threading.Thread.Sleep(sleepTime)

Teniendo en cuenta estos puntos básicos, la creación de un servicio Windows resultará muy fácil de implementar y entender y por ello creo que a partir de ahora todos tendremos un poquito más clara (al menos técnicamente) que es un servicio.

Tened en cuenta también los métodos, OnPause, OnContinue, OnStop ya que serán necesarios en ocasiones, y sobre todo el OnStop, pues es aquí donde se liberarán recursos y se establecerá el valor de alguna variable booleana(bStop) para terminar nuestro “famoso” bucle.

No olvidar tampoco que existe el método OnCustomCommad y que será utilizado para la integración con otras aplicaciones.

Una vez más espero que esta pequeña introducción os haya ayudado.

Saludos
Juanlu

This page is powered by Blogger. Isn't yours?