
Evento Virtual: La Nueva Eficiencia

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.
2. Seleccionando el tipo de aplicación.
En la ventana siguiente del Wizzard encontraremos Office disponible en la sección Project Style.
3. Creando el proyecto.
Una vez creado el proyecto tendremos una solución con varios archivos como se ve en la siguiente figura.
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.
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);
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
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.

Visual Studio 2010: Mejoras en aplicaciones Web

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
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.

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.
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