CslaMvcMusicStore: Introducción al proyecto
Escrito el 10, diciembre a las 2:48 pm
Archivado en ASP .NET MVC, CSLA .NET | Sin Comentarios »
CSLA .NET: Entendiendo la Estructura de un Objeto Editable
Escrito el 13, noviembre a las 9:26 am
NOTA: El objetivo del presente artículo es explicar la estructura de un objeto editable, referenciando los ejemplos de la comunidad publicados en CodePlex. En la lectura nos iremos encontrando con nuevos conceptos, los cuales han sido resaltados y seleccionados para próximos artículos donde se tocarán en detalle.
Conceptualmente un el estereotipo objeto editable, se puede utilizar directamente como un objeto raíz ó como dependiente de una colección de objetos. Esta orientado a gestionar propiedades de lectura-escritura, recuperar y almacenar en algún tipo de fuente de datos (entiéndase no solo repositorios de datos relacionales).
Como ya hemos hablado en artículos anteriores, el resultado de construir objetos de negocio usando CSLA .NET es, que los objetos son creados de una forma consistente y estandarizada, así como obtener ventajas sustanciales que abstrae el framework:
-
Completo soporte de enlace a datos (WPF, SilverLight, Windows Forms y Web Forms).
-
Seguimiento de estado de objetos (si el objeto es nuevo, ha cambiado, ha sido marcado por eliminación, etc.).
-
Estandarización del procesamiento de reglas de validación y negocio.
-
Estandarización de la gestión de autorizaciones a nivel de objeto y sus propiedades.
-
Integración y simplificación de los modelos estándar de autenticación .NET.
-
Gestión de niveles de cancelación (Undo), especialmente orientado a interfaces complejas.
-
Iteración estandarizada con la capa de datos, compatible con ORM.
-
Soporte asíncrono para reglas de validación.
Bueno podemos seguir enumerando, pero en artículos anteriores, ya hemos hablado mucho de la teoría, así que vayamos directamente a la práctica, no si antes entender cada pequeño concepto clave.
Estereotipo
Para obtener toda la funcionalidad de gestión de objetos editables debemos heredar el estereotipo BusinessBase<T>, donde T es el objeto mismo.
1: [Serializable()]
2: public partial class SystemEdit:BusinessBase<SystemEdit>
3: {}
Para explicar la estructura de un objeto editable hemos preparado un objeto de negocio denominado SystemEdit, el cual es parte de los ejemplos de aprendizaje de la comunidad alojados en CodePlex.

