11

Actualmente existen numerosos módulos tanto gratuitos como de pago, sin embargo es posible que no encontremos un módulo que realice todas las funciones deseadas. En dicho caso disponemos de la posibilidad de modificar el código o bien crear módulos siguiendo una determinada arquitectura multicapa. Para la creación del módulo utilizaremos las herramientas de desarrollo gratuitas proporcionadas por Microsoft; SQL Server 2005 Express y Visual Web Developer 2005 Express (ASP.NET 2.0).

Antes de empezar necesitaremos la última versión del Starter Kit de DotNetNuke®, descargable desde la web, así como una instancia operativa de DotNetNuke®. En este artículo utilizaremos la versión 4.8.x la cual trabaja con .NET Framework 2.0. Para conocer los pasos de la instalación visita Recursos > Instalación en el menú principal de este Portal. En las versiones actuales el Starter Kit ya integra un código de ejemplo completo y funcional, por ese motivo en este artículo sólo se detallan los pasos a seguir hasta llegar a la funcionalidad del módulo, que consiste en gestionar una tabla (INSERT/Añadir, UPDATE/Modificar, DELETE/Eliminar y SELECT/Consultar). Una vez conseguido, cada usuario desarrolla el módulo como desee personalizando la base de datos, páginas, etc.

Arquitectura DNN

La arquitectura consiste en una aplicación estructurada en varias capas (multicapa) las cuales no voy a detallar en este artículo pero sí una breve introducción para comprender el procedimiento a seguir en la creación de un módulo.

Data Access Layer (DAL)
La capa de acceso a datos está compuesta por aquellos objetos necesarios en la gestión de la información contenida en la base de datos. Dicha gestión se realiza mediante procedimientos propios o disponibles por DNN®. Antes de empezar a desarrollar cualquier módulo debemos diseñar la tabla y procedimientos necesarios.

Business Logic Layer (BLL)
La denominada Capa Lógica de Negocio consiste en dos clases básicas las cuales contienen la estructura de los datos y el controlador de las funciones y procedimientos necesarios para la gestión en la base de datos.

Presentation Layer (UI)
Esta capa representa la interfaz del usuario, es decir, las páginas que componen el módulo y contienen los controles de usuario. El módulo es visualizado con el Skin y Container establecido por defecto sin embargo, del mismo modo que en otros módulos, podemos configurar dicho diseño en la página de configuraciones del módulo.

Generar el código

En el Visual Web Developer agregamos un nuevo elemento seleccionando Archivo > Nuevo Archivo o con el botón derecho del ratón sobre el Proyecto y a continuación Añadir Nuevo Elemento. En la parte inferior de la ventana de Plantillas disponemos de las plantillas instaladas por el Starter Kit. Seleccionamos DotNetNuke Dynamic Module y asignamos un nombre al módulo, por ejemplo, "MyModule.". Importante dejar el punto al final del nombre!

Automáticamente se generarán los archivos correspondientes a las capas anteriormente comentadas. También observamos una página en la cual se nos recomienda que las carpetas creadas deben tener el nombre del módulo, "MyModule". De no ser así, nos situamos sobre la carpeta, hacemos clic con el botón derecho y seleccionamos Cambiar nombre.

Al crearse los archivos necesarios se separan en dos carpetas, App_Code y DesktopModules, en una carpeta con el nombre del módulo, en este caso MyModule. En la primera se generan los archivos correspondientes a DAL y BLL, es decir, las clases necesarias para la gestión de procedimientos, estructura de datos, etc. Dichos archivos son DataProvider.vb y SqlDataProvider.vb de DAL y MyModuleController.vb y MyModuleInfo.vb de BLL. En la segunda carpeta, DesktopModules\MyModule encontramos una serie de archivos correspondientes a UI, es decir, aquellos archivos necesarios para la visualización del módulo.

Data Access Layer (DAL): DataProvider.vb y SqlDataProvider.vb
Business Logic Layer (BLL): MyModuleController.vb y MyModuleInfo.vb
Presentation Layer (UI): ViewMyModule.ascx, Settings.ascx y EditMyModule.ascx

Cabe destacar el archivo 01.00.00.SqlDataProvider, el cual contiene el script SQL a ejecutar sobre la base de datos para crear la tabla y procedimientos. Dicho script debe ser ejecutado desde el módulo SQL del Portal o mediante la consola de SQL Server. Para ejecutar el script desde el Portal abrimos previamente el archivo en el Visual Web Developer, seleccionamos todo el código con Ctrl+A o menú Edición > Seleccionar todo y copiamos  con Ctrl+C o Edición > Copiar. A continuación abrimos desde el menú Host la opción SQL donde pulsamos Ctrl+V o clic con el botón derecho sobre el cuadro de texto y en el menú contextual, Pegar. Marcamos la casilla Ejecutar como Script y seleccionamos la opción Ejecutar.

A continuación debemos volver a "compilar", para ello seleccionamos en el menú principal Generar > Generar Sitio Web. En la ventana de Resultados observamos el proceso y al finalizar no debe indicar ningún error. Para visualizar dicha ventana seleccionamos en el menú principal Ver > Resultados. Por último, establecemos el archivo Default.aspx como página de inicio haciendo clic con el botón derecho sobre el archivo y seleccionando Establecer como Página de Inicio.

Archivos de Recursos

