Evento Virtual: La Nueva Eficiencia

|


Microsoft Technet prepara uno de los eventos virtuales más importantes del año en donde estará presentando la nueva serie de servidores y su reciente sistema operativo Windows 7, el evento está diseñado para IT Pros y usuarios finales quienes podrán disfrutar de una serie de sesiones en línea que resaltarán la nueva serie de productos Microsoft entre los cuales se encuentran Windows Server 2008 R2, Exchage Server 2010, Forefront 2010 y Office 2010.


El evento contará con más de 20 presentaciones, sesiones interactivas, soporte en vivo, y demostraciones de la mano de expertos en el área, MVPs, líderes de comunidad y profesionales que revelarán las más recientes ventajas y características disponibles en la nueva línea de productos Microsoft.


A continuación el link para el registro del evento,




Mucha Suerte!

Office UI utilizando C++ en VS 2008 SP1

|

En mayo de este año Microsoft hizo disponible el Service Pack 1 de Visual Studio, este relanzamiento de características permite a desarrolladores hacer uso de nuevos componentes y plantillas de proyectos, entre ellos el Entity Framework que estaré cubriendo en próximas publicaciones y la nueva posibilidad de utilizar la interfaz de Office en aplicaciones propietarias.

Hasta el momento solo se cuenta con la posibilidad de utilizar la interfaz de Office en proyectos MFC en C++, las ventajas comprendidas en este nuevo tipo de aplicaciones incluyen la posibilidad de crear aplicaciones con Ribbons, controles de Microsoft Outlook, notificaciones, entre una larga lista de controles disponibles dentro de la suite de Office, con una arquitectura muy similar a aquella empleada en aplicaciones como Word y Powerpoint.

A continuación un par de pasos para ver su funcionamiento en VS 2008 SP1.

1. Creando el proyecto MFC

Una vez que seleccionamos C++ como el lenguaje a emplear creamos una aplicacion MFC, aquellos que han trabajado aplicaciones multidocumentos encontraran este paso muy familiar dado a que sigue siendo el estilo usual de trabajar para aplicaciones Windows de modo nativo.

OFFICE1

2. Seleccionando el tipo de aplicación.

En la ventana siguiente del Wizzard encontraremos Office disponible en la sección Project Style.

OFFICE2

3. Creando el proyecto.

Una vez creado el proyecto tendremos una solución con varios archivos como se ve en la siguiente figura.

OFFICE3

4. Compilando y ejecutando.

El output del proyecto sin modificar una linea de la plantilla genera una aplicacion como la que se muestra a continuación.

OFFICE4

5. Agregando botones al ribbon.

El siguiente segmento de codigo en MainFrm.cpp en el metodo InitializeRibbon() agrega un panel al ribbon de la aplicación.

// Add "Home" category with "Clipboard" panel:

bNameValid = strTemp.LoadString(IDS_RIBBON_HOME);

ASSERT(bNameValid);

CMFCRibbonCategory* pCategoryHome = m_wndRibbonBar.AddCategory(strTemp, IDB_WRITESMALL, IDB_WRITELARGE);

// Creando un panel customizado.

CMFCRibbonPanel* myPanel = pCategoryHome->AddPanel(L"My Panel");

// Creando un boton.

CMFCRibbonButton* myButton = new CMFCRibbonButton(1003, L"Mi boton de prueba", 1, TRUE);

// Agregar un boton.

myPanel->Add(myButton);

image

6. Empleando eventos de interfaz de usuario

Dado a que Office UI está basado en MFC el manejo de eventos sigue su modo tradicional mediante las macros ON_COMMAND y ON_UPDATE_COMMAND_UI. El siguiente fragmento de código muestra como utilizar un método para manejar los mensajes provenientes de los botones del ribbon.

BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWndEx)
ON_WM_CREATE()
ON_COMMAND(ID_WINDOW_MANAGER, &CMainFrame::OnWindowManager)
ON_COMMAND_RANGE(ID_VIEW_APPLOOK_WIN_2000, ID_VIEW_APPLOOK_OFF_2007_AQUA, &CMainFrame::OnApplicationLook)
ON_UPDATE_COMMAND_UI_RANGE(ID_VIEW_APPLOOK_WIN_2000, ID_VIEW_APPLOOK_OFF_2007_AQUA, &CMainFrame::OnUpdateApplicationLook)
ON_COMMAND(ID_VIEW_CAPTION_BAR, &CMainFrame::OnViewCaptionBar)
ON_UPDATE_COMMAND_UI(ID_VIEW_CAPTION_BAR, &CMainFrame::OnUpdateViewCaptionBar)
END_MESSAGE_MAP()

En 10 pasos: Entendiendo Windows Workflow Foundation

|

Windows Workflow Foundation es una tecnología disponible en Visual Studio para diseñar flujos de trabajo en aplicaciones Windows y Web que utilizan Microsoft .Net Framework 3.0 en adelante. En esta entrada intentaré mostrar tan rápido como sea posible una visión general de WF y como comenzar.

Que es un Workflow.

Un Workflow (Flujo de Trabajo) es una serie de procesos o tareas que tienen que ejecutarse en un orden, secuencia y prioridades determinadas, cada proceso debe persistir la información de entrada a medida en que se ejecuta hasta el último paso, obteniendo así un visión de cual fue la secuencia de actividades que se realizaron y como esto afecto el contenido de los datos del usuario.

Sin WF cada tarea o paso estaría representado por clases e Interfaz de Usuario independientes como piezas de software a lo largo de la aplicación pero en el caso de WF cada proceso es visualmente depurable, mantenible y presentable a través del diseñador de flujos disponible en Visual Studio 2008.

En 10 pasos:

En Microsoft Visual Studio 2008:

1. Creamos un nuevo proyecto del tipo Workflow y seleccione Sequential Workflow. Un Workflow Secuencial es aquel que se basa en la presendencia de un paso ejecutar otro hasta llegar a una ultima actividad.



2. Dado a que necesitamos una aplicacion donde hospedar la ejecución del flujo creamos una aplicación consola como a continuación.




3. Lo más común es que las reglas de negocio estén definidas en una librería de clases independiente en la solución, así que a fines de demostración crearemos otro proyecto que incluirá las actividades dentro del WF.

4. Una vez que le hagamos doble clic a Workflow1.cs en el explorador de soluciones notaremos una serie de elementos en el toolbar de Visual Studio para diseñar el flujo, en este caso solo utilizaremos un Delay el cual arrastraremos hasta el punto entre el fin e inicio de mi flujo.


5. Para crear una actividad propia eliminaremos Class1.cs del proyecto librería de clases y agregaremos MyOwnActivity.cs, adicionalmente al mismo proyecto, crearemos una referencia a System.Workflow.ComponentModel.dll.

6. En el proyecto Sequential Workflow, agregaremos una referencia al proyecto que contiene mi nueva actividad, compilamos, cerramos y reabrimos el diseñador de Workflow y debemos ver MyOwnActivity esta vez como actividad disponible en el Toolbox.


7. Hecho esto podemos ahora arrastrar nuestra actividad justo debajo de delayActivity1. Luego presionamos F4 mientras seleccionamos delayActivity1 y establecemos la propiedad TimeoutDuration a 00:00:05 (5 segundos). A nuestra actividad no le haremos ningún cambio.


8. En la aplicación de consola, agregamos referencias a System.Workflow.Activies.dll, System.Workflow.ComponentModel.dll, System.Workflow.Runtime.dll y a nuestros otros dos proyectos.

9. En el program.cs, de nuestra aplicación cónsola escribo las líneas de código que muestro a continuación en la imagen. El uso del AutoResetEvent es necesario para esperar la finalización del flujo dado a que WF ejecuta cada flujo en un hilo independiente. Para señalar el evento y continuar con el curso de la aplicación al momento de salir los eventos WorkflowTerminated (En caso de error) y WorkflowCompleted (En caso de exito) señalan a la variable ev que debe pasar la ejecución a la aplicación.


10. Establecemos el proyecto de cónsola como proyecto de inicio y presionamos F5.


Espero que sea de su utilidad!


Saludos.

Visual Studio 2010: Mejoras en aplicaciones Web

|


A continuación describo una lista de las mejoras más importantes que ocurriran en la próxima versión de Visual Studio para desarrolladores Web. Cabe destacar que ciertos cambios introducidos en la versión actual (VS 2008), en lo personal no parecieron tan relevantes en la superficie como en otras ediciones, en esa ocación dedicando una mayor inversión a LinQ y al .Net Framework entro otros cambios a nivel de sintaxis, sin embargo, al parecer parte de la madurez en los lenguajes esta vez permitió al equipo de producto centrarse un poco más en la tarea del desarrollador y los resultados realmente saltan a la vista.