Con el objetivo de facilitar el ejemplo, hemos utilizado la técnica de clases parciales, donde:
| Clase | Descripción |
| SystemEdit | Contiene declaración de propiedades y fábrica de objetos. |
| SystemEdit.Business | Contiene la declaración de reglas de validación y métodos de negocio. |
| SystemEdit.DataAccess | Contiene la declaración estándar de los métodos de acceso definidos por el Data Portal. |
| SystemModules | Representa la colección de módulos por sistema. |
| SystemEditList | Representa la colección editable de objetos SystemEdit. |
Para este objeto nos enfocaremos en las 3 primeras clases, SystemModules y SystemEditList representan otros estereotipos que en otros artículos analizaremos.
Declaración de Propiedades
CSLA .NET permite declarar ó definir metadatos sobre las propiedades del objeto y eliminar el uso de una cadena literal para hacer referencia al nombre de la propiedad a lo largo del objeto de negocio.
Desde ya, en esta sección, vamos a poder observar la estandarización en la codificación, lo cual por experiencia sabemos de su importancia en los equipos de desarrollo.
Como todos conocemos, la sintaxis estándar de declaración de propiedades en .NET, involucra la invocación de autorizaciones y validaciones de consistencias simples y complejas reglas de negocio, Podemos referirnos directamente a las opciones dispuestas en el espacio de nombres System.ComponentModel.DataAnnotations. Estandarizar esto, en una arquitectura de software, nos puede llevar a desacoplar estas reglas y consistencias a través de servicios de la capa de dominio.
Para estandarizar lo expuesto, CSLA .NET nos ofrece un modelo compatible con .NET más abstracto, lo que permite al framework para hacer gran parte del trabajo de forma automática.
El patrón Register Property es familiar para los que han utilizado alguna ves WPF, es muy similar a trabajar con Dependecy Properties.
Un aspecto importante a mencionar en esta sección de propiedades es la gestión de referencias a otros objetos. Cuando declaramos una propiedad que contiene una referencia a un objeto hijo, es muy recomendado usar campos administrados (como hemos expuesto líneas arriba), de esta forma dejamos a CSLA .NET la gestión de la referencia a grafos de objetos.
Fábrica de Objetos
Para comenzar con nuestro estudio debemos definir claramente qué es una factoría o fábrica. De la misma forma que sucede con muchos conceptos en la Ingeniería del Software, existen varias definiciones para este término (en la entrega anterior hemos experimentado esta situación para el concepto de patrón); por tanto, es fundamental clarificar este concepto para sentar las bases de nuestro estudio posterior.
El término factory (o fábrica) adolece de ser sobre utilizado e impreciso. Mucha gente se refiere a factory para indicar una implementación de Factory Method o de Abstract Factory (patrones definidos en el libro del GoF). Otros sin embargo, se refieren a un objeto que crea instancias de otros, aunque no sigue las reglas de los patrones mencionados anteriormente. Para entender mejor estos conceptos recomendamos continuar esta lectura.
Regresando a CSLA .NET, debemos mencionar entonces que el mecanismo estándar para crear instancias de objetos se basa en el concepto de fábricas. Es importante mencionar que estos métodos delegan la fábrica de objetos al Data Portal, quien es el encargado de aplicar el concepto de objetos móviles. Lo interesante, en este punto, es saber que disponemos de una forma estándar de obtener objetos y realizar las operaciones CRUD (Create, Read, Update, Delete).
En esta sección resaltan dos nuevos conceptos, el Data Portal y los criterios de búsqueda los cuales explicaremos más adelante en otros artículos.
A continuación se muestra la estructura completa de la clase SystemEdit:
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5: using Csla;
6: using Ninject;
7:
8: namespace CslaHispano.EncapsulatedInvoke.Domain.Entities
9: {
10: [Serializable()]
11: public partial class SystemEdit:BusinessBase<SystemEdit>
12: {
13: private IKernel _NInject;
14:
15: #region Properties
16:
17: public static readonly PropertyInfo<string> SystemIdProperty = RegisterProperty<string>(c => c.SystemId);
18: public string SystemId
19: {
20: get { return GetProperty(SystemIdProperty); }
21: private set { SetProperty(SystemIdProperty, value); }
22: }
23:
24: public static readonly PropertyInfo<string> TagProperty = RegisterProperty<string>(c => c.Tag);
25: public string Tag
26: {
27: get { return GetProperty(TagProperty); }
28: set { SetProperty(TagProperty, value); }
29: }
30:
31: public static readonly PropertyInfo<string> CodeProperty = RegisterProperty<string>(c => c.Code);
32: public string Code
33: {
34: get { return GetProperty(CodeProperty); }
35: set { SetProperty(CodeProperty, value); }
36: }
37:
38: public static readonly PropertyInfo<string> DescriptionProperty = RegisterProperty<string>(c => c.Description);
39: public string Description
40: {
41: get { return GetProperty(DescriptionProperty); }
42: set { SetProperty(DescriptionProperty, value); }
43: }
44:
45: public static readonly PropertyInfo<string> PathProperty = RegisterProperty<string>(c => c.Path);
46: public string Path
47: {
48: get { return GetProperty(PathProperty); }
49: set { SetProperty(PathProperty, value); }
50: }
51:
52: public static readonly PropertyInfo<Boolean> StatusProperty = RegisterProperty<Boolean>(c => c.Status);
53: public Boolean Status
54: {
55: get { return GetProperty(StatusProperty); }
56: set { SetProperty(StatusProperty, value); }
57: }
58:
59:
60: public static readonly PropertyInfo<SystemModules> ModulesProperty = RegisterProperty<SystemModules>(c => c.Modules);
61: public SystemModules Modules
62: {
63: get { return GetProperty(ModulesProperty); }
64: set { SetProperty(ModulesProperty, value); }
65: }
66:
67: #endregion
68:
69: #region Factory Methods
70:
71: public static SystemEdit NewSystemEdit()
72: {
73: return DataPortal.Create<SystemEdit>();
74: }
75:
76: public static SystemEdit GetSystemEdit(string systemId)
77: {
78: return DataPortal.Fetch<SystemEdit>(new SingleCriteria<SystemEdit, string>(systemId));
79: }
80:
81: public static void DeleteSystemEdit(string systemId)
82: {
83: DataPortal.Delete<SystemEdit>(new SingleCriteria<SystemEdit, string>(systemId));
84: }
85:
86: private SystemEdit()
87: {
88: _NInject = (StandardKernel)Csla.ApplicationContext.ClientContext["NInject"];
89: }
90:
91: ~SystemEdit()
92: {
93: _NInject = null;
94: }
95:
96: #endregion
97: }
98: }
Reglas de Validación
Siempre con el objetivo de abstraer y estandarizar, CSLA .NET nos entrega un completo sub sistema de reglas de validación el cual podemos extender según nuestras necesidades, con lo cual podemos validar de forma síncrona o asíncrona lo siguiente:
-
Validar una ó más valores de las propiedades de un objeto y de un grafo de objetos.
-
Validar la lectura y escritura de las propiedades de un objeto.
-
Validar la ejecución de métodos de un objeto.
Por un tema de facilidad del ejemplo, solo hemos incluido el concepto de reglas de validación (incluimos el ejemplo de una extensión personalizada).
En esta sección resaltan un nuevo concepto de reglas de autorización el cual explicaremos más adelante en otros artículos.
A continuación se muestra la estructura completa de la clase SystemEdit.Business y la regla personalizada CustomIsNumericRule:
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5: using CslaHispano.EncapsulatedInvoke.Domain.Core;
6:
7: namespace CslaHispano.EncapsulatedInvoke.Domain.Entities
8: {
9: public partial class SystemEdit
10: {
11: #region Business Methods
12:
13: // TODO: add public properties and methods
14:
15: #endregion
16:
17: #region Validation Rules
18:
19: protected override void AddBusinessRules()
20: {
21: base.AddBusinessRules();
22: BusinessRules.AddRule(new CustomIsNumericRule(CodeProperty));
23: BusinessRules.AddRule(new Csla.Rules.CommonRules.Required(TagProperty));
24: BusinessRules.AddRule(new Csla.Rules.CommonRules.Required(CodeProperty));
25: BusinessRules.AddRule(new Csla.Rules.CommonRules.Required(DescriptionProperty));
26: BusinessRules.AddRule(new Csla.Rules.CommonRules.MaxLength(CodeProperty, 50));
27: BusinessRules.AddRule(new Csla.Rules.CommonRules.MaxLength(DescriptionProperty, 250));
28: }
29:
30: #endregion
31:
32: #region Authorization Rules
33:
34: private static void AddObjectAuthorizationRules()
35: {
36: // TODO: add object-level authorization rules
37: }
38:
39: #endregion
40: }
41: }
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5: using Csla;
6: using Csla.Rules;
7: using Csla.Core;
8: using System.Text.RegularExpressions;
9:
10: namespace CslaHispano.EncapsulatedInvoke.Domain.Core
11: {
12: public class CustomIsNumericRule : Csla.Rules.BusinessRule
13: {
14: public CustomIsNumericRule(IPropertyInfo primaryProperty)
15: : base(primaryProperty)
16: {
17: InputProperties = new List<IPropertyInfo> { PrimaryProperty };
18: }
19:
20: protected override void Execute(RuleContext context)
21: {
22: var target = (string)context.InputPropertyValues[PrimaryProperty];
23: if (IsNumeric(target))
24: context.AddErrorResult("The code must be alphanumeric.");
25: }
26:
27: private bool IsNumeric(string text)
28: {
29: Regex _pattern = new Regex("[^0-9]");
30: return !_pattern.IsMatch(text)
31: && (text != "");
32: }
33: }
34: }
Acceso a Datos
Nuevamente, siempre con el objetivo de abstraer y estandarizar, CSLA .NET nos entrega un completo sistema de gestión de operaciones de acceso a datos (entiéndase que no solo hablamos de bases de datos relacionales), definidas en el componente Data Portal, el cual nos presenta métodos CRUD estándar. En este ejemplo hemos utilizado, con el objetivo de mostrar las capacidades de desacoplamiento, la técnica de inyección de dependencias utilizando la herramienta NInject para identificar en tiempo de ejecución una implementación concreta de los repositorios definidos.
A continuación se muestra la estructura completa de la clase SystemEdit.DataAccess, su interface repositorio y su implementación concreta:
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5: using System.Data;
6:
7: namespace CslaHispano.EncapsulatedInvoke.Domain.Repository
8: {
9: public interface ISystemEditRepository
10: {
11: IDataReader Fetch();
12: IDataReader Fetch(string id);
13: void Insert(string systemId, string tag, string code, string description, string path, Boolean status);
14: void Update(string systemId, string tag, string code, string description, string path, Boolean status);
15: void Delete(string systemId);
16: }
17: }
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Text;
5: using Csla;
6: using Ninject;
7: using CslaHispano.EncapsulatedInvoke.Domain.Repository;
8:
9: namespace CslaHispano.EncapsulatedInvoke.Domain.Entities
10: {
11: public partial class SystemEdit
12: {
13: #region Methods
14:
15: private void LoadChilds()
16: {
17: Modules = DataPortal.FetchChild<SystemModules>(SystemId);
18: }
19:
20: private void UpdateChilds()
21: {
22: DataPortal.UpdateChild(Modules, this);
23: }
24:
25: private void CreateChilds()
26: {
27: Modules = DataPortal.CreateChild<SystemModules>();
28: }
29:
30: #endregion
31:
32: #region Data Portal
33:
34: [RunLocal()]
35: protected override void DataPortal_Create()
36: {
37: using (BypassPropertyChecks)
38: {
39: SystemId = Guid.NewGuid().ToString();
40: Status = true;
41: }
42: CreateChilds();
43: base.DataPortal_Create();
44: }
45:
46: private void DataPortal_Fetch(SingleCriteria<SystemEdit, string> criteria)
47: {
48: var dal = _NInject.Get<ISystemEditRepository>();
49:
50: using (var data = dal.Fetch(criteria.Value))
51: {
52: while (data.Read())
53: {
54: using (BypassPropertyChecks)
55: {
56: SystemId = data.GetString(data.GetOrdinal("SystemId"));
57: Tag = data.GetString(data.GetOrdinal("Tag"));
58: Code = data.GetString(data.GetOrdinal("Code"));
59: Description = data.GetString(data.GetOrdinal("Description"));
60: Path = data.GetString(data.GetOrdinal("Path"));
61: Status = data.GetBoolean(data.GetOrdinal("Status"));
62: }
63: }
64: LoadChilds();
65: }
66: }
67:
68: [Transactional(TransactionalTypes.TransactionScope)]
69: protected override void DataPortal_Insert()
70: {
71: var dal = _NInject.Get<ISystemEditRepository>();
72:
73: using (BypassPropertyChecks)
74: {
75: dal.Insert(SystemId, Tag, Code, Description, Path, Status);
76: }
77: UpdateChilds();
78: dal = null;
79: }
80:
81: [Transactional(TransactionalTypes.TransactionScope)]
82: protected override void DataPortal_Update()
83: {
84: var dal = _NInject.Get<ISystemEditRepository>();
85:
86: using (BypassPropertyChecks)
87: {
88: dal.Update(SystemId, Tag, Code, Description, Path, Status);
89: }
90: FieldManager.UpdateChildren(this);
91: dal = null;
92: }
93:
94: protected override void DataPortal_DeleteSelf()
95: {
96: DataPortal_Delete(new SingleCriteria<SystemEdit, string>(ReadProperty<string>(SystemIdProperty)));
97: }
98:
99: [Transactional(TransactionalTypes.TransactionScope)]
100: private void DataPortal_Delete(SingleCriteria<SystemEdit, string> criteria)
101: {
102: var dal = _NInject.Get<ISystemEditRepository>();
103:
104: using (BypassPropertyChecks)
105: {
106: dal.Delete(criteria.Value);
107: }
108:
109: CreateChilds();
110: dal = null;
111: }
112:
113: #endregion
114: }
115: }
En esta sección resaltan un nuevo concepto de Data Portal el cual explicaremos más adelante en otros artículos.
Fuente
Para más detalles pueden descargar la aplicación de ejemplo, aún en versión ALPHA, pero que ya permite ver cierta estructura. Así mismo están cordialmente invitados a colaborar con el proyecto.
La dirección web del proyecto es: CslaHispano en Codeplex.
Archivado en CSLA .NET | Sin Comentarios »
10 aplicaciones libres o gratis que no pueden faltar en la empresa
Escrito el 2, noviembre a las 4:07 pm
Muchas empresas, sobre todo pequeñas, siguen gastando grandes fortunas por programas, teniendo en su lugar una amplia variedad de aplicaciones libres o gratis a su disposición. Mientras que el Microsof Office 2010 podemos comprarlo por casi 500 euros (a menos que la versión Home, de casi 300 nos sea suficiente), Adobe Photoshop por 700 o QuickBoss 2010 por 160 aproximadamente, tenemos infinitas posibilidades de muy buena calidad sin gastar ni un euro más. Aquí te damos una lista de posibilidades tanto para Linux como para Windows:
Scribus, un programa gratuito para empresas
- Navegador Web: Firefox. Es la alternativa más popular al Internet Explorer, y ya va por la versión número cinco. Esta última actualización tiene una interfaz mejorada, más HTML 5, gran rendimiento y seguridad avanzada. Funciona en Windows, Linux y OS X.
- E-mail: Thunderbird y Lightning. Son la alternativa al Outlook, y cuentan con correo electrónico, calendario, lista de tareas pendientes, además de ofrecer un interfaz muy intuitiva construida a base de pestañas, protección contra el spam y una gran capacidad de búsqueda.
- Software de oficina: LibreOffice. Alternativa del Microsoft Office, tiene componentes de procesamiento de texto, hojas de cálculo, presentaciones, gráficos, bases de datos. Además, está disponible en muchos idiomas, y funciona en Linux, Mac y Windows. Los documentos se almacenan en un formato estándar abierto universal, y también puede leer formatos de Microsoft Office. Su interfaz es intuitiva y a la vez familiar.
- Software de autoedición: Scribus. Ofrece capacidades profesionales de diseño de páginas (folletos, sobres, correspondencia…) para Linux, MAC OS X y Windows. Aporta elementos como la separación por colores de CMYK, la creación de PDF y otros, que la hacen equiparable a programas de pago como InDesign.
- Gestión de proyectos: OpenProj. Sustituye al Microsoft Project y funciona con Windows, Linux y Mac. Tiene más de un millón de usuarios a los que ofrece diagramans de Gantt, PERT y la posibilidad de exportar los archivos de Microsoft Project sin ninguna dificultad
- Gráficos: GIMP. Significa GNU Image Manipulation Program, y es una alternativa al Adobe Photoshop, teniendo incluso una interfaz muy similar a este programa de pago. Ofrece retoque fotográfico, composición de imágenes, creación de imágenes, entre otros. Salvando expertos o profesionales del mundo de la fotografía, el programa sirve a todos. Es perfecto para hacer gráficos para web, retoque de fotos de los productos y crear materiales de marketing, y las imágenes se pueden guardar en muchos formatos, incluido el PSD de Photoshop.
- Contabilidad: GnuCash. Es un software financiero y contable especialmente creado para uso personal y de pequeñas empresas, y se encuentra disponible para MAC, Linux y Windows. Permite rastreas las cuentas bancarias, acciones, ingresos y gastos. Es rápido e intuitivo, permitirá unos libros equilibrados y unos reportes exactos. Sus principales características son la doble entrada de contabilidad, la contabilidad de pequeñas empresas y la facturación. Los datos pueden exportarse en programas como Microsoft Money y Quicken, como también hojas de cálculo de Excel.
- Gestión de Recursos Humanos: OrangeHRM. Tiene módulos de gestión de información personal, beneficios, contratación, autoservicio del empleado, la licencia, el tiempo y la asistencia. También ofrece servicios de pago.
- Edición de página web: KompoZer. Es compatible con Linux, al igual que su homónimo de pago Microsoft FrontPage. Es un editor WYSIWYG, por lo que se pueden editar páginas web de forma visual y trabajar con el código HTML.
- Herramientas para PDF: PDFedit. Permite editar el texto, borrar y cambiar el número de páginas, añadir etiquetas y otras cosas más. Funciona tanto con Windows como con Linux.
Archivado en Free Software | Sin Comentarios »
10 razones para usar software libre
Escrito el 2, noviembre a las 4:05 pm
Cuando pensamos en software libre, pensamos en gratuidad. Pero además de eso, tenemos otras ventajas frente a los programas de pago, sobretodo para las PyMEs. Aquí tenemos las diez principales razones para utilizar este tipo de Software:
¿Cómo sería trabajar con el primer ordenador? Por suerte, ahora tenemos más posibilidades
- Seguridad: Según la Ley Linus, “Ante suficientes ojos, todos los errores son superficiales”. Esto significa que cuantas más personas puedan ver y probar una serie de códigos, hay más probabilidades de que las fallas se descubran y sean solucionadas. Es el polo totalmente opuesto del lema “seguridad por oscuridad”, que se utiliza a menudo para vender costosos programas, que se cierran a la opinión pública para que nadie pueda saber la verdadera cantidad de errores que contienen. Además, en el software libre, los problemas se resuelven en cuestión de unas pocas horas, mientras que en el de pago se crean “parches” de seguridad que tardan bastante más.
- Calidad: Son mucha mayor cantidad de desarrolladores los que participan en las innovaciones y creaciones de los software de código abierto, pudiendo así aproximarse cada vez más a lo que los usuarios quieren, ya que ellos mismos pueden modificar el código para que así sea. Un estudio realizado por la Linux Foundation dice que la superioridad técnica suele ser la razón por la que las empresas eligen Linux.
- Personalización: es uno de los principales beneficios del código abierto, ya que el usuario puede modificarlo a su gusto; cosa imposible en el software propietario.
- Libertad: Es una forma de liberarse de las restricciones que propone el proveedor de software (visión del mismo, requisitos, precio, calendario, dictados y prioridades). Los usuarios de software libre pueden hacer con él lo que quieran, al mismo tiempo que tienen una comunidad de desarrolladores a su disposición.
- Flexibilidad: Los programas de código abierto necesitan mucho menos mantenimiento que los de pago, lo que significa que funciona bien incluso en un hardware antiguo.
- Formatos abiertos = inteorperabilidad: Es mucho mejor en la adhesión a los estándarse abiertos. Es ideal para empresas en las que es importante la interoperabilidad con otras empresas, equipos y usuarios.
- Posibilidad de “auditar” el código: La visibilidad del código detrás de estos programas significa que no es necesaria la fe (como en el software cerrado) para fiarse de un producto nuevo.
- Opciones de soporte: Uno puede apoyarse a través de las diferentes comunidades en línea con documentación, foros, listas de correo, blogs, wikis y chats de apoyo, incluso en vivo. También es posible contratar equipos de soporte profesionales para la mayor parte de los sistemas de código abierto.
- Costo: El software cerrado necesita comprar el programa en sí, el antivirus, los gastos de soporte, los gastos de actualización y los gastos asociados con estar bloqueado. Con el código abierto, esto no sucede.
- Probar antes de comprar: No es necesario gastar dinero para probar antes de comprar. Esto se debe a dos razones: en primer lugar, al precio libre del software, y además, a la existencia de LiveCDs y USBs en vivo para muchas distribuciones de Linux.
Archivado en Free Software | Sin Comentarios »
Microsoft Virtual Academy: Windows Phone 7.1
Escrito el 2, noviembre a las 3:56 pm
Me complace compartirles que ha sido publicada la nueva carrera de MVA Windows Phone 7.1 creada por Rodrigo Diaz: aquí el detalle:
“Windows Phone es la nueva versión del sistema operativo móvil de Microsoft, el cual es un sistema operativo moderno, fresco y novedoso que te permite realizar más en menos tiempo y estar al tanto de las cosas que más te importan de una más rápida y divertida. Con la última versión 7.1 conocida con el nombre clave “Mango”, el construir aplicaciones para el teléfono jamás había sido tan fácil ya que una de las plataformas de
desarrollo soportadas es Silverlight 4: una plataforma robusta, moderna y altamente funcional. En esta Carrera estudiarás los conceptos fundamentales de Silverlight para Windows Phone Mango y conocerás cómo aprovechar al máximo las características específicas de este tipo de dispositivos en beneficio de tus aplicaciones.
La carrera tiene en este momento los siguientes módulos:
Nivel Básico
-
Capítulo I: Fundamentos de Silverlight y Windows Phone
-
Capítulo II: Layout y Entrada Táctil
-
Capítulo III: Visuales y Medios
-
Capítulo IV: Publicación de Aplicaciones
Nivel Intermedio
-
Capítulo V: Trabajando con Datos
-
Capítulo VI: Sensores y otras características especiales del teléfono
-
Capítulo VII: Ciclo de Vida de las Aplicaciones Windows Phone”
Archivado en Windows Phone | Sin Comentarios »
Visual Studio 11 Developer Preview Training Kit
Escrito el 21, octubre a las 11:44 am
Overview
The Visual Studio 11 Developer Preview Training Kit includes hands-on labs to help you understand how to take advantage of the variety of enhancements in Visual Studio 11 and the .NET Framework 4.5, how to support and manage the entire application lifecycle and how to build Windows Metro style apps.
System requirements
Supported Operating Systems: Windows 7, Windows Server 2008 R2
- Visual Studio 11 Developer Preview
- .NET Framework 4.5 Developer Preview
Instructions
There are two files you can download to install this Training Kit:
- The file VS11TrainingKitOctober2011.Setup.exe will install the entire training kit, After downloading this file, you do not need an Internet connection to install the files. Download and launch the self-extracting package. The Training Kit will uncompress to the selected folder and launch a HTML browser for the content.
- The file VS11TK_WebInstaller_Preview.exe provides you with the ability to install all or only some of the training kit. Download and launch the self-extracting package. Then select the labs you wish to install. You can rerun the installer to add labs in the future. This installer requires an Internet connection.
Download
Archivado en .NET | Sin Comentarios »
build – Hands-On Labs Metro Style Windows 8
Escrito el 21, octubre a las 11:43 am
Para todos aquellos que aun no los han visto, se los recomiendo mucho.
Using Windows 8 Templates to Build Metro Style Apps Using JavaScript
In this lab you will review the templates Visual Studio provides for building Metro style apps using JavaScript. The lab will explain the design rationale behind the templates and provide guidance on which template to use for a particular scenario. The lab also will demonstrate the implementation of the templates: a familiarization exercise will take the participants through the files included in a default template and explain how the template is structured. Once participants have gone through the background material, the lab will walk through common template usage scenarios such as adding a new page and supporting a shell contract.
Code: TOOL-694H, Download
Building Your First Metro Style App Using JavaScript
In this lab, you will familiarize yourself with the basics of the Microsoft Visual Studio 11 Express Edition for Windows Developer Preview. You will create a simple Metro style app using JavaScript. In the process, you will learn the distinction between the local and the web compartment and how to communicate between those compartments.
Code: TOOL-695H, Download
Integrating your Metro Style Apps Built Using JavaScript into the Windows 8 Shell
In this lab exercise, you will add Windows 8 shell integration to your app. The app you start with will search Flickr for photos and display them in a List view. Clicking on these photos will show the full picture with a description, and show a Bing map view of where the picture was taken. In the first part of the lab, you will learn how to fuel search suggestions in the Windows 8 search charm. This deep integration with Windows is how apps move to the center of the user experience, and become an integral part of Windows. This is one of the many ways that Windows 8 allows apps written in HTML/JavaScript/ CSS to be more than just web sites. Through this lab, you will also be able to add code to update your tile with pictures from a cloud service notification that you subscribe to.
Code: TOOL-697H, Download
Using Blend to Design Your Metro Style Apps Using JavaScript
In this lab, you will learn about new features in Microsoft Expression Blend. Expression Blend allows you to edit projects in Microsoft Visual Studio 11, by either starting from scratch or from built in templates.
Code: TOOL-698H, Download
Building Your First Metro Style App Using C# and Visual Basic
In this lab, you will familiarize yourself with the basics of the Visual Studio tools and create a simple Metro style app using C#. You will base the app on an existing project template that uses sample data. You will then customize the app to use real data.
Code: TOOL-699H, Download
A Tour of Building Metro Style Apps Using C# and Visual Basic Part 1
In this lab, you will build a Metro style app using C# and explore how to use some of the Windows 8 features such as tiles, a splash screen, snapped views and different app orientations.
Code: TOOL-700H, Download
A Tour of Building Metro Style Apps Using C# and Visual Basic Part 2
In part one of this lab; you saw how to build a simple app, including how to integrate tiles and a splash screen. You worked with a simple photo app that included a file picker. In this lab, you will add an app bar to the app, and you will see how to detect and react to changes in the snap state of your app. Finally, you will learn how to invoke the Settings charm how to add custom commands to it.
Code: TOOL-701H, Download
Exploring Data Binding in Metro Style Apps Using C# and Visual Basic
In this lab you will learn what’s new and different about data-driven Metro style apps written using C#. You’ll learn about how you can get web-connected data using XML-over-HTTP with the new Async patterns, and you’ll learn how you can use the data once you have it. With LINQ to XML queries you can build collections that can be bound to the modern list and grid controls, and you’ll see how to develop interactive apps that use them.
Code: TOOL-703H, Download
Using Windows 8 Controls in your Metro Style Apps Built Using C# and Visual Basic
In this lab, you will take a look at some of the new controls that are available in Windows 8, and how you can use them in your Metro style apps build using C#.
Code: TOOL-705H, Download
Building Your First Metro Style App Using C++
In this lab you’ll build a metro style application using C++ and explore how to use some of the Windows 8 specifics such as using tiles, a splash screen, snapped views and different application orientations.
Code: TOOL-706H, Download
Using C++ to Enhance Your Metro Style Apps Built Using JavaScript
In this lab, you’re going to enhance a Metro style app build using JavaScript by adding a C++ component for some computation. The end result will be an app that loads an image using JavaScript, displays it in HTML and then modifies the image using C++.
Code: TOOL-707H, Download
Using the Windows Runtime to Enhance Your Metro Style Apps Built Using C++
In this lab exercise, you’re going to extend an existing Metro style app while learning the basics of the new language extensions introduced in C++ for targeting the Windows Runtime. The end result will be an app that processes an input string, removes all the words that are articles from the sentence and writes the remaining words in a text document.
Code: TOOL-708H, Download
Working with Games in Visual Studio
In this lab, you will solve a problem in an existing game written using Direct 3D for Windows 8, as well as make modifications to the game. The end result will be a working game with your customizations applied.
Code: TOOL-709H Download
Experiencing Windows Driver Kit integration with Visual Studio
In Windows 8 the Windows Driver Kit (WDK) is fully integrated with Visual Studio, making it easier for developers to create drivers from templates, port drivers from existing code, as well as build, sign, deploy, verify, test and debug drivers. This lab will provide an opportunity to experience this new functionality first-hand.
Code: TOOL-721H Download
Direct3D Tutorial
Learn how to use Direct3D to create compelling, high-performance, real-time 3D games and apps for Windows 8. This lab will provide you with the knowledge of 3D graphics fundamentals, key concepts of the Direct3D API, and best practices for robust apps.
Code: TOOL-764H Download
Basic Photo Processing with Direct2D Effects
This Hands-on- Lab will demonstrate various common photo adjustment scenarios using Direct2D Image Effect s. It shows how to load and draw an image, how to perform some basic photo adjustments using the built-in effects, as well as how to create and add a custom effect to extend the functionality of the API. This lab will also go over how to handle touch and other input to manipulate the image.
Code: TOOL-765H Download
Testing Metro Style Apps Built Using JavaScript
In this lab exercise, you will test a Windows 8 Metro style app using Microsoft Test Professional 11. The tests you will perform will be manual and exploratory tests. The goal of this lab is to familiarize you with the setup need to perform manual and exploratory testing, understand the new features in Test Professional specifically aimed at Windows 8 Metro style apps, and see how Test Professional captures rich actionable bugs.
Code: TOOL-879H, Download
Using Windows 8 Templates to Build Metro Style Apps Using C# and Visual Basic
In this lab you will review the templates provided by Visual Studio for building Metro style apps using C#. This lab will explain the design rationale behind the templates and provide guidance on which template to use for a particular scenario. The lab will also go into the implementation of the templates; a familiarization exercise will take the user through the files included in a default template and explain how the template is structured. Once the user has gone through the background material, they will walk through common template usage scenarios such as adding a new page and supporting a shell contract.
Code: TOOL-1000H, Download
Playing Media in Metro Style Apps Build Using C++
In this lab exercise, you will learn to use media in your metro style applications built using C++. You will start with learning the basic elements of a XAML/C++ application and then add a standard Media Player control in your application. Then you will make your own Media Player that will be able to create a playlist of videos from the video library and that has playback controls. You will also see how to use localized resources in your XAML/C++ application.
Code: TOOL-1002H, Download
Using C# to Enhance Your Metro Style App Build Using JavaScript
In this lab you will learn how to build a Metro style app that uses both JavaScript and .NET (in this case C#). We will start by creating a solution that is set-up for both JavaScript and C# and then create a class library with methods and properties that will interact with from JavaScript. We’ll finish by exploring handling events between C# and JavaScript (and vice versa).
Code: TOOL-1003H, Download
Archivado en .NET, Windows 8, WinRT | Sin Comentarios »
CSLA 4: Referencia de Ejemplos en Español
Escrito el 8, octubre a las 1:41 pm
![]() |
En la comunidad hispana de desarrolladores CSLA .NET, hemos empezado a desarrollar una serie de artículos con el objetivo de complementar la información encontrada en los libros de aprendizaje del framework expedidos por el creador del framework. Los artículos son y seguirán siendo en nuestro idioma, no están enfocados a entender muchos de los conceptos de arquitectura que encapsula el framework, debido a que aquella información la pueden encontrar en capítulos claves de los libros oficiales que están especialmente orientados a entender el núcleo y arquitectura del framework. Pienso que esta información debe ser entendida, en un equipo de desarrollo, por los arquitectos y/o encargados de velar por los principios estándar de la empresa. |
Archivado en CSLA .NET, CslaNet.org | 2 Comentarios »
Definición de Estereotipos en CSLA .NET
Escrito el 2, octubre a las 9:28 pm
Clasificación: Nivel 100 (conceptos básicos)
|
En este artículo vamos a describir algunos detalles con respecto a la definición de estereotipos en CSLA .NET; es muy importante recordar que el framework, como parte de sus especificación de estándar, trae con un conjunto de estereotipos clasificados por objetivos. El presente artículo presenta una introducción a los mismos. Antes de detallar los estereotipos es bueno entender las bases; veamos la definición de un estereotipo en la ingeniería de software. |
¿Qué es un estereotipo?
Uno de estos mecanismos de extensión, quizás el más usado, son los llamados estereotipos; pequeñas etiquetas que aplicadas a los elementos o relaciones de un diagrama indican significado adicional.
Es decir, que por medio de los estereotipos vamos a poder aplicar las herramientas a nuevas áreas de modelado, presuponiendo que estas áreas trabajan con los conceptos básicos del lenguaje y requieren solo de expresar las ideas propias del sector. Una ves aclarado el concepto de estereotipo y llevándolo a la programación, determinamos que un buen diseño orientado a objetos debe entregar un conjunto de estereotipos para ayudar a organizar la variedad de conceptos dentro de clases, permitiendo a los desarrolladores combinar estas clases a través de composición, herencia, polimorfismos y otras técnicas dentro de tipos comprensibles y reutilizables.
Archivado en CSLA .NET | Sin Comentarios »
Revista de SharePoint CompartiMOSS de Septiembre ya Disponible
Escrito el 2, octubre a las 6:06 pm
Fuente: MVP Factor
- Editorial
- Consejos prácticos de cómo aplicar el Branding Corporativo en SharePoint 2010 sin modificar la página maestra (Juan Manuel Herrera)
- El lado social de SharePoint – III (Alberto Díaz Martín)
- SolidQ Managed Matadata Exporter: Herramienta para exportar Metadatos Administrados de SharePoint 2010 (José Quinto Zamora)
- Instrucciones para organizar un simposio de SharePoint (Vielka Rojas)
- Integración de Windows Azure y SharePoint 2010 (I) (Juan Carlos González Martín)
- Entrevista con Ricardo Muñoz
- SharePoint 2010 BI (Juan M. Alvarado)
- Patrón MVP con SharePoint 2010 (Juan Pablo Capdevila)
- Site Definitions vs. Web Templates (Carlos Ariel Dantiags)
- Herramientas de Comunidad (Gustavo Velez)
- Modelo de Objetos de Cliente (Juan Pablo Pussacq Laborde)
Descargar CompartiMOSS Número 9 – Septiembre 2011 (Alta resolución, 4,0 MB)
Descargar CompartiMOSS Número 9 – Septiembre 2011 (Baja resolución, 1,9 MB)
Descargar el Código Fuente de los ejemplos
Archivado en Sharepoint | Sin Comentarios »
Joomla 1.8, se vienen nuevos cambios.
Escrito el 1, octubre a las 11:23 pm
![]() |
Por fin tenemos ya algo concreto respecto a la nuevas versiones de Joomla. Joomla 1.8 sera la proxima version duradera en tiempo de Joomla y esta previsto que su lanzamiento coincida con el cierre de actualizaciones de Joomla 1.5 para Abril de 2012. En estos momentos Joomla 1.7 es la version actual que esta ya disponible. Para poder actualizar a la proxima version de joomla 1.8 desde joomla 1.5, el componente de Matias Aguirre jUpgrade estara preparado para esas fechas… |
Archivado en Joomla | Sin Comentarios »
LibreOffice 3 se alza como la alternativa ideal a Office
Escrito el 22, septiembre a las 3:25 pm
Fuente: http://www.pcactual.com

A finales del año pasado, con motivo de la adquisición de Sun Microsystems por parte de Oracle, un nutrido grupo de desarrolladores de OpenOffice.org se escindió del proyecto original para crear The Document Foundation
Esta nueva plataforma independiente lanzó LibreOffice, una nueva suite de ofimática basada en la última beta de OpenOffice.org.
Archivado en LibreOffice | Sin Comentarios »
Windows 8: Nueva Plataforma de Desarrollo
Escrito el 17, septiembre a las 9:59 am
Fuente: http://www.elavefenix.net
![]() |
Como es sabido, hace pocos días MS anunció la división de su departamento de desarrollo centrado en XAML en 3 partes y con efecto inmediato. Una se movía a Windows Phone 7 + XBOX + Silverlight, otra permanecía en la división de desarrollo (DivDev) y una tercera pasaba a formar parte de la división de desarrollo (WinDev) del sistema operativo Windows 8. Esto ya ofrecía algunas pistas de por dónde podrían ir los tiros y revalorizaba XAML como mecanismo ubicuo tanto en el teléfono, como en la caja de juegos, como en el sistema. |
Archivado en Windows 8, WinRT | Sin Comentarios »
Hotmail nacerá de nuevo el 3 de octubre
Escrito el 14, septiembre a las 4:02 pm
“Olvida todo lo que creías saber sobre Hotmail, recuerda está fecha: lunes 3 de octubre de 2011”, señala el anuncio de Microsoft.

Hotmail se renovará totalmente el 3 de octubre.
California. Microsoft anunció que Hotmail sufrirá importantes mejoras que se podrán descubrir el próximo 3 de octubre. Después de 15 años en el mercado, realizarán una renovación al gestor de correos electrónicos más usado para poder hacer frente a sus competidores: Gmail y Yahoo! Mail.
El anuncio de Microsoft que te invita a ver la renovación de Hotmail dice así: “Olvida todo lo que creías saber sobre Hotmail, recuerda está fecha: lunes 3 de octubre de 2011, San Francisco”.
Después agrega: “Ahora es el momento de darle a Hotmail un segundo vistazo. Hemos escuchado. Hemos aprendido. Hemos reinventado Hotmail desde su base. Desde el rendimiento al SPAM y a la seguridad y más, vamos a desafiar tus percepciones y cómo vamos a reaccionar ante la competencia.”
Aunque aún no se conocen los detalles acerca de los cambios en Hotmail, es casi un hecho que se mejorará la defensa ante los ataques de spam y la seguridad de las cuentas de todos los usuarios, además de un look renovado.
Archivado en Noticias | Sin Comentarios »
Linux Foundation Hackeada, ¿Será Microsoft?
Escrito el 12, septiembre a las 8:25 pm
Linux ha avisado de un fallo de seguridad en sus web que podría deberse a un ataque informático, motivo por el que ha decidido cerrarlas temporalmente. La razón es limpiar una brecha de seguridad tras haber recibido un aviso sobre un posible ataque ‘hacker’. Actualmente, los sitios linuxfoundation.org y linux.com se encuentran cerrados.
Archivado en Noticias | Sin Comentarios »







