Publicación Sitio Web Windows Media Center (WMC)

0 comentarios

Windows Media Center esta disponibles en los SO Windows Home Premiun y Ultimate.

Los pasos a Seguir para la publicación de una aplicación Windows Media Center Presentation Layer Web applications en Windows Vista Ultimate son los siguientes:

1. Crear en un nuevo Directorio Virtual en IIS, luego convertirlo a Application. El path debe ser el directorio físico que contiene los archivos mcml.

2. Agregar un nuevo Mime Type ".mcml - text/xml" para el sitio como se muestra en la imagen siguiente.



3. Ir a Menú Inicio - All Programs - Accesories y ejecutar como administrador el Command Prompt.

4. Debemos contar con archivo DivInstall.cmd el que instalará en la GAC la dll del proyecto y registrará la aplicación en WMC. EL codigo del DivInstall.cmd deberá ser algo así como esto:


@ECHO OFF
ECHO.
ECHO.Usage: DevInstall.cmd [/u][/debug]
ECHO.
ECHO.This script requires Administrative privileges to run properly.
ECHO.Start > All Programs > Accessories> Right-Click Command Prompt > Select 'Run As Administrator'
ECHO.

set CompanyName=MyCompany
set AssemblyName=MyMediaCenter
set RegistrationName=Registration
set ProgramImage=img_Application.png

ECHO.Determine whether we are on an 32 or 64 bit machine
if "%PROCESSOR_ARCHITECTURE%"=="x86" if "%PROCESSOR_ARCHITEW6432%"=="" goto x86
set ProgramFilesPath=%ProgramFiles(x86)%
ECHO.

goto unregister

:x86

ECHO.On an x86 machine
set ProgramFilesPath=%ProgramFiles%
ECHO.

:unregister

ECHO.*** Unregistering and deleting assemblies ***
ECHO.

ECHO.Unregister and delete previously installed files (which may fail if nothing is registered)
ECHO.

ECHO.Unregister the application entry points
%windir%\ehome\RegisterMCEApp.exe /allusers "%ProgramFilesPath%\%CompanyName%\%AssemblyName%\%RegistrationName%.xml" /u
ECHO.

ECHO.Remove the DLL from the Global Assembly cache
"%ProgramFilesPath%\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" /u "%AssemblyName%"
ECHO.

ECHO.Delete the folder containing the DLLs and supporting files (silent if successful)
rd /s /q "%ProgramFilesPath%\%CompanyName%\%AssemblyName%"
rd /s /q "%ProgramFilesPath%\%CompanyName%
ECHO.

REM Exit out if the /u uninstall argument is provided, leaving no trace of program files.
if "%1"=="/u" goto exit

:releasetype

if "%1"=="/debug" goto debug
set ReleaseType=Release
ECHO.
goto checkbin

:debug
set ReleaseType=Debug
ECHO.

:checkbin

if exist ".\bin\%ReleaseType%\%AssemblyName%.dll" goto register
ECHO.Cannot find %ReleaseType% binaries.
ECHO.Build solution as %ReleaseType% and run script again.
goto exit

:register

ECHO.*** Copying and registering assemblies ***
ECHO.

ECHO.Create the path for the binaries and supporting files (silent if successful)
md "%ProgramFilesPath%\%CompanyName%\%AssemblyName%"
ECHO.

ECHO.Copy the binaries to program files
copy /y ".\bin\%ReleaseType%\%AssemblyName%.dll" "%ProgramFilesPath%\%CompanyName%\%AssemblyName%\"
ECHO.

ECHO.Copy the registration XML to program files
copy /y ".\%RegistrationName%.xml" "%ProgramFilesPath%\%CompanyName%\%AssemblyName%\"
ECHO.

ECHO.Copy the program image to program files
copy /y ".\Images\%ProgramImage%" "%ProgramFilesPath%\%CompanyName%\%AssemblyName%\"
ECHO.

ECHO.Register the DLL with the global assembly cache
"%ProgramFilesPath%\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" /if "%ProgramFilesPath%\%CompanyName%\%AssemblyName%\%AssemblyName%.dll"
ECHO.

ECHO.Register the application with Windows Media Center
%windir%\ehome\RegisterMCEApp.exe /allusers "%ProgramFilesPath%\%CompanyName%\%AssemblyName%\%RegistrationName%.xml"
ECHO.

:exit


5. En el command Prompt dirigirnos al path que contiene el archivo DivInstall.cmd (aplicando los comandos CD correspondientes para cambiar de directorio) y ejecutar el mencionado archivo escribiendo DivInstall.cmd.

