SharePoint Latin Rotating Header Image

Arquitectura de Software y Soluciones

Breves opiniones sobre SharePoint en mi perfil de Linked In

En estos ultimos meses he generado algunos escrito no necesariamente técnicos en mi blog de Linked In. Asi es, usted puede ser un autor en Linked In y relacionar el contenido que genera en su perfil.Los invito a que le den una revisada a los siguientes enlaces:



 

Consideraciones para acercamos al tomador de decisiones de un proyecto SharePoint

Hoy quiero platicar de algo un tanto distinto de lo que acostumbro publicar en mi blog. Para aquellas personas que son consultores SharePoint o ingenieros de Pre Venta de soluciones de colaboración en algún momento del ciclo de vida de venta se requiere de nuestra intervención para identificar las necesidades de negocio y dimensionamiento técnico necesario para poder plasmar en una propuesta comercial nuestro alcance técnico y enfoque humano que será necesario constituir para auxiliar a nuestro cliente.


Sin duda, existen muchas formas de hacer el acercamiento sin embargo aquí dejo algunas de las preguntas que acostumbro hacer cuando estoy en reunión con el cliente final, esto no es una guía simplemente es lo que he probado con el tiempo.


  1. Cuál es el problema actual que desea resolver. La intención de esta pregunta es identificar que es lo que el cliente considera problema a resolver. La idea es ponernos en los zapatos del cliente y entender en primera instancia el problema en general y aquellas razones subyacentes que lo justifican. En ocasiones es importante preguntar él porque considera que con SharePoint podría obtener la solución.
  2. Cuál es la situación deseada. Es importante identificar de manera preliminar la visión final que tiene el cliente de lo que considera puede ser la solución que podríamos plantear. Es muy importante separar el tema técnico del tema de negocio. Lo que hay que indagar aquí es desde el punto de vista de negocio cuales son los entregables, métricas y por qué no las fechas en las que el cliente desea verse avante respecto a la solución requerida. No hay que perder de vista lo que el cliente cree que necesita y que considera una situación ideal, al final del día, buscamos satisfacer y exceder las necesidades de nuestro cliente y quien mejor que nos pueda dar una visión de lo que se considera satisfactorio.
  3. Cuál es la prioridad para la organización o departamento de implementar la solución. Es crítico desde el punto de vista comercial identificar que esta oportunidad tiene una alta probabilidad de concretarse. Así mismo desde el punto de vista dimensionamiento hay que tener en cuenta las implicaciones positivas y negativas de alinearnos a las fechas idóneas para el cliente y como estas tienen nos impactan.
  4. Nombre de las áreas involucradas en la solución. En el afán de poder visualizar a quien estaría tocando nuestra solución es importante desde una primera etapa identificar que otras áreas de la organización infieren en el proceso que se busca automatizar. En cierta medida el valor que una solución aporta al negocio deja un precedente importante de evaluar. También nunca hay que dejar de ver si la solución que estamos entendiendo es de misión crítica para el negocio y/o de alto impacto. Por misión critica nos referimos a lo estratégico y operativo de la solución, lo crucial que esta es para el proceso y para el negocio. Por alto impacto, lo entendemos como el grado en que la gente estará expuesta a la solución y que tanto esta influirá en la cultura de la organización de forma positiva “cuando esta sea innovadora y funcional” y negativa “cuando esta falle”.
  5. Un aproximado de usuarios finales que estarían usando la solución. En estos tiempos donde tenemos una gran necesidad de procesamiento de datos y donde ahora tenemos arquitectos de software es necesario dimensionar el posible nivel de demanda de procesamiento que la solución potencialmente requerirá con el objeto tener en cuenta y hacerle ver al cliente las implicaciones de hardware y de software que tendrá que contemplar como parte de la solución que estaremos planteando. El tema de la conectividad, trafico, disponibilidad, seguridad, escalabilidad, desempeño y crecimiento exponencial de los datos entre otros son aspectos que se tienen que contemplar desde la etapa comercial para poder establecer y acordar los supuestos para la optima implementación de nuestra solución. Además, cuando construimos una solución tenemos que anticiparnos y ver los costos aproximados de carga y mantenimiento a corto, mediano y largo plazo. Personalmente creo que un cliente aprecia el poder decirle como vemos a 2 o 4 años que se comportara nuestra solución.
  6. Que esfuerzos se han realizado en el pasado para resolver el problema. Uno nunca sabe que cosas puedes encontrar y que ideas valiosas se pueden re utilizar de aquellos esfuerzos o experiencias pasadas respecto a la solución. En cierta forma hay que ser afines a la inversión en tiempo y dinero que nuestro cliente ha hecho en el pasado para poder re utilizar lo que se pueda en todos los sentidos cuando esto coadyuva y aporta. Así mismo, identificar si es posible con que otros proveedores o colegas han colaborado con la finalidad de encontrar alguna relación positiva o visualizar alguna amenaza potencial. En mi experiencia me he encontrado con empresas y colegas que recomiendan los servicios.
  7. Actualmente en cuanto tiempo se realiza el proceso en cuestión y en cuanto tiempo seria lo óptimo. Sinceramente esta pregunta personalmente me parece importante. El poder detectar como opera hoy un proceso y cuantificarlo en tiempo, dinero o esfuerzo deja un indicador contra el cual podremos evaluarnos en el futuro para poder afirmar con datos concretos que fue un éxito nuestra intervención. Parte del orgullo del trabajo que hacemos se sustenta en el indicador. Proveedores de tecnología como Microsoft está siempre muy sensible a estos temas ya que dejan un antecedente favorable que en términos de mercadotécnica tiene un valor e impacto. Sin duda entender lo que considera éxito nuestro cliente nos dará la pauta de cómo proceder. Otro punto que en ocasiones he aplicado es acerca uno o dos años después justamente para ver indicadores y ahorros, en alguna ocasión en un proyecto fueron millones de pesos que se ahorraron en papel y el cambio cultural vino a elevar el nivel de calidad de los trabajadores del conocimiento. De verdad, este punto es un indicador estratégico.
  8. Cuenta con plataforma Microsoft y porque la usa. Esta pregunta nos permite saber la postura de nuestro cliente respecto a las propuestas de Microsoft lo cual es importante ya que con esto podremos compartir libremente como algunas tecnologías y productos podrían integrarse para resolver distintas necesidades. Por ello, si la posición es a favor sabemos que podemos aportar mucho más, si la posición es neutral o no a favor nos mantenemos al margen y alerta para posicionar productos o tecnologías cuando sea pertinente o nos pregunten.
  9. Cuenta con esquema de licenciamiento Microsoft. El tema de licenciamiento siempre ha sido algo crítico y delicado. Si nuestro cliente cuanto con algún acuerdo empresarial o esquema de licenciamiento buscamos nosotros tratar de utilizar donde haga sentido aquellos productos que se tengan licenciados como OCS, RMS, Exchange, Office, etc. Además, siempre es de vital importancia para el presupuesto de un proyecto el contemplar el licenciamiento desde una etapa temprana. En ciertas ocasiones cuando el esquema de licenciamiento esta por expirar aquí podría ser conveniente integrar a la subsidiaria local de Microsoft en el proceso para apalancar una renovación de contrato y por parte de Microsoft en ocasiones financiar nuestra solución. Todos ganamos.
  10. Cuenta con directorio activo y que tanto representa su jerarquía organizacional. Para proyectos de colaboración con SharePoint el tema del uso de directorio activo toma relevancia ya que aporta parte del esquema de seguridad que podríamos manejar en nuestra solución. Además de la integración de otras tecnologías. En alguna ocasión un representante de ventas “account manager” de la subsidiaria local de Microsoft especializado en Information Worker me dijo, aportamos valor para este cliente solo si tiene directorio activo y Exchange.
  11. Cuenta con equipo de desarrollo de software, en caso de que si, en que tecnología desarrollan. En el caso de nuestro cliente tenga algún programador o algún equipo de desarrollo es importante identificar que plataforma de desarrollo utilizan y ese sentido cual es su visión. La idea aquí es el poder alinear nuestra solución a desarrollar con el estándar o metodología de nuestro cliente en caso de existir, si no se cuenta, entonces involucrarlos y transferir nuestro proceso a ellos. Así mismo, dado el contexto del equipo de desarrollo en ocasiones conviene incluir en nuestra propuesta servicios u horas de capacitación técnica o transferencia de conocimiento para que el equipo de desarrollo de nuestro cliente pueda recibir y certificar nuestro trabajo. Además de que es parte de nuestra naturaleza influir o divulgar lo nuevo en tecnología de desarrollo Microsoft.
  12. Que versión de Office System usan los usuarios finales. Office 2007 aporta una gran capacidad de conectividad con SharePoint 2007, la sincronización que actualmente se tiene es una fundación con la cual podemos construir soluciones personalizadas usando de capa de presentación los mismos productos cliente de la familia Office. Si nuestro nos indica que se usa Office 2000 y Office 2003, es importante tomar en cuenta en nuestro dimensionamiento y diseño general de nuestra solución este punto ya que  Office 2003 no cuenta con tantas características de sincronización con SharePoint y hay que asegurarnos de comunicar a nuestro las expectativas y posibilidades de las tecnologías con las que cuenta. Uno nunca sabe y quizás seamos el detonador para actualizar los escritorios por nuevas versiones de Office.
  13. Se cuenta con presupuesto. En mi experiencia dependiendo de la región en donde hagas negocio esta pregunta puede incomodar, así que toma en cuenta eso. Desde el punto de vista comercial es muy importante poder sentir al cliente en este tema. El saber que se cuenta con presupuesto asignado o que se está en pláticas de asignarlo nos da un alto nivel de probabilidad de cierre del proyecto y por ello podemos entonces empezar con un alto nivel de certeza a coordinar la logística y agenda de los consultores que estarán involucrados. Sin mencionar lo que representa financieramente.
  14. Cuando se ve arrancando este proyecto. Esta pregunta también nos deja ver cómo y cuándo debemos empezar a coordinar con el área de operación de nuestra empresa la logística y asignación de recursos humanos, técnicos y físicos. Empezamos a ponerle fechas a nuestros planes generales de venta y hacer nuestra planeación de la operación.
  15. Hay algún procedimiento requerido para darnos de alta como proveedor. Esta pregunta nos permite saber cómo podemos iniciar con el procedimiento de alta como proveedor para que el tema de las políticas de pago nos impacte tanto. No hay nada mejor que estar debidamente registrado y alineados con nuestro cliente para que al momento de cerrar los compromisos contractuales estemos preparados.

Bueno, estas fueron algunas de las preguntas que se dan en los primeros acercamientos y que considero importante hacer durante algún proceso de visita con el cliente tomador de decisiones. Sin duda, hay muchas mas que seria valioso compartas en este espacio. Estas preguntas, NO son una guía sino lo que a mí bajo ciertos contextos de negocio me ha funcionado y hoy quiero compartir con la comunidad SharePoint.


Suerte y tu que preguntas haces?

Web Client Software Factory something you may have to look!

For me Pattern & Practices always have been a great resource. Since the release of this site, I have been following closely all the guides and they have do so much for me and also for my career. Since the release of the application blocks, all over to software factory’s I think that Patter & Practices Team have done a significant job influencing the use and adoption of best practices in several areas of software development.

Kudos to Ron Jacobs, Edward Jezierski and the rest of the team.

Right know I fell very excited for the new Web Client Software Factory announcement, yes I was waiting for it and know we have it in the CodePlex Community Site just for this project. The Web Client Software Factory is a guidance offering (under development) that will provide comprehensive architecture guidance to help us build web solutions using Microsoft Platform (ASP.NET, ASP.NET AJAX and Workflow Foundation). Just like the Smart Client Software Factory but for the web.

So enjoy and have fun!

Creando usuarios programaticamente con Membership y Profiles de ASP.NET 2.0

