Tengo publicados dos artículos sobre cómo empezar a trabajar con NHibernate y ASP.NET MVC, puede leerlos desde el sitio de ForerunnerG34:
Espero les sirva de ayuda para las personas que recién están empezando con NHibernate"!
Tengo publicados dos artículos sobre cómo empezar a trabajar con NHibernate y ASP.NET MVC, puede leerlos desde el sitio de ForerunnerG34:
Espero les sirva de ayuda para las personas que recién están empezando con NHibernate"!
En un post anterior comentaba sobre herramientas para control de código fuente, y entre ellas estaba probando Subversion (SVN) la cuál explicaré ahora un poco mas a detalle:
Subversion (de ahora en adelante SVN) es una herramienta para el control de código fuente, independiente de la tecnología de desarrollo o IDE. Para la administración del servidor y cliente se usa principalmente la línea de comandos, pero también existe herramientas visuales tanto para el lado del servidor como del cliente que nos facilitan en el trabajo:
SVN permite crear varios repositorios, por ejemplo podemos tener dos:
Usando VisualSVN también podemos configruar el servidor para que soporte comunicación segura via el protocolo Https, y la autenticación y autorización integrada a un servidor LDAP, por lo que podemos usar nuestras credenciales del red para entrar al servidor.
Los proyectos de desarrollo se crean dentro de los Repositorios, normalmente cada proyecto nuevo tiene la siguiente estructura inicial: branches, tags y trunk, que son simplemente carpetas que nos ayudan a organizar el proyecto y se recomienda que todos tengan esa estructura:
Dentro de esta carpeta se almacena todo el código del proyecto, el que está constantemente siendo modificado por el equipo de desarrollo.
Permite tener ramificaciones del proyecto, por ejemplo: si tenemos una primera versión de la aplicación lista para que sea probada crearíamos un branch llamando “Certificacion-1.0” con una copia del contenido del “trunk”. En este punto tendríamos dos líneas de desarrollo: el “trunk” donde se seguirían agregando nuevas funcionalidades y el branch “Certificacion-1.0” donde se daría soporte a la primera versión del producto, como la corrección de bugs. SVN nos permite sincronizar el trunk con cualquier branch y viceversa, de al forma que si se detecta un bug en el branch “Certificacion-1.0”´ el código que lo corrige (llamando ChangeSet) se lo puede fusionar al trunk principal. Una vez que se finalice el proceso de pruebas se puede reintegrar todo el branch al trunk para fusionar los cambios.
TIP: No es bueno esperar al último momento para fusionar las dos ramas ya que se podrían dar grandes conflictos, es mejor hacerlo con anticipación, cada cierto tiempo y por grupos para evitar problemas en el futuro.
Esta carpeta nos permite representar estados del proyecto que están listos para ser entregados, por ejemplo: “Version-1.0”, “Version-1.1”, “Version-2.0”. Siguiendo el ejemplo anterior: luego de corregir todos los incidentes del branch “Certificacion-1.0” crearíamos un Tag nuevo llamado “Version-1.0” con el contenido del branch y, posteriormente borraríamos el branch “Certificacion-1.0”.
SVN puede ser configurado para no incluir en el repositorio los archivos o carpetas que le especifiquemos, para esto se usan propiedades que se configuran en el lado del cliente. Estas propiedades pueden ser exportadas para que otro cliente las aplique.
IMPORTANTE: Si un archivo ya fue subido al servidor, y luego se lo agrega en la lista de elementos que se deben ignorar, SVN no hará caso a esa propiedad ya que tienen prioridad los elementos que ya están bajo el control de código fuente, es decir SVN seguirá versionando el archivo.
TortoiseSVN es una herramienta muy buena que se integra al shell de Windows y permite interactuar con el repositorio, nos permite entre otras cosas:
Estoy preparando un nuevo proyecto que permite hacer un “tail -f” de archivos de texto, hay algunas soluciones ya existentes pero me llamó la antención hacer una propia usando WPF, desde luego el código fuente estará disponible pero en esta ocasión planeo subirla a CodePlex para ver como me va!, UPDATE: EL código fuente será subido en SkyDrive como el resto de aplicaciones para evitar tener repartidos los proeyctos en varios lugares. Será en otra ocasión CodePlex!!
Les dejo un adelanto de la IU:
[ Ventana Principal ]
[ Creación de Keywords ]
[ Lista de Keywords ]
[ Tailing de un archivo de texto ]
En estos días he estado trabajando parcialmente en un proyecto de desarrollo de una API para un CMS, de tal forma que podamos extender y automatizar ciertas funcionalidades desde aplicaciones .Net como ASP.NET, Silverlight o Windows Client.
Como una forma de ayudarme a organizar el código y a cualquiera que use mi código, agregué comentarios XML a mis clases en C#, tratando de poner la descripción de los métodos al estilo de las clases de .Net. Esta interesante característica de documentación ofrece ayuda contextual en línea cuando alguien usa un método dentro de Visual Studio (a manera de tool tips). El compilador de C# es capaz de extraer estos comentarios y generar un archivo XML usado por Visual Studio, pero también puede ser usado por otras aplicaciones como el caso de Sandcastle que se encarga de leer este tipo de archivos XML y aplicar reflexión al proyecto relacionado para extraer metadatos adicionales para generar una documentación completa al estilo MSDN.
Sandcastle es de Microsoft, gratis y de código abierto, pueden descargarlo desde el sitio en CodePlex. Adicionalmente les recomiendo descargar el Sandcastle Help File Builder que es la interfaz gráfica para la aplicación Sandcastle. Su forma de uso es simple y al estilo del extrañado NDoc, les dejo algunas capturas de pantalla de esta herramienta y cómo se ve la documentación generada:
El día de hoy descargué la versión Express de SQL Server 2008, pero al momento de la instalación esta terminaba con un error, el link de soporte indicaba que debía remover el SQL Native Client e intentarlo nuevamente, así que fui a la ventana de “Agregar o Quitar Programas” lo removí, intenté nuevamente la instalación y… error otra vez, el mismo mensaje. Hmmm.. dando una vistazo al LOG de instalación, este indicaba que el problema estaba realmente en el componente MSXML 6, regresé a “Agregar o Quitar Programas” para intentar remover el MSXML6 SP2, pero recibía otro mensaje de error que imposibilitaba quitarlo.
Buscando un poco por Internet, encontré la solución, resulta que con Windows XP Sp3 el SMXML6 SP2 se bloquea y no se puede remover, cuando SQL Server 2008 intenta instalar la versión anterior incluida en el instalador, se genera el error descrito anteriormente. La solución fue descargar “Windows Installer Clean Up” y remover el MSXML SP2, luego volver a instalar SQL Server 2008 y listo, la instalación fue exitosa.
Si tienen un ambiente con Windows XP SP3 y están con problemas similares de instalación de SQL Server 2008, prueben lo que les cuento, les podría solucionar su problema.
En este tutorial veremos algunas cómo desarrollar un servicio sencillo y consumirlo desde una aplicación Silverlight 2, además usaremos el control DataGrid y el Popup control.
En el siguiente tutorial se mostrarán los pasos generales e importantes para crear un servicio WCF, crear una aplicación Silverlight 2 y consumir el servicio. Al final se provee un enlace al proyecto con el código fuente para que se lo descarguen y lo revisen a mayor detalle.
Requisitos:
Paso 1: Crear un Servicio para Silverlight
Partiendo de una solución vacía, creamos un nuevo proyecto tipo ASP.NET Web Service, borramos el servicio que VS2008 crea de forma automática y agregamos un nuevo elemento tipo “Silverlight-enabled WCF Service” que llamaremos SimpleService.svc como se ve en la siguiente figura:
Esto creará la siguiente plantilla para escribir nuestro servicio:
Nuestro leerá datos de un archivo XML y tendrá dos métodos, uno que retorne la lista completa de usuarios y otro que retorne un usuario en particular.
Al proyecto agregamos un nuevo archivo XML con los siguientes datos:
Y luego creamos una nueva clase para representar cada usuario:
Finalmente, escribimos el código complete del servicio:
Ejecutamos el proyecto y se nos deberá presentar la siguiente pantalla indicando que nuestro servicio está levantado.
Paso 2: Crear una nueva aplicación Silverlight
Agregamos un nuevo proyecto a la solución, de tipo “Silverlight Application” a la que llamaremos MySilverlightApp.
El asistente de VS2008 nos preguntará si deseamos crear una aplicación Web para hospedar y probar nuestra aplicación y presionamos OK:
Hasta este punto nuestra solución se verá algo así:
Usando Blend 2 o VS008 editamos el archivo Page.xaml para crear la interfaz gráfica de nuestra aplicación que estará formada por una caja de texto, dos botones y un Grid (Disponible en el Silverlight Toolkit Mazo 2009)
Desde VS2008 procedemos a enlazar los eventos Click de ambos botones al código en C#, esto se hace de forma sencilla desde VS2008:
Paso 3: Consumir el Servicio
Lo siguiente será agregar una referencia al servicio y escribir el código para consultar los datos. Para agregar la referencia al servicio damos clic derecho sobre la solución y seleccionamos “Add Service Reference”, del cuadro de dialogo seleccionamos nuestro servicio y presionamos aceptar:
Algo interesante es que en Silverlight todos los servicios son asincrónicos, de tal forma que en nuestro código tendremos que manejar los eventos de cuando se termine de ejecutar una operación, El código fuente de page.xaml.cs quedaría así:
Ejecutamos nuestra aplicación y se verá algo así:
Pero al presionar el botón “Find All” recibiremos una EXCEPCION al tratar de conectar con el servicio Web:
Esta se debe a un tema de seguridad de comunicación entre dominios, la forma de resolver esto es muy simple, se agrega un archivo XML en la raíz del servicio Web con las políticas de acceso para los clientes, el archivo se llama clientaccesspolicy.xml y tendrá el siguiente contenido:
Volvemos a probar nuestra aplicación y listo:
Hemos creado una aplicación en Silverlight que consume un servicio WCF y hemos configurado las políticas de acceso del cliente al servicio.
El proyecto completo lo pueden descargar desde aquí.
Investigando un poco sobre temas de WPF, en especial sobre el uso de Viewport encontré este enlace sobre un panel que permite hospedar elementos en 3D escrito por Josh Smith. Esta librería consiste de una clase personalizada derivada de "Panel" y de un Viewport; permite por ejemplo colocar los ítems de un Listbox en un ambiente 3D. Me puse a jugar con esta librería y terminé con esta pequeña aplicación que pueden descargar junto con el código, se trata de un catálogo de juegos para Xbox360 (los de PS3 pueden modificarlo a su gusto).
* La verdad no modifiqué el título de la ventana (Window1), el scrollbar y el botón, de todas formas son muy fáciles de personalizar
si desean hacerlo.
Esta librería me parece muy buena, y no es complicada de usar. Como podrán ver el poder de WPF es muy grande y las posibilidades de lo que se puede hacer con esta tecnología son muchas, así que manos a las obras y a empezar a usar WPF en el desarrollo de aplicaciones de negocio.
Chao.
Nuestra primera aplicación para iPhone!:
Por cierto es GRATIS, la pueden bajar del App. Store, comenten cómo les fue y qué les parece.
Hoy me enteré de esta nueva aplicación de Microsoft llamada Small Basic, pesa apenas 4MB y es una versión sencilla y útil de Basic, con apenas 15 palabras reservadas, el IDE de desarrollo presenta un par de características muy interesantes como un intellisense mas dinámico y ayuda en línea de las funciones. Además tiene una implementación de Logo y su famosa tortuga.
Es muy bueno para los que deseen empezar a conocer y aprender sobre programación. Aquí les dejo algunas capturas de pantalla:
IDE y ayuda en contextual
Intellisense, casi seguro que es WPF.
Tiene su propio “Logo”, el regreso de la tortuga.
Entrada y salida por consola.
El enlace a la página de Small Basic es el siguiente:
En este post diseñaremos la aplicación que deseamos construir usando el Web Client Software Factory que explicamos en la entrada anterior.
La aplicación que queremos desarrollar es una página ASP.NET que permita ingresar y mostrar un lista de comentarios, el wireframe de cómo queremos que se vea nuestra aplicación es el siguiente:
Con esto nos damos una buena idea de lo que queremos lograr, es algo sencillo que nos servirá para nuestro ejemplo. Una vez que tenemos la idea inicial empezamos con crear una base de datos para guardar los comentarios, a continuación el script:
CREATE DATABASE CommentsWebClient
Go
USE CommentsWebClient
GO
CREATE TABLE Comments (
[Id] INT IDENTITY (1,1) PRIMARY KEY NOT NULL,
Name VARCHAR(100) NOT NULL,
Place VARCHAR(100) NOT NULL,
[Text] VARCHAR(250) NOT NULL,
CreatedOn DATETIME DEFAULT (GETDATE()) NOT NULL
)
GO
CREATE PROCEDURE GetComments
AS
SELECT [Id], Name, Place, [Text], CreatedOn
FROM Comments
ORDER BY CreatedOn DESC
GO
CREATE PROCEDURE AddComment (
@name VARCHAR(100),
@place VARCHAR(100),
@text VARCHAR(250),
@Id INT OUTPUT
)
AS
INSERT INTO Comments (Name, Place, [Text])
VALUES (@name, @place, @text)
SET @Id = SCOPE_IDENTITY()
GO
Una vez que tenemos lista nuestra base de datos, ahora sí a lo que nos interesa.. vamos a crear nuestro proyecto en Visual Studio 2008:
En VS2008 creamos un nuevo proyecto de tipo Web Client Software, lo llamaremos “CommentsWebClient”:
Una vez finalizado la creación, nuestro proyecto se verá así:
Como nos damos cuenta se crean de forma automática los elementos que dan soporte al patrón Model-Vew-Presenter.
Dentro de la carpeta “WebSites” de la solución está la plantilla inicial de nuestra aplicación ASP.NET, mientras que en la carpeta “Modules” se encuentran los presenters y las interfaces de cada una de nuestras vistas (las páginas .aspx). Por ejemplo la página Default.aspx posee su respectivo presenter “DefaultViewPresenter.cs” y la interfaz que implementa: “IDefaultView.cs”, pero qué significan todos estos archivo y para qué sirven?, bueno la respuesta es la siguiente:
Nuestra página Default.aspx implementa la interfaz IDefaultView, lo que significa que cualquier definición de propiedades, eventos o métodos que pongamos en la interfaz, deberá ser implementado por la página .aspx; esto es con el principal objetivo de que el presenter sepa qué métodos y propiedades está disponibles en la vista sin importarle la implementación concreta de la misma, de esta forma el presenter realiza las operaciones concretas y la vista provee de los datos de entrada necesarios. Aquí un diagrama de esta relación:
Por cierto el WCSF ha creado la aplicación ASP.NET con contenido de ejemplo lista para ser probada, si arrancamos nuestro proyecto podremos ver algo así:
Así que sin mayor esfuerzo ya tenemos una aplicación simple usando el patrón MVP, en la segunda parte de este tutorial empezaremos a escribir el código para el acceso a los datos, y Linq !! así como modificar la vista existente. Si tiene dudas sobre el WCSF o el MVP comenten y trataré de responderlas.