www.miguelciacci.com.ar - Inauguración de mi Nuevo Site!

2 comentarios

Buenos días a todos mis apreciados lectores! escribo este post para notificarles que en el día de ayer he puesto en producción mi nuevo Site. Está desarrollado en Silverlight 2.0 y ASP.Net, para ello he utilizado como herramientas Visual Studio 2008 y Expression Blend 2.0. Por ahora cuenta con 4 secciones principales pero con el tiempo se irán incrementando. Las Secciones son:

a) My CV = desde donde pueden acceder a mi Curriculum Vitae, donde se detallan mis experiencias tanto académicas como laborales y profesionales.

b) My TECH Blog = nos remite a mi blog técnico, en el cual se encuentran leyendo este post.

c) My Personal Pics = nos redirecciona a mi album personal de fotos. Dudo que alguien esté interesado en verlas pero por si acaso... jeje

d) Contact me = es una via de contacto de los visitantes hacia con mi persona. A través de un formulario simple pueden enviarme sus inquietudes, consultas, sugerencias, opiniones o lo que se les ocurra.




Importante: para poder visualizar el sitio deben tener instalado en su PC el cliente Silverlight. Dicho cliente puede descargarse desde el sitio oficial de Microsoft Silverlight haciendo click aquí.

.Net - Enviar mail con servidor que requiere autenticación

0 comentarios

A continuación les pongo el código necesario para poder enviar un mail desde .Net 2.0 o superior utilizando un servidor de correo que requiere Autenticación. El código es:


MailMessage mail = new MailMessage();
SmtpClient smtp = new SmtpClient("mail.midominio.com", 25);

mail.From = new MailAddress("mail@midominio.com");
mail.To.Add("destinatario@mail.com");
mail.Subject = "Asunto";
mail.Body = "Aquí se debe ingresar el mensaje...";
mail.IsBodyHtml = true;
smtp.EnableSsl = false;

smtp.Credentials = new NetworkCredential("miUsuario","miClave");

// Prioridad
mail.Priority = MailPriority.Normal;

//Esto es porque el Servidor requiere Autenticacion
smtp.UseDefaultCredentials = false;

smtp.Send(mail);

Se debe tener en cuenta que hay que incluir los namespaces System.Net y System.Net.Mail.

Si desean saber más en detalle para que sirve cada linea descripta anteriormente, los invito a que lean el post de un colega (hagan click en el siguiente link).

Saludos.

Silverlight 2.0 - Error Could not download the silverlight application. Check web server settings

0 comentarios

Es muy común que cuando subimos nuestra aplicación realizada en Silverlight 2.0 nos encontremos con el error "Could not download the silverlight application. Check web server settings".



Esto se debe a que en el servidor faltan añadir algunos MYME Types. Debemos añadir los siguientes MYME Types para que nuestra aplicación funcione correctamente:

.xap - application/x-silverlight-app
.manifest - application/manifest
.xaml - application/xaml+xml
.dll - application/x-msdownload
.application - application/x-ms-application
.xbap - application/x-ms-xbap
.deploy - application/octet-stream
.xps - application/vnd.ms-xpsdocument

Espero les sea de utilidad este post...

Saludos

ASP.NET AJAX - Control UpdateProgress

0 comentarios

Continuando con los controles de AJAX para ASP.NET ahora toca hablarles del UpdateProgress. Este control permite mostrar por pantalla que existe un retraso al traer los datos desde el servidor. Este control crea un "DIV" con todo su contenido dentro, el que permanece invisible hasta que el UpdatePanel hace un PostBack Asíncrono y espera la respuesta del servidor.

El contenido que se muestra que puede ser un mensaje o cualquier contenido HTML debe colocarse en el tag .

Se puede utilizar un UpdateProgress para toda la página o utilizar un UpdateProgress para cada UpdatePanel, en este caso debemos usar la propiedad AssociatedUpdatePanelID para indicarle con cual UpdatePanel se relaciona.

La propiedad DisplayAfter permite establecer el tiempo mínimo a esperar antes de que sea mostrado el contenido, para evitar parpadeos en caso de ser muy rápida la respuesta del servidor. Por Default es de 500 ms.

La propiedad DynamicLayout permite reservar el espacio del UpdateProgress o no según sea True o False. Si es True no reservará el espacio desplazando el resto del contenido de la página cuando se haga visible.

Ejemplo



Y en Code-behind tendremos:

ASP.NET AJAX - Control Timer

0 comentarios

Este control se utiliza para disparar periódicamente refrescos de página del lado del cliente. Requiere la presencia del ScriptManager en la página que lo contiene.

La propiedad Interval es la que determina la periodicidad del refresco. Se pueden utilizar varios Timer en la misma página, pero si su interval es el mismo podemos utilizar uno solo añadiéndolo a la colección de Triggers de los diferentes UpdatePanel.

El evento Tick nos permite ejecutar código en el servidor en cada disparo del Timer. También podemos usar el Page_Load de la página que provoca el mismo efecto.



En el Code-behind tendremos:

Error al crear Nuevo Proyecto en Expression Blend 2.5 June 2008 Preview

0 comentarios

Buenas días a todos mis lectores, investigando sobre las nuevas tecnologías Microsoft, en este caso Expression Blend 2.5 June 2008 Preview me he topado con un error bastante curioso. Al intentar generar un nuevo proyecto de Silverlight 2.0 surgía la famosa ventana de reporte de error.

La Solución... investigando un poco por la web y luego de horas de aplicar la teoría de "prueba y error" pude hacer que este error desaparezca.
Los pasos a seguir son:
1. Desinstalar el Silverlight SDK desde Agregar o quitar Programas del Panel de Control.
2. Desintalar Expression Blend 2.5 June 2008 Preview, también desde el Panel de Control.
3. Reinstalar Expression Blend 2.5 June 2008 Preview.

Luego de estas acciones pude trabajar con normalidad en Expression Blend. Espero que les sea de ayuda este post.

Saludos!

Acreditando conocimientos... Administración, organización y entrega de proyectos de TI con Microsoft Solutions Framework 3.0

0 comentarios

Cómo ya les había comentado en un post anterior, mi próxima meta a nivel de certificaciones era el examen de Microsoft 70-301 (Administración, organización y entrega de proyectos de TI con Microsoft Solutions Framework 3.0). Finalmente y luego de muchas horas de dedicación, esfuerzo y por que no... sacrificio, lo he conseguido. Tanto estudio valió la pena, ya cuento con mi 2da certificación de Microsoft (3ra si contamos Solution Selling) y voy por más. Pero eso será el año próximo. Quiero agradecer tanto a Raona como a mis familiares y amigos que supieron comprenderme y brindarme su apoyo en todo momento. A todos aquellos que estén deseosos de rendir este examen, pues adelante, ya verán que es duro pero no es imposible... jeje

Saludos a todos!

ASP.NET AJAX - Triggers(Disparadores) del UpdatePanel

0 comentarios

Por default los controles dentro de un UpdatePanel actúan como disparadores del mismo, mientras que los controles que están sobre la pagina ocasionan un PostBack de toda la pagina de forma síncrona.
Se puede configurar un control externo al UpdatePanel para que ocasione el recargado asíncrono del panel.
Por código:



Por vista Diseño:



Los Tipos de Triggers son:
- PostBackTrigger: el control dentro del UpdatePanel provocará un PostBack completo de la página.
- AsyncPostBackTrigger: se usa para indicar que el control tanto si se encuentra dentro o fuera del UpdatePanel debe ocasionar una recarga asíncrona del mismo.

Por defecto la propiedad ChildrenAsTriggers es true permite que el control refresque asíncronamente el UpdatePanel. Si le ponemos el valor false deberemos usar el método Update() para provocar la carga asíncrona.

ASP.NET AJAX (Asynchronous Javascript And Xml)

0 comentarios

En este post quiero describir brevemente que es AJAX y cuales son su componentes esenciales. El objetivo de AJAX es conseguir que las páginas web respondan lo más rápidamente posible a las peticiones de los usuarios evitando recargar toda la página con información desde el servidor. Sus componentes principales en VS 2008 son:
- ScriptManager: registra el script de la librería cliente de AJAX en la pagina permitiendo ejecutar del lado del cliente una serie de funciones y extensiones de Javascript tales como el pintado parcial de las paginas o llamadas a servicios web desde código cliente.
Para gestionar los errores podemos usar:
a) Gestionar el evento AsyncPostBackError del ScriptManager que se dispara al producirse un error durante el PostBack asíncrono.
b) Poner texto en la propiedad AsyncPostBackErrorMessage que es el mensaje que se envía al navegador y se presenta en un alert.
Para gestionar el tiempo de espera usar AsyncPostBackTimeOut en el que indicamos el tiempo tras el cual el ScriptManager mostrara el error de falta de respuesta del servidor.
- UpdatePanel: permite que solo se refresquen los controles ubicados dentro suyo, sin necesidad de volver a cargar toda la página. Esto es posible gracias a la clase PageRequestManager que el ScriptManager incluye en el cliente.
La propiedad UpdateMode indica las circunstancias bajo las que se actualiza, puede ser:
UpdatePanelUpdateMode.Always el contenido del UpdatePanel se actualiza en todos los postbacks que ocurran en le pagina.
UpdatePanelUpdateMode.Conditional el contenido del UpdatePanel solo se actualiza cuando se dispara un Trigger de ese panel o a través de un Update() o si cuando el Panel esta anidado dentro de otro y este se actualiza.