Al desarrollar un módulo normalmente es creado en inglés, es decir, con los nombres de campos, etiquetas, textos de ayuda, etc. en inglés. Dicha información es almacenada en los denominados archivos de recursos los cuales se encuentran en la carpeta DesktopModules\MyModule\App_LocalResources. En dicha carpeta encontramos un archivo con extensión ascx.resx para cada página el cual contiene los valores de aquellos objetos (Etiquetas, ayuda, etc.) que nos interese traducir indicando el nombre ID asignado al objeto. Una vez con el módulo insertado en el Portal simplemente debemos realizar la correspondiente traducción en el Editor de Idioma.

Agregar el módulo en el Portal

El siguiente paso es indicar al Portal la existencia del módulo. Accedemos en el Portal como superusuario y abrimos las Definiciones de Módulos en el menú Host. En el menú de Acciones seleccionamos Importar Definición de Módulo. En la lista desplegable de Manifiestos seleccionamos el archivo MyModule.dnn y clic en Importar Manifiesto.

En la lista de Definiciones aparecerá nuestro módulo, MyModule, el cual podemos observar en la página de edición del mismo los diversos nombres. Como Nombres obligatorios debemos indicar el Nombre del Módulo y el de la Carpeta. El campo Clase de Controlador identifica el archivo correspondiente a la gestión de la base de datos como ya se ha mencionado anteriormente. Cualquier cambio de nombre de controlador o nombres identificativos, como por ejemplo la empresa, deben indicarse en este campo. En la parte inferior observamos los diversos controles correspondientes a las páginas que componen el módulo, concretamente la capa de presentación o interfaz de usuario Presentation Layer (UI).

Utilizar el módulo

El módulo de ejemplo con el Starter Kit es realmente simple. Agregamos el módulo en una página mediante el Panel de Control. Por defecto visualiza el texto "Here is some sample content" como contenido del módulo. Haciendo clic sobre Editar (icono lápiz) accedemos a la página de edición en la cual mediante el editor FCK podemos modificar dicho contenido, así como Eliminar el mensaje. Para agregar otros mensajes seleccionamos Add Content en el menú de Acciones o en la parte inferior del módulo.

Por último, disponemos de la configuración del módulo. Seleccionando Configuración en el menú de Acciones se visualiza la página con las opciones comunes y en la parte inferior disponemos del apartado para nuestro módulo, MyModule Settings. Dicho apartado nos permite establecer un texto por defecto y cada elemento que se agregue visualizará dicho texto como título.

Preparar la distribución

La distribución del módulo se realiza mediante un archivo comprimido con extensión Zip el cual contiene todos los archivos que componen el módulo. Dicho archivo se conoce en DNN como ensamblado y podemos generarlo desde la página de Definiciones de Módulo. Al Editar el módulo observamos en la parte inferior la opción Crear Ensamblado Privado. Al seleccionar dicha opción accedemos a una página en la cual indicamos el nombre del archivo, por defecto, Nombre_Versión_Install.zip (MyModule_01.00.00_Install.zip), marcamos para crear manifiesto e incluir carpetas, y hacemos clic en Crear. Observamos un enlace para la descarga del ensamblado y el Log con los archivos creados.

Más información

Para cualquier consulta, incidencia, errata, etc., comentarlo en los foros de este Portal. Como bibliografía para la creación de módulos existen numerosos artículos en Inglés, destacando los de Michael Washington en adefwebserver.com, y multitud de libros electrónicos (eBook) gratuitos sobre ASP.NET. Como libro importante, sobre DotNetNuke® en general, recomiendo "Professional DotNetNuke 4: Open Source Web Application Framework for ASP.NET 2.0" de la editorial WROX, está en Inglés (ISBN: 0-471-78816-3).

 

Publicado en: Recursos y Tutoriales

Valoraciones

Comentarios

Ignacio Ornelas
# Ignacio Ornelas
viernes, 17 de julio de 2009 5:26
Excelente articulo, habemos muchos que deseamos aprender a desarrollar modulos para DNN, pero no existen (o no sabemos) tutoriales para desarrollo sobre todo con acceso a datos.

seria bueno un tutorial para desarrollo con ejemplos
Cesar Augusto Lopez
# Cesar Augusto Lopez
viernes, 13 de noviembre de 2009 14:48
Excelente.... IoI... Muy buena documentación para un modulo básico...

Te agradezco un resto camarada.. Sumate 10+ puntos...

Alf
# Alf
viernes, 5 de febrero de 2010 18:38
Excelentisimo tutorial, corto pero conciso, gracias por tomarte el tiempo
Alf
# Alf
viernes, 5 de febrero de 2010 18:38
muy bueno, gracias por tu tiempo y esfuerzo
julio Cesar
# julio Cesar
miércoles, 3 de marzo de 2010 12:34
Hola hola!

Por favor sería alguien tan amable y ayudarme.

Hace una semana más o menos empecé con DNN (v5, VWD2008. SQLSERV2005 remoto). He instalado la aplicación y todo hasta aquí funciona muy bién. Pero el caso es que quiciera aprender a desarrollar nuevos módulos, adaptados a mis necesidades, es por eso que he llegado hasta este artículo muy útil por cierto. Mi duda surge cuando intento seguir los pasos con mi DNN5, únicamente llego hasta "Agregar el módulo en el Portal" [...En el menú de Acciones seleccionamos Importar Definición de Módulo...]. En DNN5 no encuentro esta opción, sólo llego hasta HOST>MODULE DEFINITIONS>[Install Module, Create Módule] mas no IMPORTAR DEFINICIONES DE MOD.

Help me please!

Enviar Comentario

Nombre (obligatorio)

Email (obligatorio)

Sitio web

Imagen CAPTCHA
Escriba el código mostrado más arriba: