Archive

Archive for the ‘Español’ Category

Visual Studio Add-in para el Domain Service [Include()] attributo

November 10, 2010 Leave a comment

A veces uno no tiene el lujo a desarrollar applicaciones desde el modelo de objectos. Eso significa que es necessario a obtener el modelo desde la base de data. Gracias a Microsoft, tenemos el Entity Framework o Linq2Sql para ayudarnos. Ya que estamos creando una applicacion de Silverlight, todavia no hemos terminado. Tenemos que usar WCF RIA Services para el transporte de nuestros cambios en la applicacion.
Tengo un problema como WCF RIA Services no esfuerza a mantener el modelo. Lo que pasa es cualquier momento que la base de data cambia, tengo que modificar varios archivos:

  1. Actualizar el Entity Framework (. edmx) o Linq2Sql (. dbml) con el esquema datebase cambios.
  2. Borrar el DomainService que has creado, incluyendo el “Service” archivo y el “.metadata” archivo.
  3. Genere el proyecto Web que aloja el modelo.
  4. Añadir un nuevo DomainService.
  5. Agregue todos los [Include()] atributos en el “.metadata” archivo.

Ahora estas es una experiencia muy dolorosa y cada vez que puede automatizar este lo voy a hacer. Esto nos lleva al asunto de este puesto, que es una manera de automatizar por lo menos la adición del [Include()] atributo en el archivo de “.metadata”. Mi solución esta basada aquí. Hice unos modificaciones para que podemos usarlo con proyectos que tienen carpetas y para que funciona en Visual Studio 2010 RTM.

Para crear una Add-in en Visual Studio 2010, coloca nueva solución y extensibilidad en el marco del “Otros tipos de proyectos” y luego “Visual Studio Add-in”, como se muestra a continuación:

El “template” de proyecto crea lo que se muestra a continuación con la excepción del archivo MetadataHelper.cs.

Tómese su tiempo para revisar lo que contiene el Connect.cs archivo y ya que hay lógica personalizada para conseguir el MetadataHelper.cs archivo.

Básicamente, el objetivo de este complemento es para que pueda actualizar el .edmx o .dbml y borrar y volver a crear el DomainService. Una vez que usted ha terminado, haga clic en el menú “Tools” en Visual Studio y seleccione MetadataAddin.

El Addin va a hacer un ciclo a través de todos sus proyectos en sus soluciones y todas sus carpetas en sus proyectos. Básicamente, se busca todos los archivos “.metadata”. Una vez que se encuentra el archivo, se crea un diccionario de los tipos de objectos expuestas a través el MetadataTypeAttribute. A continuación, busca cualquier “EntityCollection” o cualquier objecto que contenido en el diccionario como propiedades y agrega el [Include()] atributo.

Por último, he añadido el código que nos avisa cuando se termina la operación.

Cuando el proceso ha terminado todos sus archivos “.metadata” se cargarán y se podrá revisar los cambios realizados en los archivos.

Aquí está el link para el proyecto de ejemplo. He incluido un archivo README.txt en el proyecto para indicarle dónde debe poner el “Add-in”.

Espero que esto ayude!

Advertisements

Seguridad en las applicaciones – Parte III (Pantallas)

September 1, 2010 Leave a comment

En las dos entradas de blog pasados hemos visto los requisitos y la base de data. Hemos mirado los papeles y permisos explicitos y cómo juntar las pantallas con los permisos. Vamos a ver las pantalla en el sistema que nos permite configurar la seguridad para nuestra usarios.

Mantenimiento de un Papel
Vamos a ver la pantalla de Mantenimiento de un Papel. Esta pantalla maneja todos los papeles en el sistema. Usarios se pueden crear, cambiar, o borrar papeles. El siguente es un imagen de la pantalla Mantenimiento de un Papel:

Adición de un Papel
Para adicionar a un papel, el usario haga clic sobre el botón “New” que queda en la parte a la izquierda del toolbar:

Esto traerá la siguente pantalla:

En mi escenario, el sistema tiene varios módulos que representen diversas líneas de negocio. El usuario puede escoger cuál applicación él quiere que el papel va a pertenecer. También él escribe un nombre para el nuevo papel. El usario haga clic sobre el botón “Save” para guardar sus cambios.

Colocando Pantallas a un Papel
El usuario asocia las pantallas para un papel. Con el nuevo papel que el usuario ha creado, el usario haga clic sobre el botón “Add New” que queda en la parte a la derecha del titulo “Screen” en la matrix:

Esto traerá la siguente pantalla:

El usuario puede multi-selecciona las pantallas para agregar al papel actual. NOTA: Solamente las pantallas que no se asocian ya a esto querrán aparecer en el selector. Una vez que el usuario cierra la pantalla del selector, el usuario puede asignar los permisos apropiados como se muestra abajo:

El usario haga clic sobre el botón “Save” para guardar sus cambios.

Borrar un Papel
El usuario tiene la capacidad de quitar papeles existentes. De acuerdo con requisitos del negocio, el usuario debe primero quitar todas las pantallas asociadas a este papel. Para borrar un papel, el usario haga clic sobre el botón “Delete” en la barra de herramientas como se muestra abajo:

Esto traerá la siguente pantalla de confirmación:

El usario haga clic sobre el botón “Save” para guardar sus cambios.

Borrando Pantallas de un Papel
Según lo indicado previamente, antes de que un papel pueda ser borrado, todas las pantallas deben primero ser quitadas. El usario haga clic sobre el botón “Delete” a la derecha del papel en la matrix como se muestra abajo:

Esto traerá la siguente pantalla de confirmación:

El usario haga clic sobre el botón “Save” para guardar sus cambios.

Seguridad del Acceso de Usuario
La pantalla de seguridad del acceso de usuario proporciona la capacidad de controlar el acceso de usuario a todas las pantallas en el sistema. Un usuario puede asignar papeles existentes a las cuentas de usuario o definir permisos explícitos de la pantalla. Lo que sigue es un imagen de pantalla del usuario “matt” y sus permisos:

Adición de un Papel de Usario
Al agregar a un usuario a un papel, el usuario haga clic sobre el botón “New” al derecho del título de los papeles de usuario en el árbol.

Esto traerá la siguente pantalla:

El usuario primero escogerá qué Applicación él quiere para filtrar los papeles existentes y después selecciona el papel apropiado. NOTA: Solamente los papeles que no se han asociado ya a esta cuenta de usuario serán exhibidos. Finalmente, el usuario haga clic sobre el botón “Save” para guardar sus cambios y para que el árbol refleja el cambio también.

Borrar un Papel de Usario
El usuario tiene la capacidad de quitar papeles de cuentas de usuario. El usuario haga clic sobre el botón “Delete” a la derecha del título del papel en el árbol.

Esto traerá la siguente pantalla de confirmación:

El usuario haga clic sobre el botón “Save” para guardar sus cambios y para que el árbol refleja el cambio también.

Cambiando los Permisos de una Pantalla en un Papel de Usario
El usuario tiene la capacidad de eliminar cualquier permiso de la pantalla para un papel. El usuario haga clic sobre el botón “Edit” a la derecha del título del papel en el árbol.

Esto traerá la siguente pantalla:

El usuario puede cambiar los permisos para la pantalla especificada. NOTA: Esta acción no cambia el papel. El sistema comprobará para saber si hay un permiso explícito existente y para abrirlo. Si el sistema no puede encontrar el permiso correspondiente de la pantalla, creará un nuevo para la cuenta de usuario. Finalmente, el usuario haga clic sobre el botón “Save” para guardar sus cambios y para que el árbol refleja el cambio también.