SilverLight version 1.0

0 comentarios

Silverlight es una tecnologia multi-Navegador (IE, Firefox, etc.) y multi-Plataforma(Win, Linux, Mac, etc.) que permite el desarrollo de una nueva generación de interfaces de usuario potenciando el desarrollo de interfaces multimedia RIA (Rich Interactive Applications).
XAML (Extensible Application Markup Lenguaje) es un lenguaje declarativo, derivado de XML cuya finalidad principal es la de permitir definir la interfaz visual.
Silverlight es un complemento de navegador que representa XAML (al igual que el navegador representa xhtml o html) exponiendo su modelo de objeto de documentos (DOM) y su modelo de Eventos con lo cual podemos ejecutar código desde el lado cliente ahorrándonos la ida y procesamiento en el servidor. Se basa en la tecnología plug in por lo que se requiere la instalación de un pequeño componente para poder visualizar el contenido de Silverlight en nuestro navegador.
XAML está basado en texto y así se descarga en el cliente por lo que no da problemas en buscadores, firewalls, muy útil si se desea utilizar SEO (Search Engine Optimization). XAML es fundamentalmente vectorial, por lo que permite desarrollar con muy poco esfuerzo aplicaciones “Pixel free” independientes de la resolución.

Silverlight tiene herramientas orientadas al programador y al diseñador, estas son:
- Silverlight v1.0: plug in disponible para Win, Linux y Mac.
- VS2008: permite hacer desarrollos en Silverlight.
- Expression Blend 2: permite diseñar espectaculares experiencias interactivas en XAML sin necesidad de escribir ni una línea.
- Expression Encoder: permite codificar y mejorar ficheros de video para poder ser utilizados en silverlight.
- Expression Desing: herramienta de diseño vectorial que permite crear diseños y elementos silverlight.

WINDOWS WORKFLOW FUNDATION

0 comentarios

En este post voy a explicar en que consiste y como se conforma Windows WorkFlow Fundation (WF). WF Sirve para desarrollar aplicaciones disponiendo de una forma natural de expresar la lógica del negocio. Permite expresar la lógica de una forma natural sin entrar en las complicaciones de los lenguajes con las que esté construida.
La función principal de WF es facilitar la escritura de los procesos de negocio de forma declarativa, sin concentrándonos en el proceso que queremos implementar sin sacrificar la escalabilidad y robustez que ofrecen las nuevas tecnologías.

Arquitectura de WF
Todos los elementos del WF están basados en el principio de extensabilidad. Por este motivo es posible utilizarlo como “marco de trabajo” para incluirlo en otros productos de Microsoft ya existentes.
En la siguiente figura podemos ver las piezas fundamentales de la arquitectura del WF.




a) Capa Runtime = es el nucleo del WF y contiene la mayoria de los servicios críticos de WF. Estos servicios son:
Servicio de Ejecución: es el encargado de organizar la ejecución de las actividades y de los comportamientos más comunes de estos últimos (como eventos, manejo de excepciones, tracking, etc.)
Servicio de Scheduler: es uno de los servicios más importantes de WF. Se encarga de cómo se van a ejecutar los flujos de trabajo.
Motor de Reglas: permite crear y administrar las reglas que se evaluaran el ejecutar el programa.
b) Workflow Model = es donde los desarrolladores utilizaran la mayor parte de su tiempo ya que incluye las principales APIs y modelos del WF. Existen 2 modelos con los que se puede trabajar en WF, estos son:
Workflows Secuenciales: son los más utilizados debido a nuestra naturaleza de dividir las tareas en pasos.
Máquinas de Estado: permite definir diferentes estados y las transiciones que permiten cambiar de un estado a otro los que se asocian a eventos.
c) Hosting = se encarga de dar soporte de ejecución de WF permitiendo establecer los servicios necesarios, además de facilitar las comunicaciones de los flujos de trabajo con componentes externos tales como librerías u otros procesos.

Actividades (Workflow Model)
Las actividades pueden dividirse en:
- Act. de Proceso (tareas sencillas – code, delay, secuence, parallel, etc - )
- Act. de Control (Condicionales – if, while, etc - )
- Control de Excepciones
- Act. de Modelado (provee la funcionalidad necesaria para que nuestro flujo de trabajo pueda comunicarse con el proceso que los Aloja – ExternalDataExchangeService -)

Servicios (Hosting)
- Persistence (WorflowPersistenceService): permite que los flujos de trabajo sean durables en el tiempo a la espera de un determinado evento. WF proporciona una implementación de sqlWorkflowPersistenceService la que permite utilizar SQL Server como almacén de persistencia.
- Scheduler (WorkflowSchedulerService): permite configurar si deseamos que cada uno de nuestros flujos de trabajo se ejecuten en hilos separados o en el mismo hilo. Por defecto defaultWorkflowSchedulerService crea un nuevo hilo por cada instancia y con Manual WorkflowSchedulerService podemos establecer como lo deseamos.
- Tracking (WorkflowTrackingService): permite instrumentar un proceso de negocio y brinda un servicio de repositorio (BD) que poder explotar. Se basa en 2 elementos fundamentales: Tracking Profile: define un perfil de eventos que deben ser instrumentalizados (Ej: Act. o Flujos de trabajo) y Tracking Channel: es el repositorio (txt o BD) donde se depositan todas las trazas de información.

SSIS – Asignación dinámica de path (Directory) a un Foreach

0 comentarios

Buenas, es posible configurar dinámicamente el path (Directory) de un componente For Each. De este modo nuestros procesos pueden recorrer diferentes directorios configurados dinámicamente con solo modificar el fichero de configuración utilizado como “Package Configuration”.
Si ya contamos con un fichero de package configuration debemos editarlo, caso contrario, crearemos uno para poder anexar la funcionalidad que pretendemos (Si tienes dudas de cómo crear y/o editar ficheros de configuración puedes leer mis posts anteriores donde se explica claramente).
Una vez abierto el fichero de configuración en el paso donde debemos seleccionar las propiedades a exportar, debemos buscar el componente Foreach Loop Container dentro del Package y tildar el check “Directory” y dar Next y finalizar en todos los restantes pasos del asistente.



Luego abrimos manualmente el fichero de configuración en el path que se encuentre y allí entre los tags del Directory debemos poner el path donde se encontrarán los ficheros que deseamos que recorra el Foreach



Espero les hay sido de utilidad este nuevo post, saludos a todos!

SSIS – Asignación dinámica de nombres a ficheros de destino de Excel

7 comentarios

Buenos días a todos, en este post voy a explicitar las acciones requeridas para asignar dinámicamente los nombres a los ficheros de destino de Excel (ficheros XLS). Este caso es típico cuando se pretende hacer una exportación diaria de información por ejemplo. Los pasos a seguir son:
1. Crear una variable a nivel de Package de tipo String, la cual va a contener el nombre del fichero de destino.
2. Contar con un Script component en el Data Flow, en el que debemos armar el nombre del fichero concatenando fechas u otras cadenas según sea el nombre que deseamos formar, y posteriormente asignarle dicho nombre a la variable que creamos en el punto 1. (Para ver cómo trabajar con variables en un Script haga click aqui)
3. En la Excel Connection de destino debemos dirigirnos a sus propiedades, Expressions y a la propiedad ConnectionString asignarle la variable creada en el punto 1.


Si son tus primeros pasos en SSIS seguramente no comprenderán demasiado como armar todo el package, si eso sucede les recomiendo que lean los primeros posts en donde explico más detalladamente este tema.
Espero les sirva mi post, y como siempre espero sus comentarios… Saludos!

SQL Server 2008 - Paquete Esencial

0 comentarios

Recientemente Microsoft ha elaborado paquete esencial de tan sólo 40Mb de descarga sobre SQL Server 2008.
La descarga está en inglés y está compuesto por videos, postcast, Case Study, white Papers y otras documentaciones sumamente útiles para los profesionales.
Este paquete es muy interesante porque permite tener una primera impresión bastante acabada de la última versión del Motor de Base de Datos de Microsoft, pero de ninguna manera representa un recurso formativo para aquellos que lo descarguen.



Para descargar el SQL Server 2008 Essential BackPack haga click en el siguiente LINK.