DotNetNuke v2 Private Assembly Development
Download
Report
Transcript DotNetNuke v2 Private Assembly Development
DotNetNuke Portal
Private Assembly Development
Stan Schultes
Enterprise architect / application developer
Conference speaker, mentor, trainer
Contributing Editor, Visual Studio Magazine
Founder - .NET Pub Club (netpubclub.net)
Microsoft MVP
www.vbnetexpert.com
[email protected]
Presentation Outline
Portal Review and Requirements
Private Assembly Installation
Technical Overview & Architecture
Data Provider Architecture
DNN in Design Mode
Private Assembly Development Process
Development Topics
Links and Resources
DNN – Portal Review
DotNetNuke = Open Source portal
Tabs = portal organizational units
Modules = information containers
Info access controlled by Roles and Users
Data providers = implement storage in a
variety of databases
DNN - Portal Requirements
Current portal version: v2.1.2
Requires:
Win2K, WinXP, or Win2K3
IIS installed and operational
.NET Framework V1.1
Access or SQL Server 2000 / MSDE
SMTP configured if you want to use mail
VS.NET 2003, or custom build environment (no
SDK version available today)
DNN is written in VB.NET, but you can write
modules (.DLLs) in any .NET language
DNN - Installation Process
Installation Process:
Unzip the code to a directory, give ASPNET/Network Service
account permissions to that directory
Create a virtual directory in IIS Manager
[ Create an empty SQL database, set up DB account ]
Edit web.config – set data providers up
Browse to http://localhost/vdir
Change Host and Admin passwords!
Upgrade Process:
Back up your current configuration
Unzip the new code into the directory structure
Browse to the vdir
Demo – PA Installation
PA = Private Assembly (aka Custom Module)
Four PAs are distributed as samples:
PageTitle
Survey
Users Online
Whois
Installation with Host File Manager
Config with Host Module Definitions
Control Types, Multiple Controls
DNN - Technical Overview
Framework application
Modular, extensible construction
Dynamically loaded user controls
Provider model
Business logic / UI layers separated
Online portal configuration by role
Multi-portal: parent or child configuration
Provider Model
Data access based on the Whidbey Provider
model (see Resources)
Databases supported:
Access (default), SQL Server 2000/MSDE
(future) mySQL, Oracle
Provider model:
Rich Text editing
Exceptions / Logging
Scheduling
Authentication (future)
DotNetNuke Portal
Portal provides plumbing and services:
Membership
Role-based security
Personalization
Management
Navigation
Data access
Site & exception logging
DotNetNuke Architecture
Data Provider Architecture
Data Store – MS Data Access Application Block
Concrete Data Providers – built as separate
.DLLs (SqlDataProvider.dll, AccessDP, etc.)
Abstract Data Provider – DataProvider.vb
Business Logic Layer – SuggestionsDB.vb:
Abstracts the data layer from the portal
Custom Business Object (CBO) helper
User Interface Layer – user controls (.ascx)
Concrete Data Providers
Implemented as separate components
Use MS Data Access Application Block
SqlDataProvider.vb:
Abstract Data Provider
Located in the Data Access Layer
Instance method is the Data Factory
DataProvider.vb:
Business Components
Located in the Business Logic Layer
Interface structures between DB & app
Business Components (cont’d)
Controller classes provide the app/DB
conversion interface
Data Layer Topics
Instance method – data factory
Configuration
Database scripts
{databaseOwner} and {objectQualifier}
Data transport via DataReaders
Custom Business Object Helper (CBO)
Null Handling
Caching
DNN in Design Mode
DNN v2 built with VS.NET 2003
Change .sln and .webinfo file if not default
DotNetNuke vdir
Release mode vs. Debug mode
All standard modules are integrated in .sln
Build private modules in any language –
as separate project.
Project Organization
Directory structure:
Root – few .aspx’s, http handler, global.asax
Admin – user controls for all system pages
Components – business logic for portal
Controls – title, header, footer, skin controls
DesktopModules – module add-ins
Portals\n\ – content directories by portal
Providers – separate projects
PA Development
PA = Private Assembly / Custom Module
Develop PAs in any .NET language
Development Overview:
Project Setup
Build the Data Layer
Create the User Controls
Package the PA for Installation
Deployment
PA Dev – Project Setup
Tip: find a similar module and copy it
Create a new directory under DesktopModules:
Create new project in that directory:
VBNetExpert.Suggestions
Clear Root Namespace
Set build output path to DNN \bin directory
Set References
Create \Providers\DataProviders subdirs:
\SqlDataProvider
\AccessDataProvider
These will also become separate projects
PA Dev – Build the Data Layer
Design your module’s logic
Build one data provider at a time
Create the required database table(s)
Create and test all Stored Procedures
Create abstract data layer (DataProvider.vb)
Create & build project for concrete data
provider (SqlDataProvider.vb)
Create business objects (SuggestionsDB.vb)
PA Dev – Create User Controls
This is the portal Presentation Layer
DNN V2 allows multiple user controls per
module (V1 allowed two: Edit & Display)
In control sources: Imports DotNetNuke
All controls inherit from PortalModuleControl:
Main control (Suggestions)
Edit control (EditSuggestions)
Module options (EditSuggestionsOptions)
Other as required (DisplaySuggestions)
PA Dev – Packaging for Install
Create DB install & uninstall scripts
Create .dnn file (installation manifest)
Folder contents & module strings
Modules & Controls
Files deployed (ascx, dll, sql, etc.)
Package additional files in .zip (images &
icons, help & readme files, etc.)
Package everything into master .zip for
upload to portal
Test!
PA Dev – Deployment
PA deployed & managed through the Host
account
All related Modules are included as
“definitions” in Host Module Definitions
Portal database tables affected:
DesktopModules
ModuleDefinitions
ModuleControls
Sql files need to be in UTF-8 format…
Converting Modules from V1
Convert data calls to Provider model
No longer share edit & module options with panel
controls
Don’t include DesktopModuleTitle control
Module registration changes:
Module tables have changed
No .sql script for controls registration
.dnn file structure defines module registrations
PMC.Actions.Add for referencing controls
ArrayLists for data binding
Use EditURL and NavigateURL methods
Development Topics
Roles & Permissions – how to detect
them in the code
PortalModuleControl
ModuleID, TabID
Components\configuration.vb
ObjectBrowser is your friend!
Development Topics (cont’d)
Development tools:
CodeSmith with templates
Skinning
Security
Modifying the core code
Questions?
Resources
DotNetNuke: www.dotnetnuke.com
FW 1.1: http://www.asp.net/download-1.1.aspx
Provider Model: http://msdn.microsoft.com/library/enus/dnaspnet/html/asp02182004.asp
My V1 modules column: http://www.fawcette.com/vsm/2003_12/
magazine/columns/gettingstarted/
DNN docs: site documentation subfolder
DNN help: http://www.dotnetnukehelp.com
Resource portals: http://www.dnn.com.au,
http://dnnjungle.vmasanas.net/
Developer portal: http://www.dotnetnuke.dk
Free modules list: http://www.cathal.co.uk/Default.aspx?tabid=28