Desde hace tiempo he querido escribir sobre una técnica ASP.NET 2.0 que me parece interesante compartir. Se trata de utilizar de manera combinada la funcionalidad de las clases Membership y Profiles para establecer toda la maquinaria de administración y almacenamiento de usuarios. Sabemos que ASP.NET 2.0 nos ofrece estas piezas de infraestructura para la construcción de soluciones web con la finalidad de agilizar la creación y manejo eficiente de usuarios, roles y perfiles, claro entre otras posibilidades.


Lo que veremos en este post es una técnica que nos permite manipular usuarios con la clase Membership haciendo uso de los controles Login y que además podamos relacionar y extender los datos que requerimos asociar a un usuario a través del uso de la funcionalidad de Profiles para que de manera conjunta extendamos esta funcionalidad a nuestro beneficio.


En muchas ocasiones cuando habilitamos Membership para el control y manejo de usuarios es común que nos quedemos cortos con los datos de usuario que queremos almacenar y que son relevantes e incluso requeridos para la aplicación que estamos construyendo. La clase Membership es una clase que cuenta con métodos estáticos para crear nuevos, eliminar existentes, cambiar contraseñas y validar la existencia de usuarios. Esta clase funciona con un modelo basado en proveedor el cual nos permite hacer que trabaje independientemente del origen de datos donde se encuentra la información.