Adición a una Pantalla al Usario
Al asignar permisos de la pantalla a una cuenta de usuario, el usuario haga clic sobre botón “New” al derecho del título explícito de los permisos de la pantalla.

Esto traerá la siguente pantalla:

El usuario primero escogerá qué Applicación él quiere para filtrar las pantallas y después selecciona la pantalla apropiada. NOTA: Solamente las pantallas que no se han asociado ya a esta cuenta de usuario serán exhibidos. Finalmente, el usuario haga clic sobre el botón “Save” para guardar sus cambios y para que el árbol refleja el cambio también.

Quitando una Pantalla de un Usario
El usuario tiene la capacidad de quitar permisos de la pantalla de una cuenta de usuario. El usuario haga clic sobre el botón “Delete” a la derecha de la pantalla en el árbol.

Esto traerá la siguente pantalla de confirmación:

El usuario haga clic sobre el botón “Save” para guardar sus cambios y para que el árbol refleja el cambio también.

Cambiando un a Pantalla de un Usario
El usuario puede cambiar cualquier permiso existente de la pantalla en una cuenta de usuario. El usuario haga clic sobre el botón “Edit” a la derecha de la pantalla en el árbol.

Esto traerá la siguente pantalla:

El usuario puede cambiar los permisos para la pantalla específica. Finalmente, el usuario haga clic sobre el botón “Save” para guardar sus cambios y para que el árbol refleja el cambio también.

Una Nota sobre los Papeles y los Permisos Explícitos de una Pantalla
Si una cuenta de usuario tiene un papel asociado a ella y la cuenta de usuario también tiene un permiso explícito de la pantalla que sea también parte de un papel. El permiso explícito de la pantalla tiene siempre una prioridad más elevada sobre el papel al hacer cumplir el modelo de seguridad. Esto es una regla de negocio simple y usted podría hacer más aquí para ocuparse de las ediciones de la concurrencia entre las pantallas en papeles y los permisos explícitos.

Fin
Esto debe darle una idea en cuanto a cómo usted puede construir una infraestructura de la seguridad para proporcionar papeles y permisos. En la última entrada de blog de esta serie veremos cómo ésta afecta a construir el menú y a hacer cumplir los permisos explícitos.

Categories: Español Tags: ,

Seguridad en las applicaciones – Parte II (Base de Data)

September 1, 2010 Leave a comment

Ya que hemos cubierto los requisitos del negocio y los escenarios de los usarios, vamos a mirar a los componentes de la data y lo necessario para implementar.

El siguente es un diagrama de la base de data de seguridad del systema. Estas mesas son todo lo necessario para implementar un sistema de seguridad que hemos hablado en las entradas de blog anteriores.

Vamos a ver que significa cada mesa y el papel que lleva para implementar seguridad en el sistema:

Nombre de la Tabla Propósito
sec_u_User Lleva a cabo la información de usuario pertinente. Representa a cualquier usuario que tiene acceso al sistema.
sec_r_Role Define el grupo de pantallas que se puedan juntar en un papel. Un papel se puede asociar a una o más pantallas.
sec_s_Screen Representa las pantallas reales en el sistema.
sec_su_ScreenUser Los permisos explícitos para cualquier usuario al nivel de la pantalla.
sec_sr_ScreenRole Los permisos para un papel.
sec_ur_UserRole El usuario puede pertenecer a los papeles múltiples tan bien como los papeles pueden tener usuarios múltiples.
sec_m_Menu Representa los menús en el sistema. Los menús se asocian a las pantallas para la navegación.
sec_uia_UserInstalledApplication En este sistema, hay muchos applicaciones y las cuentas de usuario se pueden tener el acceso en el nivel de la applicación.
mr_xa_Application El sistema contiene muchos muchos applicaciones. Cada applicación es como un departamento en un negocio. Por ejemplo, operaciones y ventas serian dos applicaciones separadas en el sistema.