Dado a que finalmente en esta versión el número de mejoras es significativo a nivel de IDE y experiencia del desarrollador solo me voy a dedicar a mencionar tres de los aspectos que considero más relevantes a nivel general.

Stylesheets, Master Page y GridView por defecto al crear un nuevo Web Form.
Sí, finalmente ocurrió, podremos dedicarnos a la creación de hojas de estilo con toda confianza dado a que el editor de Web de Visual Studio colocará por sí solo los atributos Css-Class con nombres como "th", "td" y otros valores por defecto, también incluye un masterpage por sí solo, en el cual solo tendremos que editar, claramente se entendió que el tiempo importa.

Soporte a Entity Framework y Scaffolding
A mi parecer una de las características más impresionantes de esta nueva versión en Visual Studio. Es la capacidad de crear una entidad completamente nueva y exponerla como un mantenimiento de datos al usuario, sin la necesidad de nisiquiera crear un solo archivo .aspx ni escribir una línea de código, gracias a la resolución de URL, pero al mismo tiempo sin perder granularidad en la regla del negocio gracias a la extensibilidad del Entity Framework y LinQ.

En lo personal, por algo de tiempo, he estado creando algo de tecnología que apalancara entidades que lograran ofrecer reglas de negocio entre otras cosas de modo propietario, pero este nivel de adaptación es algo que realmente escapa a la vista, sinceramente de lo mejor que he visto en mucho tiempo gracias a la adaptación e integración de Visual Studio.

DynamicValidators
Para aquellos que utilizaron Databinding extensivamente en ASP.NET un nuevo validador dinámico hace aparición para ser incluidos en templates relacionados a objetos provenientes del entity framework permitiendo reglas de negocio ser incluidos como parte de la validación al ser guardados por el usuario con el mínimo grado de intervención por parte del desarrollador.

En conclusión, tengo que decir sin temor alguno que estamos frente no solo a un mejor Visual Studio sino a una nueva fase de VS que finalmente cocecha todo el esfuerzo invertido en generar una plataforma de trabajo como ocurrio en VS 2002/2003, mejoras de sintaxis VS 2005 fundaciones donde colocar la tecnología VS 2008 y enfoque al desarrollador VS 2010.

Saludos!

A la vista: SQL Server 2010

|

En efecto, Microsoft revela planes de lanzar Microsoft SQL Server 2010, actualmente con el nombre código Madison, mientras se espera un CTP para Julio de este año. Parte de las características a incluir en el siguiente lanzamiento tienen que ver con la reciente adquisición por parte de Microsoft de DATAllegro una empresa destinada a la venta de dispositivos y software para base de datos y almacenamiento OLAP, esto con la intención de mejorar la escalabilidad de Analysis Services frente a base de datos de alta demanda.

No hay aún especificaciones de Transact SQL relevantes a la vista. Hasta el momento el equipo solo revela que la visión del producto estará orientada para base de datos de "Auto-Servicio Administrable" lo que permitirá a usuarios finales decidir que datos desean, mientras IT-Pro's y DBA's podrán mantener un control administrativo de los recursos, permitiéndoles mantener el rastro, auditar y autorizar sobre los clientes que acceden a la información.

Parte de los cambios internos que vienen en el producto, muchos de ellos relacionados con Excel y SQL Server es la capacidad de mantener datos en memoría y dar la capacidad al usuario de decidir su despliegue a nivel de cubos y analisis predictivo de datos de manera más eficiente y rápida.

Hasta el momento no se anuncian fechas finales, sin embargo estare escribiendo nuevas entradas tan pronto nueva información esté disponible, para estudiar lo nuevo en SQL Server.

A continuación algunos links relacionados.

http://www.datallegro.com/
http://www.microsoft.com/sqlserver

Mucha Suerte!

C#, Mejoras al lenguaje en Visual Studio 2010.

|

Microsoft anuncia la nueva serie de especificaciones a presentar en Visual Studio 2010 para C# 4.0 lo cual incluye una lista de mejoras en sintaxis orientadas a la invocación dinámica de métodos, parámetros opcionales y mejoras a nivel de compilación para ensamblados que consuman COM y código nativo.

Una de las cosas más notables, es que estos cambios no reflejan un mayor cambio al lenguaje a diferencia de lo ocurrido con versiones anteriores como C# 3.0 al introducir LinQ o C# 2.0 al incorporar Generics, lo cual habla muy bien de la madurez del mismo y la manera en como ha venido evolucionando hasta estabilizarse a lo que veremos en un futuro próximo dentro de Visual Studio 2010.

