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
- Ensure that all participants have a broad overview of all the topics relevant to DNN
- Provide a general understanding of how things tie together, and how certain decisions effect other decisions long-term
- 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
- Make sure all participants understand the 2illumin8 training format
- General understanding of Open-Source, DNN and the Community
- What is Open Source
- What is DNN
- History of DNN
- The Open-Source Communities in DNN
- Evoq vs. DNN
- DNN Architecture and Extensibility
- Platform vs. CMS
- Core Technologies: .net 4.7, IIS
- Data in SQL Server
- Extensibility Model
- Development model asp.net WebForms, moving towards JS/WebApi
- Playing around with DNN or running it for testing
- Quick-Install using nvQuickSite
Web Technology Basics
- html, css and web frameworks
- html5, svg, canvas, picture, WebComponent
- JavaScript and JS-frameworks
- Image formats from gif, jpeg, png, jpg2000, WebP
- WebFonts and icons
- WebApis and data formats like XML and JSON
- Devices, device-detection, responsive vs. adaptive
Network Basics
- HTTP, HTTP/2 and HTTPS
- SNI & ESNI
- Websockets
- CDN - public and private like CloudFlare, Akamai, etc.
- DNS and DNS over TLS, also TTL
- Important in near future: CSP (Content Security Policy)
Debugging F12 Basics
- Chrome Debugger - your power tool for fixing stuff
- Demo Network debugging
- Demo JavaScript debugging
- Device simulations
Content Management Basics
- DNN is not a CMS, but it can become one
- Content management is very different from data management
- Remember the editor is low-tech, keep things simple
- Always prepare for multi-language - every detail may or may not be translated
- Don't use the Text/Html, because it puts too much responsibility on editors
- Don't give the editors many different modules with different UX
- Do: Use Meta-Content and Meta-App modules like 2sxc or Open Content (demo 2sxc)
- Do: Use clear separation from content and presentation (design/layout)
Security and Performance Basics
- DNN Security Model: Users, Groups, Permissions, Permission-Types
- Authentication Model: based on standard asp.net Authentication, extensible
- User profiles (dynamic)
- 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.
- 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
- Content Lifecycle - especially when multi-language
- System upgrades lifecycle
- Most problems come from using many 3rd party plugins
- Some are not updated and don't run on a newer version of DNN
- Many have breaking changes but must be updated
- Also big problem: Themes (previously Skins)
- DNN has built-in CSS
- If themes rely on this, upgrades cause a lot of problems
- Especially difficult with 3rd-party complex themes which were then customized
Skinning / Theming Basics
- Skins are some HTML (asp.net Web Control) files + JavaScript and CSS
- There are many philosophies to doing this (own CSS-styles, etc.)
- Themes can have various containers for layouts
- Best practice
- Always use Bootstrap 4 themes with SASS (industry standard, flexible)
- 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.
- Use only 1 or 2 panes (Content, maybe Header) and let the content-management handle multi-columns etc.
- Don't use Containers (use an invisible container)
- Do: Use Client-Dependency Management for bundling JS/CSS
Component Extensions Basics
- Various Development Models
- asp.net Components
- DNN Razor / MVC Components
- JavaScript and SPA apps
- Generic Apps built with Meta-Modules 2sxc or Open-Content
- Various ways to get pre-built Extensions
- Open Source (hard to find, no central directory)
- Commercial + some OpenSource on the Store
- 2sxc Apps
- Build your own
- Build your own DNN Components (hard)
- Extend an existing 2sxc App (easy)
- Extend an open-source app (hard, very unstandardized)
- Build a brand new 2sxc App (easy to hard)
- JavaScript Frameworks
- jQuery
- Angular, React, Vue, etc.
- Tooling
- VS Code
- TypeScript
- NPM
- Github
- Webpack
General Best Practices...
- Always do regular updates and keep up to date with security issues
- Clearly separate responsibilities (SoC) for Dev, Design, Content, Operations
- Standardize everything
- Use industry best practices everywhere
...and Requirement for using these Best Practices
- Keep things as simple as possible for the right responsibilities
- Use as few 3rd party components as possible
- Use generic components, because there is always another requirement
Consistency, Standards, Simplicity, Flexibility...
...makes development, maintenance, upgrades and lifecycle much easier
SEO Basics
- Everything matters - URL, Titles, HTML
- Paradigma: mach es gut für Menschen - und hilf Google, das zu erkennen
- Page-Speed (Mobile-First Indexing)
- Links
Help & Documentation Basics
- DNN Community Documentation
- DNN Corp Documentation
- 2sxc Learning, Docs, Tutorials
- WIP Checklisten: DNN Community, and 2sxc, 2sxc Apps
- DNN Forum
- StackOverflow for DNN / DotNetNuke, 2sxc
- 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:
- Performance - Server, Client, Network, Mobile
- Installation and Operations
- Debugging problems on the Server
- Debugging problems on the Client
- Content Management
- Multi-Language
- Theme / Skin Development - Bootstrap, SASS, Webpack, etc.
- Extensions Development server-side
- 2sxc App-Development
- Creating Mobile WebApps with DNN
- Multi-Portal Content and User Sharing
- Web Farms