Después del último post sobre Velocity, en esta ocasión os quería llamar la atención sobre una herramienta muy interesante de administración disponible en Codeplex de forma gratuita y que reemplaza a la administración out-of-the-box con PowerShell que trae Velocity. Se trata de la Microsoft Distributed Cache Admin Tool, y entre otras funcionalidades nos permite:
- Visualizar la salida PowerShell que nos indica el estado del clúster de Velocity.
- Visualizar en el explorador las regiones que tenemos en caché.
- Visualizar el tamaño del cluster.
Aparte de las informaciones anteriores, la herramienta de administración nos permite realizar tareas como:
- Añadir nuevas regiones a las cache definidas.
- Modificar la configuración de una cierta cache.
- …
Sin duda, esta herramienta nos da una idea de la extensibilidad que tiene Velocity a nivel de administración de la caché.
Pues eso, que ya tenemos disponible para descarga la Beta2 del Training Kit de Visual Studio 2010 y .NET Framework 4.0 Beta2. Como siempre, el training kit viene cargadito de material para empaparse de las novedades de la Beta2 de Visual Studio 2010 y .NET Framework 4.0. Por cortesía de Jason Olson, aquí va el resumen de los contenidos
….molaaaa!
Presentations
- What’s New in .NET Framework 4
- What’s New in Visual Studio 2010
- Introduction to ASP.NET MVC
- Introduction to Managed Extensibility Framework
- Introduction to .NET RIA Services
- Introduction to “Velocity”
- Parallel Computing for Managed Developers
- Web Deployment with Visual Studio 2010
- What’s New in ASP.NET AJAX 4
- What’s New in ASP.NET Web Forms 4
- What’s New in C# and VB
- What’s New in ADO.NET Data Services
- What’s New in Entity Framework 4
- What’s New in Windows Presentation Foundation 4
- What’s New in Windows Workflow 4
Hands-On Labs
- Introduction to ADO.NET Data Services
- Exercise 1: Creating and Consuming ADO.NET Data Services
- Exercise 2: Consuming ADO.NET Data Services using ASP.NET AJAX
- Exercise 3: Extending Data Services with Service Operations and Interceptors
- Exercise 4: Adding Client-Side Paging with Row Count
- ASP.NET AJAX 4
- Exercise 1: Leveraging a Client-Side Template
- Exercise 2: Using the DataView Control
- Exercise 3: Creating Custom Markup Extensions
- Exercise 4: Declaratively Instantiating Behaviors
- Creating Plan My Night – ASP.NET MVC Application
- Exercise 1: Creating an ASP.NET MVC Application, Plan My Night
- Exercise 2: Creating Entity Framework Data Model
- Exercise 3: Adding AJAX For Searching Activities
- Enhancing Plan My Night – ASP.NET MVC Application
- Exercise 1: Adding Caching using “Velocity”
- Exercise 2: Structuring an Application using MVC Areas
- Introduction to ASP.NET Web Forms 4
- Exercise 1: Controlling Server Control ClientIds
- Exercise 2: Enabling Bi-Directional Routing Support
- Exercise 3: Granular ViewState
- Microsoft Office Programmability in C# and Visual Basic
- Introduction to F#
- Exercise 1: Types in F#
- Exercise 2: Using the Let keyword
- Exercise 3: Functions
- Exercise 4: Lists
- Exercise 5: Pattern Matching and Recursion
- Exercise 6: Types and Discriminated Unions
- Introduction to the Managed Extensibility Framework
- Exercise 1: Using MEF To Dynamically Add Modules to an Application
- Exercise 2: Dynamically extending a form
- Introduction to “Velocity”
- Exercise 1: Setting up and running “Velocity”
- Exercise 2: Programming directly against “Velocity” as a generic object cache
- Exercise 3: Using Velocity’s SessionState provider with ASP.NET
- Exercise 4 (Optional): Configure “Velocity” Cache in a cluster
- Introduction to Workflow 4
- Exercise 1: Hello Workflow
- Exercise 2: Refactoring Workflows
- Exercise 3: The CodeActivity
- Exercise 4: Dynamic Workflows with XAML
- Exercise 5: Testing Workflows
- Exercise 6: WorkflowApplication
- Exercise 7: Adding If/Else Logic
- Exercise 8: Error Handling
- Exercise 9: Activity Designers
- Exercise 10: Hosted Designer
- Introduction to Parallel Extensions
- Exercise 1: Parallelize existing algorithm using static Parallel helper class
- Exercise 2: Create and run parallelized Tasks
- Exercise 3: Using the Task<T> class to create and run tasks that return a value
- Exercise 4: Parallelizing LINQ queries using PLINQ
- Test-Driven Development in Visual Studio 2010
- WCF Service Discovery
- Exercise 1: Ad-Hoc Discovery
- Exercise 2: Metadata Extensions
- Exercise 3: Announcements
- Exercise 4: Discovery Proxy
- Exercise 5: Legacy Discovery
- Web Development in Visual Studio 2010
- Exercise 1: Using HTML Code Snippets
- Exercise 2: Web.config Transformations
- Exercise 3: Packaging and Deploying Web Applications
- Exercise 4: Packaging and Deploying Web Applications for IIS
- Building a Data-Driven Master/Detail Business Form using WPF 4
- Multi-touch Gesture – MFC
- Multi-touch WMTouch – MFC
- Ribbon – MFC
- Taskbar – MFC
Demos
- ContosoAutomotive (Parallel Extensions + MEF + WPF)
- AdventureWorks AJAX
- ASP.NET AJAX Ten-In-One
- Managed Languages Ten-In-One
- Barrier
- CountdownEvent
- Hello Visual Studio 2010
- Introduction to the Managed Extensibility Framework
- Parallel Baby Names
- Parallel For Loop
- Parallel LINQ (PLINQ)
- Parallel Tasks
- “Velocity”
Un tip muy rápido que podéis encontrar en este post del equipo de ADO.NET Data Services sobre como configurar Internet Explorer para visualizar las respuestas obtenidas en formato ATOM al realizar llamadas a servicios REST definidos con ADO.NET Data Services. Los paso son:
-
En Internet Explorer, ir a Herramientas –> Opciones de Internet.
-
En la pestaña Contenido pinchar en el botón Configuración dentro de la sección fuentes y Web Slices.
-
En la ventana que se abre, simplemente desmarcamos la opción Activar la vista de lectura de fuentes.
-
Y con esto ya podemos visualizar la respuesta de los servicios de ADO.NET Data Services en formato ATOM.
Hace unos meses escribí un post sobre F# en Visual Studio 2010 titulado Novedades en Visual Studio 2010- Soporte de F#! en el que realizaba una pequeña introducción a las características de este nuevo lenguaje de .NET Framework. En esta ocasión os dejo una serie de recursos interesantes para continuar con la inmersión en F#:

Siguiendo con la serie de posts sobre novedades en el IDE de Visual Studio 2010 (VS 2010) que iniciamos con esta primera entrega, en esta nueva entrega vamos a ver algunas novedades más que tendremos disponibles a la hora de desarrollar con Visual Studio 2010. En esta ocasión, veremos algunas funcionalidades más relacionadas con Team System. Empecemos.
Generar diagrama de secuencia
VS 2010 nos permite generar de forma sencilla el clásico diagrama de secuencia del código que estamos generando. Para crear este diagrama de secuencia:
-
Hacemos click con el botón derecho del ratón en el IDE y pulsamos sobre Generate Sequence Diagram…
-
En la ventana que se abre especificamos las características del diagrama a generar: profundidad máxima de llamada, si queremos que sea del proyecto actual, de la solución actual o bien de la solución actual y referencias externas.
-
Tras pulsar OK, al cabo de unos segundos tendremos generado el diagrama de secuencia.
Sin duda, esta característica es más que interesante para comprender de un sólo vistazo que estamos haciendo en nuestro código.
Debug History
VS 2010 dispone de una nueva capacidad de depuración: la depuración histórica. Esta nueva característica permite hacer un seguimiento paso a paso de la ejecución de nuestro código, facilitando la tarea de encontrar posibles errores en el mismo. Adicionalmente, la depuración histórica nos permite volver a evaluar porciones de código ya ejecutadas y que han quedado grabadas en el histórico. Para habilitar esta característica en VS 2010:
-
Nos vamos al menú Tools y pulsamos sobre Options.
-
En la ventana que se abre, nos vamos a la sección Historical Debugging y dentro de esta en la sección habilitamos la depuración histórica a través de poner el check de Enable Historic Debugging.
-
Podemos además escoger que se va a monitorizar para facilitar la depuración.
-
A continuación iniciamos la depuración de nuestra aplicación.
-
Ponemos un punto de ruptura en nuestra aplicación y vamos haciendo un paso a paso.
-
Como podéis observar, la depuración histórica se va mostrando en la ventana Debug History. Además, podemos comprobar que si pulsamos sobre un paso grabado, tenemos disponible información relativa a la salida generada por el programa, hilo de ejecución, …
- La depuración histórica genera un fichero de trazas que podemos abrir a posteriori para analizar datos relativos a la ejecución de nuestra aplicación.
Y hasta aquí llega este segundo post sobre ayudas en el IDE de VS 2010.
Aunque creo que estas novedades en Visual Basic .NET 10 (VB.NET 10) ya no lo son tanto (gracias a los post de El Bruno, en concreto este post, y algún otro Geek), si quería hacer un pequeño resumen de las nuevas características que vendrán con la versión 10 de VB.NET en Visual Studio 2010 y .NET Framework 4.0. Básicamente estas novedades son:
- Inicialización rápida y sencilla de colecciones en una sola línea de código.
-
Codificación multi-línea sin tener que poner el carácter _, en VB.NET 10 y como sucede con C#, podremos utilizar múltiples líneas para codificar utilizando simplemente el intro por cada nueva línea que utilicemos, es decir, se utiliza continuidad de línea implícita.
-
Aquí os dejo una pequeña porción de código en la que se ilustran las novedades en VB 10 anteriores.
|
Module Module1
Public Property FailureScore As Integer = 70
Sub Main()
Dim scores = {42, 10, 54, 68, 85, 92, 96, 100}
Dim failures = scores.Where(Function(s)
Return (s <= FailureScore)
End Function).ToList()
failures.ForEach(Sub(f)
Console.WriteLine(f)
End Sub)
Console.ReadKey()
End Sub
End Module
|
La correspondiente salida por pantalla es la siguiente:

Finalmente, comentaros que la lista de novedades de VB 10 se completa con las siguientes características novedosas:
- Soporte de propiedades autoimplementadas.
-
Integración con el DLR (Dynamic Language Runtime) lo que nos permite invocar de forma dinámica cualquier tipo de objeto desde código VB.NET.
-
Características de Co y Contravarianza.
-
Finalmente, el despliegue de aplicaciones Office sin tener que embeber los PIA (Primary Interop Assemblies) en las mismas.
Vamos, que la idea con la evolución de VB.NET es que converja en cuanto a prestaciones con las de C#:

Y hasta aquí llega este pequeño resumen de novedades en VB.NET 10.
Continuando con la serie de posts (puedes acceder al último post de la serie desde este enlace) sobre novedades de Windows Workflow Foundation 4.0 (WF 4.0), en esta ocasión os dejo un par de recursos más que interesantes para continuar con la inmersión en la tecnología de creación de flujos de trabajo de Microsoft:
.jpg)
Y hasta aquí llega este nuevo post sobre novedades de WF 4.0. Espero que os haya resultado interesante.
El equipo de ADO.NET Data Services acaba de anunciar la disponibilidad de la CTP 2 de ADO.NET Data Services v1.5. Como novedad de la segunda CTP de ADO.NET Data Services 1.5, descargable a través de este enlace, comentaros que se asienta sobre .NET Framework 3.5 SP1 y Silverlight 3, si bien las características incluidas formarán parte de la versión final de .NET Framework 4.0. En cuanto a las novedades en sí, os hago un resumen rápido de lo que se comenta en el post que anuncia la disponibilidad de la CTP2:
-
Soporte para proyecciones, de manera que el formato URI de ADO.NET Data Services permite trabajar en cliente y servidor con un subconjunto de las propiedades de una entidad. Además, se añade soporte a LINQ y otras capacidades de los lenguajes .NET como tipos anónimos.
-
El Data Binding se ha extendido para que soporte Two-Way Data Binding.
-
Mejoras a la hora de conocer el número total de registros para una cierta entidad.
-
Feeds amigables, a través de extender el número de elementos ATOM que se pueden mapear con propiedades de una entidad.
-
Soporte para BLOB en el lado del cliente (incluido Silverlight 3).
-
Se ha introducido una nueva interfaz Data Service Provider para habilitar los Custom Providers que terceros puedan escribir e ir de esta forma más allá de Entity Framework, LINQ To SQL o clases .NET arbitrarias.
-
…
Os recomiendo también leer las FAQ que vienen con el post.
Siguiendo con la serie de post en torno a las novedades de Windows Workflow Foundation 4.0 (WF 4.0, puedes leer también las partes I y II), en esta ocasión voy a tratar sobre lo fácil que resulta definir argumentos y variables en Visual Studio 2010 para poder comunicarnos con un workflow de WF 4.0. Empecemos.
Diseñando el workflow
Como siempre, lo primero que vamos a hacer es diseñar el workflow de WF 4.0 con Visual Studio 2010:
-
Iniciamos Visual Studio 2010 y creamos un proyecto de workflow (de tipo secuencial).
-
En el diseñador de workflows, arrastramos una actividad de tipo Assign a la superficie de diseño.
-
Para crear argumentos y variables en un workflow de WF 4.0, disponemos en el diseñador de dos botones que nos permiten añadirlos de forma muy sencilla.
-
Por ejemplo, para añadir argumentos basta con pulsar el botón Arguments y añadir los argumentos que necesitemos. Estos pueden ser de entrada o de salida. En nuestro caso, crearemos un argumento de entrada y otro de salida.
-
A continuación, configuramos la propiedad To de la actividad Assign añadiéndole uno de estos argumentos que acabamos de crear utilizando para ello el editor de expresiones (os recuerdo que dicho editor usa sintaxis VB.NET).
- Seguimos el mismo procedimiento para configurar la propiedad Value de la actividad Assign.