A continuación algo de sintaxis nueva en C# 4.0

Parámetros Opcionales.
Algo sumamente útil y uno de los cambios más importantes a nivel de economía de sintaxis dado a que reduce significativamente la necesidad del desarrollador de generar sobrecargas no necesarias al momento de presentar un método. A continuación un ejemplo.


public class Person
{
public void SayHi(string text = "Hi There")
{
MessageBox.Show(text);
}
}

...

Person a = new Person();
a.SayHi();
a.SayHi("Hello There");

En el ejemplo anterior, SayHi es un método cuyo único parámetro es opcional, muestra "Hello There" en la segunda invocación y "Hi There" en la primera.

Parametros con Nombre

Dado a que no es posible utilizar comas vacias al invocar un método, ej. Create(1001,,,"001"), es posible invocar cada parámetro en el orden que se desee especificando su nombre.


public class Order
{
public void Create(int number,

string paymentMode = "CR30",
string comments = "No Comments",
string customerCode = "GENERIC")
{
MessageBox.Show(String.Format("Creando la orden {0} \n Modo de Pago: {1}, Cliente:{2} \n{3} ", number, paymentMode, comments, customerCode);
}
}


...

Order order = new Order();
order.Create(1001, customerCode: "001");



Dynamic Binding


Dynamic Binding es una característica nueva del compilador que permite resolver la invocación de métodos solo en tiempo de ejecución, sin validarlos en tiempo de compilación, eso permite la invocación de miembros sin conocer el objeto final. Lo cual es util en COM, lenguajes como IronPython y reduce la necesidad de explicitamente invocar reflection para acceder a un miembro. Adicionalmente si el objeto implementa la interfaz IDynamicObject este puede tomar decisiones referentes a la invocación del nuevo método.


Ejemplo.

dynamic x = new Customer();
x.SayHi();
x.NotImplementedYetMethod();

En el fragmento anterior ambas líneas compilan exitosamente, sin embargo abrá un error en tiempo de ejecución para el segundo método.


Esto, sumado con nuevas mejoras para la integración con código no administrado por lo pronto son los cambios más importantes para la nueva versión de C#. A continuación un link para más información.


http://code.msdn.microsoft.com/csharpfuture

Microsoft presenta F# en Visual Studio 2010

|

Microsoft, presenta F# dentro de la nueva suite de lenguaje de programación para la próxima versión de Visual Studio 2010, después de mucho tiempo de investigación, un nuevo lenguaje más destinado a script, abstracto y posicionado sobre el nuevo Framework 4.0 hace aparación.

El target principal del nuevo lenguaje va orientado a desarrolladores que requieren el máximo nivel de economía de sintaxis y capacidad rápida de abstracción sin tener que componentizar ni pagar en líneas de código esfuerzo destinado a la declaración de clases, interfaces o métodos.

Por el otro lado, el compilador, esta vez, con mayor soporte en operadores que sus lenguajes predecesores buscando el máximo en economía de código, demanda un nivel más profundo de abstracción del lado del programador convirtiéndose en uno de los lenguajes más compactos mostrados hasta ahora para la plataforma .Net.

La naturaleza del lenguaje es funcional, lo que significa que gira en torno a la invocación directa de funciones o expresiones que equivalen a métodos cuyos retornos, parámetros, alcances e inclusive nombres son inferidos automáticamente por el compilador, el objetivo de ello es crear un compilador que tenga la capacidad de resolver la declaración total de un procedimiento teniendo el mínimo de información y sintaxis proveida por el programador.

A diferencia de otros lenguajes imperativos (Manera como se conocen lenguajes predecesores como C# en donde el compilador no infiere la declaración de un método o procedimiento determinado) este provee de un set de características totalmente nuevas para el programador como la posibilidad de crear sus propios operadores, invocar parcialmente funciones sin entregar todos los parametros, compilar solo secciones del programa llegando a la posibilidad de compilar solo una línea, crear tipos basados en inferencia directa, entre otras características.

A lo largo de los post siguientes me voy a dedicar un poco más en detalle a mostrar ciertas características del nuevo lenguaje así como enlaces a recursos similares, mientras ya está disponible la descarga de Visual Studio 2010 Beta 1 en el siguiente link http://www.microsoft.com/downloads/details.aspx?FamilyID=75cbcbcd-b0e8-40ea-adae-85714e8984e3&displaylang=en