Presentation is loading. Please wait.

Presentation is loading. Please wait.

DotNetNuke Extension Development Best Practices Mitchel Sellers Microsoft C# MVP, MCITP.

Similar presentations


Presentation on theme: "DotNetNuke Extension Development Best Practices Mitchel Sellers Microsoft C# MVP, MCITP."— Presentation transcript:

1 DotNetNuke Extension Development Best Practices Mitchel Sellers Microsoft C# MVP, MCITP

2 About Mitchel  DotNetNuke Core Team Member  Microsoft C# MVP  Microsoft Certified Professiona  CEO of IowaComputerGurus  Blog: http://www.mitchelsellers.comhttp://www.mitchelsellers.com  Modules: http://www.iowacomputergurus.comhttp://www.iowacomputergurus.com

3 Agenda  Source of Recommendations  Module Architecture/Packaging  Being a Good DNN Citizen o Basics o Controls o Entities o Interfaces o User Interface  Security & Data Isolation

4 Source of Recommendations  No Existing All Encompassing Best Practice Guide  DNN “Secure Module” guide o Covers mostly standard.NET guidance o Not specific enough, or current  ICG DNN Module Best Practices Guide o Proven practices used in our business o Based on concept of “playing well”

5 Module Architecture  Web Application Project (WAP) o Compiled Module o Non-Source  Module Folder Naming o Consistency o /DesktopModules is shared o /CompanyName/ModuleName  Manifest Naming

6 Module Packaging  Package for Minimum Supported DNN Version  Ensure.dnn file Limits Versions o 4.x Use [MatchRegex] o 5.x Use 05.01.00  Ensure Package Names Unique to Business  Ensure to register any dependencies o DNN 5.x class name, or package name o DNN 4.x class name

7 Being a Good DNN Citizen  Support {objectQualifier} and {databaseOwner}  Support localization of all static text elements  Use NVARCHAR for all database columns for international character support  Avoid modifying the web.config if possible

8 Good DNN Citizen (Controls)  Utilize common DNN Elements o LabelControl.ascx o TextEditor.ascx o UrlControl.ascx o SectionHead.ascx o DotNetNuke Web Controls Assembly (Pager, Profile Editor, etc.)  Provide a consistent, familiar process, improves usability

9 DNN Controls Examples

10 Good DNN Citizen (Entities)  Utilize DNN API Entities for Data Manipulation o DotNetNuke.Entities.Portals o DotNetNuke.Entities.Tabs o DotNetNuke.Entities.Users o DotNetNuke.Entities.Modules o DotNetNuke.Security.Roles  Reduces exposure to risks with DNN upgrades and breaking DB changes

11 Good DNN Citizen (Interfaces)  Implement Consistent Interfaces for Interaction o IPortable – Import/Export o ISearchable – Core Search Integration o IActionable – Module Actions o IUpgradable – Upgrading Modules  Not always the 100% solution o IPortable designed for module content only, but can be “modified”

12 Good Citizen (UI)  Ensure all ASP.NET Validators Have Validation Group  Use standard DotNetNuke CSS Classes o Normal – Regular Text o NormalRed – Error Text o SubHead – Labels o Head – Section heading

13 Security and Data Isolation  Properly Tie Data o PortalId, ModuleId, TabModuleId? Which one o Auto-Cleanup?  DotNetNuke PortalSecurity Object o Input Filter (FilterFlag.NoScripting, FilterFlag.NoMarkup) objSecurity.InputFilter(“TextToFilter”, FilterFlag.NoMarkup)  Respect Host File Types o This.PortalSettings.HostSettings("FileExtensions")

14 Resources/Contact  Email: msellers@iowacomputergurus.commsellers@iowacomputergurus.com  Blog: http://www.mitchelsellers.comhttp://www.mitchelsellers.com  Company: http://www.iowacomputergurus.comhttp://www.iowacomputergurus.com  ICG DNN Dev Best Practices: http://tinyurl.com/ICGDNNDevBP http://tinyurl.com/ICGDNNDevBP  DotNetNuke Securing Modules: http://tinyurl.com/DNNModSecurity http://tinyurl.com/DNNModSecurity


Download ppt "DotNetNuke Extension Development Best Practices Mitchel Sellers Microsoft C# MVP, MCITP."

Similar presentations


Ads by Google