En la mayoría de los escenarios de una aplicación multi usuario normalmente requerimos proporcionar mucho más información que puede ser de utilidad para la aplicación que estamos escribiendo. Por ejemplo:


  • El nombre completo del usuario
  • A que departamento pertenece
  • Que teléfono y extensión tiene
  • Incluso información de configuración visual o personalización

Seguro encontraras mucha mas información que ocupes asociar al contexto de un usuario.
Sin embargo Membership por su naturaleza se queda corto por decirlo así con la cantidad de datos que almacena y en definitiva necesitamos asociar más información. Aquí es donde entra el uso de Profiles o en otras palabras perfiles de usuario. Profiles en ASP.NET 2.0 es un mecanismo que permite almacenar de manera persistente información adicional para cada usuario registrados en nuestro sitio. Tambien funiona bajo un modelo de tipo proveedor. Si deseas conocer mas sobre Profiles entra a este link. Por un lado tenemos Membership para la administración de usuarios y Profiles para la extensión de la información de un usuario en específico.


Los pasos para habilitar esta funcionalidades son:


  1. Configurar una base de datos para el almacenamiento persistente de usuarios, roles y perfiles
  2. Configurar en el archivo web.config nuestra aplicación web para utilizar dicha base de datos de almacenamiento y crear algunos usuarios
  3. Configurar en el archivo web.config el uso de perfiles y su estructura de información
  4. Escribir código para obtener de nuestro almacenamiento persistente la información de un usuario y su perfil

Obtener los usuarios de un sitio programáticamente
MEM01.jpg


Como vemos, tenemos un control GridView que muestra cierta información de los usuarios registrados en este sitio. Gracias al uso de la clase Membership es que de manera programática podemos obtener esta información. El código es el siguiente:


private void LoadData()
    {
        this.GridView1.DataSource = Membership.GetAllUsers();
        this.GridView1.DataBind();
    }


Insertar usuarios en un sitio programaticamente


MEM02.jpg


Para realizar el proceso de creación de usuarios utilizamos el control CrateUserWizard el cual se comporta conforme se especifique en el archivo de configuración web.config, por ejemplo, utiliza una expresión regular especificada en dicho archivo para validar el contenido del texto capturado en el campo contraseña. A su vez, este control utiliza la clase MemberShip y el método CreateUsers para insertar nuevos usuarios.


Una vez que proporcionamos la información y damos clic sobre “Crear Usuario” el control muestra una pantalla de confirmación de la operación.



MEM03.jpg


Hasta el momento esto es solamente funcionalidad “Out of The Box” de ASP.NET 2.0. Sin embargo como pudimos ver, requerimos mas información para describir a un usuario. Podemos realizar este proceso de manera programática simplemente diseñando nuestro formulario web de captura y ejecutando el siguiente código:


Membership.CreateUser(this.usernameTextBox.Text, this.passwordTextBox.Text, this.emailTextBox.Text);


Editando perfiles de usuario programáticamente


MEM05.jpg


Como vemos una vez que tenemos a nuestro usuario creado, es el momento de asociarle información adicional y almacenarla a través de perfiles de ASP.NET 2.0. En este caso, al usuario “hgonzalez” le asignamos información adicional como su nombre completo, una descripción e información relevante a esta aplicación. Adicionalmente podemos asociarle los roles que este usuario tiene asignados. Esta funcionalidad está ligada a Roles de ASP.NET 2.0. Veamos el código de cómo actualizamos el perfil de un usuario previamente creado.