Codificando la gestión de los argumentos
Una vez que hemos definido los argumentos de entrada y salida del workflow, ya solo nos falta definir las clases de gestión correspondientes:
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WFActivitiesDemo
{
public class SayHelloInArgs: Dictionary<string,object>
{
public SayHelloInArgs(string name)
{
this.Add("Name", name);
}
}
}
|
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WFActivitiesDemo
{
class SayHelloOutArgs
{
IDictionary<string, object> _outArgs = null;
public SayHelloOutArgs(IDictionary<string, object> outArgs)
{
if (outArgs == null)
{
throw new ArgumentNullException("outArgs");
}
_outArgs = outArgs;
}
public string Greeting
{
get
{
return _outArgs["Greeting"].ToString();
}
}
}
}
|
Probando el workflow
Una vez que hemos definido las clases de gestión de los argumentos de entrada y salida, solo nos queda probar el workflow. Para ello:
|
namespace WFActivitiesDemo
{
using System;
using System.Linq;
using System.Threading;
using System.Activities;
using System.Activities.Statements;
class Program
{
static void Main(string[] args)
{
AutoResetEvent syncEvent = new AutoResetEvent(false);
Console.Write("Introduce tu nombre: ");
string name = Console.ReadLine();
string greeting=null;
WorkflowInstance myInstance = new WorkflowInstance(new Sequence1(),
new SayHelloInArgs(name));
myInstance.OnCompleted = delegate(WorkflowCompletedEventArgs e)
{
SayHelloOutArgs outArgs =
new SayHelloOutArgs(e.Outputs);
greeting = outArgs.Greeting;
syncEvent.Set();
};
myInstance.OnUnhandledException = delegate(WorkflowUnhandledExceptionEventArgs e)
{
Console.WriteLine(e.UnhandledException.ToString());
return UnhandledExceptionAction.Terminate;
};
myInstance.OnAborted = delegate(WorkflowAbortedEventArgs e)
{
Console.WriteLine(e.Reason);
syncEvent.Set();
};
myInstance.Run();
syncEvent.WaitOne();
Console.WriteLine(greeting);
Console.ReadLine();
}
}
}
|
Finalmente, el resultado de ejecución del workflow es el siguiente:
Y hasta aquí llega la tercera entrega sobre novedades en WF 4.0. Espero que el post os haya resultado interesante.
Microsoft acaba de poner a nuestra disposición una nueva página pensada para facilitar el aprendizaje de Visual Studio que incluye recursos a las nuevas capacidades de Visual Studio 2010. La nueva página cuenta con secciones como:
Getting Started
Integrated Development Environment (IDE)
Debugging with Visual Studio
Deploying with Visual Studio
Extending Visual Studio
