350 likes | 551 Vues
Introduction to DotNetNuke. Agus Kurniawan, MVP (C#) agus.kurniawan@ai.astra.co.id Software Architect – PT. Astra International Tbk Group Leader of .NET Mobile - INDC. Agenda. History DotnetNuke overview More Features! Core Extensibility Skinning Module Development. A Little History .
E N D
Introduction toDotNetNuke Agus Kurniawan, MVP (C#) agus.kurniawan@ai.astra.co.id Software Architect – PT. Astra International Tbk Group Leader of .NET Mobile - INDC
Agenda • History • DotnetNuke overview • More Features! • Core Extensibility • Skinning • Module Development
A Little History • Developed by Vertigo Software to showcase ASP.NET 1.0 • VB.Net/C# • Dynamic Site Layout using User Controls • Portal Module Implementation • Portal Configuration using Sql Server • Role-Based Security • Great Starting Point!
IBUYSPY - Problems • Support/Enhancements – No longer being worked on! • Missing Features • Multiple Communities • Portal Management • Hierarchical Site Layout (Menu) • Customization • Module Development • Graphical Changes • Core Extensibility
The DotNetNuke Project • Started by Shaun Walker of Perpetual Motion Interactive Systems Inc. in Jan. 2002 as an extension to IBuySpy, initially called IBuySpy Workshop. • Now consists of 30 core team developers. • Large community support, ASP.NET forums. • Written in VB.NET • Open Source license. • 10,000 to over 50,000 lines of code
Timeline • 01/1/2002 - IBS Release • 12/24/2002 – Released on ASP.Net forums • Shaun Walker – Perpetual Motion (Canada) • IBuySpy Workshop • 3/15/2003 –5/15/2003 • Re-branded as DotNetNuke (1.05 – 1.08) • Private Assemblies • Included Menu • 9/1/2003 – DNN 1.10 (x) • Core team formed world-wide • Stable release with some security patches
Timeline (cont.) • 3/23/2004 – DNN 2.0 • Complete Re-Write • 1500+ Source Control Transactions/Month • Provider Pattern for Data Access • http://msdn.microsoft.com/library/en-us/dnaspnet/html/asp02182004.asp • Skinning Engine • 6/4/2004 – DNN 2.1 • Providers for Scheduler/Logging/RichText • Crucial bug fixes
Timeline (cont.) • The Future • Multi-Lingual (2.2) • Friendly Urls (2.2) • Search (2.?) • Client API (2.?) • www.dotnetnuke.com (roadmap)
Completing the Portal Implementation • Multiple Portals per Installation • Extended Basic Features • User Membership, Role Membership, Content Authoring • Implement Advanced Features • Search Engine Optimization, Banner Advertising, Affiliate Relationship Management, and Hosting
Portal Architecture 1 Installation (1DB/Web) lenders.yourcompany.com buyers.yourcompany.com Host dealers.yourcompany.com
Provider Pattern • “a provider is simply a contract between an API and the Business Logic/Data Abstraction Layer.” • Whidbey Pattern for Extensibility • Build new core features using this Pattern! • Modules built using this pattern as well!
Portal Architecture for Data Access Config AccessDataProvider SqlDataProvider Abstract Base Class OracleDataProvider
Provider Pattern Everywhere • Data Provider • Rich Text Provider • Logging Provider • Scheduler Provider • Authentication (Soon?) • Everywhere customization *may* occur!
Design Replace Pack Deploy Design Skin in Any Editor (Designer) Mark Dynamic Section in Skin with special PlaceHolders (Designer) Package into Zip File for Distribution (Designer) Install into your portal (Admin) The Skinning Process
Design Design Skin in Any Editor (Designer) Setup • Design HTML in any editor • Note: “Normal Design” as you would design any website
Replace Mark Dynamic Section in Skin with special PlaceHolders (Designer) Replace • Mark sections to inject module (ContentPane, LeftPane) • Mark dynamic functionality based on Skin Objects ([Title], [Menu], [Login]) • You can write your own Skin Objects!
Pack Package into Zip File for Distribution (Designer) Pack • Pack up all files into a Zip
Deploy Install into your portal (Admin) Setup • Install through File Manager as “Skin Package” • Note: You can apply at “Host”, “Portal”, “Page”
Further Notes • You can write your own Skin Objects (e.g. replacement menu’s) • Container Packages are the content around a Module • You can write Skin’s as ASCX to skip conversion Process
More Information • Skinning Guide (/Documentation) • Skinning Contest (http://www.dotnetnuke.com/contest ) • Skin Object Example (/DesktopModules/PageTitle/) • Free/Buy Skins (http://www.dnnskins.com, http://www.xd.com.au, http://www.snowcovered.com )
What are Modules? • Written in .NET code, C#, VB.NET • Promotes code reuse. • Allows you to extend DotNetNuke. • Customizable (using the module container) • Compiled assemblies.
Develop Pack Deploy Create your Custom Functionality (Developer) Package Module for Installation (Developer) Install into Portal (Admin) Development Process Setup Initial Project Creation in Visual Studio (Developer)
Setup Initial Project Creation in Visual Studio (Developer) Setup • Create a new Class Project (/DesktopModules) • Compilation Path (../../bin/) • Name Project Appropriately (CompanyName.Module) • Reference DotNetNuke Project
Develop Create your Custom Functionality (Developer) Develop • Add User Controls to Project • User Controls must Implement “PortalModuleControl” • Develop as “Normal” • Register Controls through Portal for Debugging
Pack Package Module for Installation (Developer) Pack • Write Xml Manifest File (Skin.Xml) • Package into Zip File • Distribute
Deploy Install into Portal (Admin) Deploy • Install to your portal through “File Manager” • Add to any page (Module will appear in list now)
More Information • Module Developers Guide (/Documentation) • www.solpart.com (Menu Updates, Menu Module, and Skins) • www.smcculloch.net (Sample Modules/CodeSmith Templates) • www.dotnetnuke.dk (Tutorials/Dev Environment) • www.dnnjungle.com (Tutorials/VS.NET Enterprise Templates) • www.webhost4life.com / www.pureportals.com (DotNetNuke hosting / Free DotNetNuke Portals)
Conclusion • Open Source Application with Strong Development Community • Extensible through Provider Pattern • Customizable through Skinning & Modules • “Off the Shelf” Portal Application at the right price!
www.DotNetNuke.com Special Thanks to: Scott McCulloch DotNetNuke Core Team www.smcculloch.net smcculloch@iinet.net.au Jon Henning DotNetNuke Core Team www.solpart.com jhenning@solpart.com