MembershipUser user = Membership.GetUser(“hgonzalez”);


ProfileCommon prof = Profile.GetProfile(user.UserName);


user.Email = emailTextBox.Text;


prof.UsersData.FirstName = this.firstNameTextBox.Text;


prof.UsersData.LastName = this.lastNameTextBox.Text;


prof.UsersData.Comments = commentTextBox.Text;


prof.UsersData.IsAuthor = chkAuthor.Checked;


prof.UsersData.WithNotifications = chkNotifications.Checked;


prof.UsersData.CountryID = Convert.ToInt32(countryDropDown.SelectedValue);


prof.UsersData.CountryName = countryDropDown.SelectedItem.Text;


prof.Save();


Membership.UpdateUser(user);


                    // Actualiza los roles asignados
                    foreach (ListItem item in cblRoles.Items)
                    {
                        if (item.Selected)
                        {
                            if (!Roles.IsUserInRole(GetStringID(), item.Text))
                                Roles.AddUserToRole(GetStringID(), item.Text);
                        }
                        else
                        {
                            if(Roles.IsUserInRole(GetStringID(), item.Text))
                                Roles.RemoveUserFromRole(GetStringID(), item.Text);
                        }
                    }


Si vez el codigo encontraras que tenemos un concepto un poco distinto al que utilizamos en Profiles. El motivo es porque en vez de declarar las propiedades de mi profile en el archivo web.config, simplemente especifico que quiero utilizar una clase como mi estructura de informacion para el manejo de perfiles. Esta tecnica nos da interesantes capacidades.

<profile>

      <properties>

        <add name=”UsersData” type=”MyAssembly.BLL.UserTable” serializeAs=”Binary” />

      </properties>

  </profile>

De esta manera me aseguro de tener Profiles con la informacion de usuario que me interesa manejar dentro de mi aplicacion. Lo interesante es que si por alguna razon existe algun otro cambio en la estructura simplemente modifico la definicion de mi clase y con eso es suficiente para ver disponible y reflejado en todo mi sitio ese nuevo valor.

En el caso de Membership aqui dejo la configuracion, muy basica por cierto.

<membership>

      <providers>

        <remove name=”AspNetSqlMembershipProvider” />

        <add name=”AspNetSqlMembershipProvider” type=”System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a” connectionStringName=”LocalSqlServer” enablePasswordRetrieval=”false” enablePasswordReset=”true” requiresQuestionAndAnswer=”false” applicationName=”/” requiresUniqueEmail=”true” minRequiredPasswordLength=”1″ minRequiredNonalphanumericCharacters=”0″ passwordFormat=”Hashed” maxInvalidPasswordAttempts=”5″ passwordAttemptWindow=”10″ passwordStrengthRegularExpression=”” />

      </providers>

    </membership>

Y claro hay que habilitar el uso de roles y estos se configuran de la siguiente manera:

<roleManager enabled=”true” />

Habilitando la seguridad de nuestra información digital con Microsoft Rights Managament Services

Introducción
Lo más importante desde el punto de vista intelectual de una organización son sus procesos y la información que ellos generan. Esta información normalmente la expresamos y comunicamos de manera digital en documentos, hojas de cálculo y presentaciones. Asegurarnos de mantener sobre nuestro poder organizacional toda esa información expresada de manera digitalmente ha sido una batalla campal entre los desarrolladores y los profesionales de IT. Con Rights Management Services podemos establecer una estrategia organizacional para reforzar el establecimiento de permisos sobre todos los documentos, hojas de cálculo y presentaciones que nuestros empleados generan permitiéndonos restringir de manera granular el acceso a nuestra información dentro y fuera de la organización.