Espero que ya puede comenzar a ver cómo cada pedazo toma su papel. No cada tabla sería requerida en su escenario pero me gusta tener el control de la seguridad del sistema desde la base de data. Asi no tengo que recompilar ni mandar codigo por un cambio de seguridad en el sistema.

En la entrada de blog siguiente veremos las pantallas y cómo se ejecutan en el sistema.

Categories: Español Tags: ,

Behaviors and Triggers in Silverlight

August 20, 2010 Leave a comment

Here are the slides and code samples from my talk at the Western North Carolina .NET Developers Guild.

Hope you enjoy.

Categories: English, Español Tags: ,

Seguridad en las applicaciones – Parte I (Historia)

August 19, 2010 Leave a comment

En las próximas entradas de blog, voy a hablar de cómo uno se puede implementar seguridad en una applicación de la cooperación. En esta entrada de blog, voy a definar los requisitos usarios de la applicación.

Esta va a ser una applicación compuesta. Va a usar Prism 2.0 utilizando Silverlight. La applicación tendrá muchos módulos que representan las líneas correspondientes de Business. Usando Prism y un marco de applicaciones se permite definir soluciones que se puede usar en todas las niveles de la arquitectura.

Cuando se inicia la applicación, el sistema va a exigir que el usario pones sus credenciales. Ya que estamos usando el Prism, solo dos módulos han bajado desde el internet: el módulo principal y el módulo de seguridad. Cuando el sistema ha aprobado el usarios, el sistema se obtiene las roles y permisos explícitos que pertenece el usario. El menu se cree dinamicamente. El menu pertenece al otro módulo que se llama, “Navigation”. El menu solo va a tener opciones a las pantallas que el usario tiene permiso.

El usario se puede pertenecer a un role que contiene varios pantallas pero si el usario también tienen un permiso explícito a la misma pantalla entonces el permiso explicito siempre manda y no la de el role. Asi podemos definar varios roles que tienen permisos globales pero si necesitamos tener un permiso explicito todavía se puede hacer.

Despué de autenticarse, el usario se puede hacer clic en el menu para abrir una pantalla.

El siguente mesa describe cómo se maneja cada permiso en el sistema cuando se construa el menu y cuando el usario se haga clic en las pantallas y toolbar:

Permiso Descripción
Se puede Crear? Si es verdadero, entonces la propiedad de “Visibility” del buton “Addicionar Nuevo” se establecerá en “Visible”; de lo contrario, la propiedad de “Visibility” se establecerá en “Collapsed”.
Se puede Borrar? Si es verdadero, entonces la propiedad de “Visibility” del buton “Borrar” se establecerá en “Visible”; de lo contrario, la propiedad de “Visibility” se establecerá en “Collapsed”.
Se puede leer? Si no es verdadero, ninguna opción del menu no se creará para esta pantalla. Si intentas de navegar desde una otra pantalla, entonces un cuadro de diálogo aparece con las siguientes letras: “No tienes acceso a esta pantalla ahora. Por favor consulte a su administrador de seguridad.”
Se puede Guardar? Si es verdadero, entonces la propiedad de “Visibility” del buton “Guardar” se establecerá en “Visible”; de lo contrario, la propiedad de “Visibility” se establecerá en “Collapsed”. Si no es verdadero, entonces ninguna comprobación sucia a ser aplicada cuando se trata de cerrar la pantalla.

En la próxima entrada de blog, vamos a repasar la base de data y lo que es necessario para implementarlo nuestra modelo de seguridad.

Categories: Español Tags: ,

¡Ya en español!

August 11, 2010 1 comment

Quería empezar escribiendo entradas de blog en español. Soy de Colombia pero fuí adoptado de bebe y crecí en los estados unidos. No aprendí hablar español hasta la universidad y que nadia en mi familia hablaba español. Espero que me pueden entender. Les prometo de tratar de escribir mis entradas de blog lo mejor que puedo. Voy a intentar poner todas mis entradas de blog en inglés y español.

Categories: Español