This is a training session for a complete overview of DNN in 1-2 hours. It uses the 2illumin8 training model

Training Specs

Goals of this Training

  1. Ensure that all participants have a broad overview of all the topics relevant to DNN
  2. Provide a general understanding of how things tie together, and how certain decisions effect other decisions long-term
  3. Serves as a foundation for the participants to choose the next training priorities

Intended Audience

This training is targeted at people who have already had some experience with DNN at a technical level - for example Web Designers, Developers and IT-Operations. It's not suited for content-editors, as it's technical.

Training Script

DNN Basics

  1. Make sure all participants understand the 2illumin8 training format
  2. General understanding of Open-Source, DNN and the Community
    1. What is Open Source
    2. What is DNN
    3. History of DNN
    4. The Open-Source Communities in DNN
    5. Evoq vs. DNN
  3. DNN Architecture and Extensibility
    1. Platform vs. CMS
    2. Core Technologies: .net 4.7, IIS
    3. Data in SQL Server
    4. Extensibility Model
    5. Development model asp.net WebForms, moving towards JS/WebApi
  4. Playing around with DNN or running it for testing
    1. Quick-Install using nvQuickSite

Web Technology Basics

  1. html, css and web frameworks
  2. html5, svg, canvas, picture, WebComponent
  3. JavaScript and JS-frameworks
  4. Image formats from gif, jpeg, png, jpg2000, WebP
  5. WebFonts and icons
  6. WebApis and data formats like XML and JSON
  7. Devices, device-detection, responsive vs. adaptive

Network Basics

  1. HTTP, HTTP/2 and HTTPS
  2. SNI & ESNI
  3. Websockets
  4. CDN - public and private like CloudFlare, Akamai, etc.
  5. DNS and DNS over TLS, also TTL
  6. Important in near future: CSP (Content Security Policy)

Debugging F12 Basics

  1. Chrome Debugger - your power tool for fixing stuff
  2. Demo Network debugging
  3. Demo JavaScript debugging
  4. Device simulations

Content Management Basics

  1. DNN is not a CMS, but it can become one
  2. Content management is very different from data management
  3. Remember the editor is low-tech, keep things simple
  4. Always prepare for multi-language - every detail may or may not be translated
  5. Don't use the Text/Html, because it puts too much responsibility on editors
  6. Don't give the editors many different modules with different UX
  7. Do: Use Meta-Content and Meta-App modules like 2sxc or Open Content (demo 2sxc)
  8. Do: Use clear separation from content and presentation (design/layout)

Security and Performance Basics

  1. DNN Security Model: Users, Groups, Permissions, Permission-Types
  2. Authentication Model: based on standard asp.net Authentication, extensible
  3. User profiles (dynamic)
  4. Hacking and common security breaches
    Almost all security breaches have to do with 2 things: File-uploaders (like in a wysiwyg-editor or image gallery) or tricks to elevate security (register a normal user, make DNN think it's a super-user). Often 3rd-party extensions make this easier. 
  5. Performance basics
    Performance starts at the server with server-speed, data-caching, good code, etc. but the user performance often has more to do with networks (CDN), bad images and blocking scripts/css which degrades performance. Check out Google Page Speed.
    Often unexpected aspecs degrade performance, like icon-fonts or bad Bootstrap implementations. 

Lifecycle Basics

  1. Content Lifecycle - especially when multi-language
  2. System upgrades lifecycle
  3. Most problems come from using many 3rd party plugins
    1. Some are not updated and don't run on a newer version of DNN
    2. Many have breaking changes but must be updated
  4. Also big problem: Themes (previously Skins)
    1. DNN has built-in CSS
    2. If themes rely on this, upgrades cause a lot of problems
    3. Especially difficult with 3rd-party complex themes which were then customized

Skinning / Theming Basics

  1. Skins are some HTML (asp.net Web Control) files + JavaScript and CSS
  2. There are many philosophies to doing this (own CSS-styles, etc.)
  3. Themes can have various containers for layouts
  4. Best practice
    1. Always use Bootstrap 4 themes with SASS (industry standard, flexible)
    2. Use a lightweight theme and then customize
      Avoid complex themes with a lot of configuration, because there is always a feature missing, and introducing that is much more difficult with a complex theme.
    3. Use only 1 or 2 panes (Content, maybe Header) and let the content-management handle multi-columns etc.
    4. Don't use Containers (use an invisible container)
    5. Do: Use Client-Dependency Management for bundling JS/CSS

Component Extensions Basics

  1. Various Development Models
    1. asp.net Components
    2. DNN Razor / MVC Components
    3. JavaScript and SPA apps
    4. Generic Apps built with Meta-Modules 2sxc or Open-Content
  2. Various ways to get pre-built Extensions
    1. Open Source (hard to find, no central directory)
    2. Commercial + some OpenSource on the Store
    3. 2sxc Apps
  3. Build your own
    1. Build your own DNN Components (hard)
    2. Extend an existing 2sxc App (easy)
    3. Extend an open-source app (hard, very unstandardized)
    4. Build a brand new 2sxc App (easy to hard)
  4. JavaScript Frameworks
    1. jQuery
    2. Angular, React, Vue, etc.
  5. Tooling
    1. VS Code
    2. TypeScript
    3. NPM
    4. Github
    5. Webpack

General Best Practices...

  1. Always do regular updates and keep up to date with security issues
  2. Clearly separate responsibilities (SoC) for Dev, Design, Content, Operations
  3. Standardize everything
  4. Use industry best practices everywhere

...and Requirement for using these Best Practices

  1. Keep things as simple as possible for the right responsibilities
  2. Use as few 3rd party components as possible
  3. Use generic components, because there is always another requirement

Consistency, Standards, Simplicity, Flexibility...
...makes development, maintenance, upgrades and lifecycle much easier

SEO Basics

  1. Everything matters - URL, Titles, HTML
  2. Paradigma: mach es gut für Menschen - und hilf Google, das zu erkennen
  3. Page-Speed (Mobile-First Indexing)
  4. Links

Help & Documentation Basics

  1. DNN Community Documentation
  2. DNN Corp Documentation
  3. 2sxc Learning, Docs, Tutorials
  4. WIP Checklisten: DNN Community, and 2sxc, 2sxc Apps
  5. DNN Forum
  6. StackOverflow for DNN / DotNetNuke, 2sxc
  7. If you want to contribute join the Forums, Slack teams or weekly meetings

Future Topics

These topics are listed here for participants to choose what they would like to train / review next:

  1. Performance - Server, Client, Network, Mobile
  2. Installation and Operations
  3. Debugging problems on the Server
  4. Debugging problems on the Client
  5. Content Management
  6. Multi-Language
  7. Theme / Skin Development - Bootstrap, SASS, Webpack, etc.
  8. Extensions Development server-side
  9. 2sxc App-Development
  10. Creating Mobile WebApps with DNN
  11. Multi-Portal Content and User Sharing
  12. Web Farms