Problemática de hoy
Si pensamos en el contenido de la información que existe expresada en los documentos, hojas de cálculo y presentaciones que los empleados de nuestra organización generan, nos daremos cuenta que está totalmente orientado a contener detalles sobre el contexto de nuestro negocio y debido a que esta información esta expresada de manera electrónica sobre programas editores de texto encontramos una potencial amenaza al realizar tareas tan sencillas como pueden ser el enviar por correo electrónico un documento o incluso copiar a un CD o DVD con nuestro contenido digital. En escenarios de instituciones gubernamentales específicamente hablando de procuración de justicia encontramos que la información de las averiguaciones o investigaciones es extremadamente sensible ya que existen repercusiones legales de por medio y esa información se captura en programas como editores de texto de tal manera que queda expuesta digitalmente.  En ocasiones se manejan expedientes de máxima seguridad y para dependencias de este tipo es relevante  contar con mecanismos que permitan asegurar la integridad de la información física y electrónica.  Algunas medidas que me ha tocado ver son utilizar bases de datos para almacenar como objetos los documentos o establecer la seguridad vía infraestructura de red. Desafortunadamente no todas las instituciones cuentan con una infraestructura idónea y en ocasiones se puede ver comprometida la integridad de la información y por consecuencia de la institución.


La opción para habilitar seguridad en nuestra información digital
Microsoft Rights Management Services (RMS) provee de un mecanismo para proteger la información expresada en correos electrónicos, documentos, hojas de cálculo o presentaciones mediante la utilización de tecnología de cifrado. Además, yendo un poco mas allá de proteger la información almacenada o cuando esta viajando por la red, RMS también puede restringir lo que sucede con la información una vez que se encuentra en manos del usuario final.


Algunas de esas restricciones son:


  • Impresión
  • Copiar/Pegar
  • Guardar
  • Re Enviar (Correo Electrónico)

Estas restricciones se pueden reforzar utilizando plantillas de seguridad en las políticas. Estas políticas se pueden crear por personas o grupos de usuarios.  La buena noticia es que estas políticas se pueden reforzar en cualquiera de los paquetes de la familia Office.  A pesar de que RMS no es una solución total al problema,  ofrece un enfoque prácticamente idóneo para:


  • Mantener la información interna en la organización
  • Previene escapes accidentales de la información

Seguro en este punto te preguntaras, cuando nos conviene utilizar RMS. Bien pues cuando quieras:


  • Proteger archivos sensitivos como:
    • Documentos internos
    • Archivos de Word, Excel y Power Point
    • Soluciones de terceros
  • Restringir el movimiento o distribución de correos electrónicos
    • Los gerentes o directivos pueden enviar mas información con toda confianza
    • Se puede limitar opciones como copiar, pegar, re enviar.

Veamos un ejemplo ficticio
El departamento legal de una institución de servicios está celebrando un contrato millonario con un nuevo proveedor, se están asociando para juntos realizar una agresiva campaña de venta por todo el país, por tal motivo es extremadamente critica la confidencialidad del contrato ya que si llega a caer en manos de la competencia esta puede reaccionar rápidamente y ganar el nicho de mercado que estas dos empresas han decidido explotar. El contrato actualmente se encuentra en revisión por dos abogados uno por cada empresa respectivamente y el contrato aun no ha sido terminado. Los abogados constantemente están en comunicación para realizar los cambios y modificaciones pertinentes, colaboran remotamente vía correo electrónico para afinar los detalles.


El abogado Eduardo Mendoza inicia el trabajo preliminar del contrato integrando el contenido y las clausulas iniciales correspondientes.  Decide enviar por correo electrónico el gerente del departamento legal para su autorización preliminar así que utilizando RMS para asignarle permisos suficientes al usuario Haaron Gonzalez con la finalidad de que pueda realizar modificaciones.


rms01.jpg

Después envía el contrato como archivo adjunto vía correo electrónico. Cabe mencionar que copia en el correo a Paul Hernandez un abogado mas del equipo. Sin embargo a este usuario no se asigno un solo permiso.


rms02.jpg

El usuario Haaron Gonzalez recibe el correo electrónico con el contrato. Decide abrirlo para ver su contenido.


rms03.jpg 

Al abrir el documento en Microsoft Word 2003 se le notifica que este documento tiene permisos que restringen la funcionalidad y que procederá a realizar la conexión al servidor RMS descargar los permisos que este usuario tiene sobre el documento.


rms04.jpg

Una vez descargados los permisos asignados a este usuario sobre el documento, Microsoft Word 2003 presenta un panel de tareas que cuenta con una sección donde el usuario puede consultar sus permisos. Además esta panel permite mostrar una ventana que nos presenta el detalle de los permisos con los que se cuenta además de la posibilidad de solicitar mas permisos a la persona que creó el documento.


rms05.jpg

Si recordamos cuando se envió el correo con el contrato adjunto también le llego al usuario Paul Hernandez una copia, solo que a este usuario no se le asigno un solo permisos. Cuando intenta abrir el documento RMS le deniega el acceso al mismo y le presenta la opción de cambiar usuario, solicitar permisos o de no hacer nada.


rms06.jpg

EL usuario Haaron Gonzalez decide modificar el contenido del contrato agregando comentarios importantes relacionados con el formato y la veracidad de la información.


rms07.jpg

Terminando sus observaciones envía a Eduardo Mendoza el correo de regreso con el nuevo documento como archivo adjunto.


rms08.jpg

Eduardo Mendoza recibe el correo electrónico con las observaciones. Realiza los cambios pertinentes y en los permisos del documento remueve a Haaron Gonzalez y agrega a Hector Herrera con permisos de solo lectura.  Además, Eduardo Mendoza especifica opciones adicionales como el no permitir que se soliciten permisos además puede especificar un tiempo de expiración del documento de tal forma que es válido durante un periodo de tiempo, después ya no lo será denegando el acceso al mismo.


rms09.jpg

Ya con el documento generado decide enviarlo por correo electrónico al destinatario final. Un nuevo usuario llamado Hector Herrera. Cabe mencionar que también podemos aplicar restricciones a la funcionalidad de Microsoft Outlook 2003. En este caso nuestra política dice que los destinatarios de nuestro correo electrónico no podrán re enviar el correo, imprimir o copiar el contenido.


rms10.jpg

El destinatario final recibe el correo electrónico con el contrato adjunto y al querer abrirlo tiene que realizar un proceso sencillo de autentificación para poder validar su identidad.  Claro que este escenario asume que estamos dentro de la misma red. Para habilitar escenarios con usuarios que están fuera de nuestra intranet tenemos que configurar un servicio adicional de RMS.


rms11.jpg

Con solo dar clic sobre el correo electrónico Outlook 2003 realiza el proceso de autentificación.


rms12.jpg

Si el usuario realiza satisfactoriamente el proceso de autentificación entonces Outlook 2003 mostrara el contenido del correo electrónico. Además bloqueara la opción de re enviar correo de acuerdo a la política establecida.


rms13.jpg

Al seleccionar nuestro archivo adjunto para abrir nuestro contrato sucederá el mismo proceso y Microsoft Word 2003 se encargara de consultar los permisos que tenemos asociados a nuestro documento y con base en eso a realizar los correspondientes bloqueos de opciones.


rms14.jpg

Si abrimos con NOTEPAD el contenido de un documento protegido por permisos encontraremos texto cifrado:


rms25.jpg

El proceso básico  de RMS
Lo que acabamos de ver  en el ejemplo anterior fue el proceso para crear y visualizar información protegida por permisos. Los empleados de nuestra organización seguirán utilizando el mismo fundamento lógico o flujo de trabajo para el intercambio de información.


rms26.jpg
  • El usuario quiere aplicar protección por permisos a un documento y para ello se utiliza una aplicación que soporte RMS para aplicar estos permisos. Y además, a través de esta aplicación RMS como Word por ejemplo, se establece una comunicación con el servidor RMS para obtener una licencia para proteger el documento. Esto sucede solo la primera vez.
  • EL servidor RMS recibe la petición y crea una licencia con los permisos en la licencia. El cliente de RMS y la aplicación RMS combinan una licencia de publicación con el documento protegido por permisos que ahora se convierte a un documento cifrado.
  • El documento es compartido con otros usuarios. El cliente debe de comunicarse con el servidor RMS para obtener una licencia de uso del documento.
  • El servidor RMS revisa los permisos del usuario y en caso de que se le permita el acceso, el servidor envía de nuevo una licencia de uso para permitir al usuario trabajar con el documento. En este punto el usuario descifra y usa el documento.

Componentes de RMS


  • Windows RMS Server
    • Certifica a los usuarios confiables
    • Licencia la información protegida con RMS
  • Windows RM Client
    • Se instala en la estación del cliente e interactúa con las aplicaciones habilitadas con RMS
  • Aplicaciones habilitadas con RMS
    • Permite el uso de los permisos para ser configurados y distribuidos sobre el contenido
    • Pueden crearse utilizando el RMS SDK
  • RMS AddIn para Internet Explorer

Resumen
En resumen, RMS es la propuesta de Microsoft para habilitar protección de información digital. RMS se integra y funciona perfectamente con otras tecnologías como SharePoint Server 2003 ofreciendo toda una plataforma completa para asistir a los trabajadores de la información.


Si deseas conocer más a detalle esta tecnología te recomiendo las siguientes paginas de interés:


Señores arquitectos ya salio el Web Service Software Factory

Es verdad, una de las tendencias que han surgido en nuestra industria es la de la automatización, aunque en la industria de la manufactura este principio tiene muchos años de implementarse desde el punto de vista de desarrollo de software hay la llevamos. Conforme nuevas herramientas tecnológicas y plataformas de desarrollo emergen también aparecen conceptos que vienen a mejorar radicalmente la forma en que construimos software. Generadores de código han sido uno de los principales implementaciones de este concepto y en términos de Microsoft la liberación del GAT (Guidence Automation Toolkit) ha permitido aterrizar cada vez más a bajo nivel este concepto. La buena noticia es que Microsoft ya libero una mas de sus fabricas de software.


 


Web Service Software Factory ha sido una pieza de software comunitario que desde hace 8 meses Microsoft ha venido incubando y prácticamente contiene una serie de patrones, lineamientos, documentación, herramientas y ejemplos para construir servicios. Esta fábrica nos permite asegurarnos que realmente estamos construyendo servicios que hacen uso de WCF (Windows Communication Foundation) el nuevo sub sistema de comunicación de Windows Vista. Ya había platicado sobre esto en un post anterior pero hoy quiero compartir que ya fue liberada la primer versión y la puedes encontrar en el sitio de Patrones y Practicas o simplemente da clic aquí.


 


Disfrutala…

estas son tan tan

Bien pues hoy cumple un anio de que pusimos al publico el DataTierGenerator for Enterprise Library Edition fue un regalo especial de dia de madres :-).


Saludos

Hands on Labs de EntLib 2.0

Ya salio, ya esta aqui, los hands-on labs de Enterprise Library para el .NET Framework 2.0.  Descargalos aqui. Este paquete contiene 6 laboratorios, uno por bloque y en ambos lenguajes C# y VB.NET. Estan muy sencillo, son para auto estudio, paso a paso que te lleva por los principales tareas y aspectos de importantes de cada loque. Altamente recomendable para todo tipo de audiencia, seas un experimentado usuario o un principianete. Valen la pena.


Gracias por los comentarios del webcast.


  • Por cierto para quien me pregunto sobre application blocks en aplicaciones mobiles checa esto.
  • Para el que pidio el DataTierGenerator para Enterprise Library 2.0 aqui lo puedes descargar.

Demo sobre Enterprise Library 2.0

La proxima semana estare dando un Webcast sobre Enterprise Library para el .NET Framework 2.0 y estoy preparando el contenido, el nivel es 200 y estara interesante ya que nos vamos a ir un poco mas alla de los features para poder conocer sobre que escenarios de negocio puede ser apropiado utilizar la funcionalidad provista por este marco de trabajo. Asi que te invito a que comentes en este espacio que te gustaria ver, algun ejemplo en concreto aun estoy a tiempo de preparar alguna demostracion que sea pertinente, entonces, mandame un mail o deja un comentario en este post estoy seguro que utilizar escenarios tuyos puede ser der gran valor para todos nosotros.


Pienso tocar todos los bloques y hacer demostraciones por cada uno todo sobre un escenario en concreto. Asi que aun estamos a tiempo de poder disenar una demostracion acorde a tus dudas.


 


 

Videos de Web Service Factory

Hace unos dias platicaba de lo importante que es la liberacion de Web Service Factory para ayudarnos a adoptar y enteder de manera practica el uso de Indigo actualemente Windows Communication Foundation en la conrtruccion de aplicaciones distribuidas basadas en servicios. Bien si no te quedo muy claro de que se trata toda esta algarabia, aqui te dejo unos videos introductorios publicados por Don Smith.



Impresionate y disfrutalos…