Architecture - vue d'ensemble
Principe general
StarterKit v2 est un framework CMS multi-clients pose sur Umbraco 6.2.6 / .NET Framework 4.8 (ASP.NET MVC 5 + WebForms). Une meme base de code produit, pour chaque client (skin), un site Umbraco autonome : la generation se fait au build (clone d'une installation Umbraco vierge + copie des assemblies + merge de la config client). Chaque client a sa propre base SQL Server (umbracoCMS_<skin>).
C'est une generation ancienne, anterieure aux StarterKit v3/v4. Specificites a garder en tete : Umbraco 6 (vieux backoffice, macros, UserControls WebForms), compilation frontend par Grunt + LESS, packages backoffice legacy installes manuellement, et un postBuildAction.ps1 historique trop complexe pour avoir ete migre.
Les trois solutions
| Solution | Contenu |
|---|---|
StarterKit_base.sln | Coeur du framework : tous les Nanoxi.App.* et Nanoxi.Content.* (~35 projets) |
StarterKit_shop.sln | E-commerce : tous les Nanoxi.Shop.* (compile uniquement si le shop est active pour le skin) |
StarterKit_test.sln | Projets de test (Nanoxi.Test.Console, .Library, .Runner, .Tests, .Web) |
A cela s'ajoute, par client, une solution src/Nanoxi.Customization/StarterKit_<skin>.sln (compilee par la cible Build-Customer si elle existe).
Modules framework (Nanoxi.App.*)
| Projet | Responsabilite |
|---|---|
| Nanoxi.App.Mvc | Coeur MVC : Controllers, ViewModels, Macros, Helpers, Views (Views_v1 et Views_v2), Scripts |
| Nanoxi.App.Api | API REST (Web API) : install/upgrade du StarterKit, articles, events, media, PDF, RSS, sitemap, membres, comptes |
| Nanoxi.App.Domain | Utilitaires de domaine (resolution de site/contexte) |
| Nanoxi.App.Definition | Constantes, alias, definitions partagees |
| Nanoxi.App.Library | Services et helpers partages |
| Nanoxi.App.Util | Utilitaires transverses |
| Nanoxi.App.Mail | Envoi d'emails |
| Nanoxi.App.Job | Jobs planifies (Quartz.NET) |
| Nanoxi.App.Handler | Handlers HTTP / evenements Umbraco |
| Nanoxi.App.Module | HttpModules |
| Nanoxi.App.Tree | Arbres backoffice custom |
| Nanoxi.App.I18n | Internationalisation / dictionnaire |
| Nanoxi.App.Validation | Validation |
| Nanoxi.App.UrlRewriting | Reecriture d'URL (canonical, redirections) |
| Nanoxi.App.LinkChecker | Verification de liens |
| Nanoxi.App.License | Licences (DLL aussi referencee par build.cake) |
| Nanoxi.App.Json | Helpers JSON |
| Nanoxi.App.Member.Data / .Mvc | Espace membre (modeles + MVC) |
| Nanoxi.App.ActiveDirectory | Integration AD |
| Nanoxi.App.Contour / Nanoxi.Contour.Providers / Nanoxi.Plugins.Contour | Extensions des formulaires Umbraco Contour |
| Nanoxi.App.Dashboard | Dashboards backoffice |
| Nanoxi.App.EmailMonitoring | Monitoring email |
| Nanoxi.App.InstallPackages | Installation de packages Umbraco |
| Nanoxi.App.WebForms | Composants WebForms (UserControls) |
| Nanoxi.App.Umbraco | Surcouche / patches Umbraco |
Modules de contenu (Nanoxi.Content.*)
| Projet | Responsabilite |
|---|---|
| Nanoxi.Content.Data | Modeles de donnees, document types (DocType/), media types, acces DB, helpers |
| Nanoxi.Content.Widgets | Tous les widgets (voir ../modules/widgets.md), classes BaseWidget / IWidget |
| Nanoxi.Content.Search | Recherche full-text (Examine / MediaProtect pour les PDF) |
| Nanoxi.Content.Syndication | Flux RSS / syndication |
| Nanoxi.Content.Backend | Personnalisation backoffice cote contenu |
| Nanoxi.Content.Extension | Extensions / helpers de contenu |
Modules e-commerce (Nanoxi.Shop.*)
Voir ../modules/shop.md. Bases sur uCommerce 7.3.1. Principaux : Shop.Mvc, Shop.UCommerce, Shop.Data, Shop.Stock, Shop.Print, Shop.Export/Import (consoles), Shop.TrackAndTrace, Shop.Member.*, Shop.Widget, Shop.Setting, Shop.WebForms, Shop.UCommerceWebForms.
Multi-tenant (skins)
Chaque client = un "skin". Au build, on selectionne un skin (--skin=<nom>, defaut vonroten) ; le pipeline assemble Umbraco + le coeur + (option) le shop + le code client + la config prodconfig/<skin>/ + le design design/v2/<skin>/. Detail : ../modules/multi-tenant-skins.md.
Flux de requete (rendu de page)
- Umbraco 6 route la requete vers un document type, rendu via une template Umbraco.
- Le rendu s'appuie sur des macros Umbraco (MVC partial view macros et/ou UserControls WebForms) et sur les widgets (
Nanoxi.Content.Widgets). - Les controllers MVC (
Nanoxi.App.Mvc/Controllers, SurfaceControllers) gerent les actions (formulaires, recherche, membres). - L'API Web (
Nanoxi.App.Api) expose les operations d'install/upgrade et les endpoints de contenu (articles, events, PDF, RSS, sitemap, comptes membres). - Le code client (
Nanoxi.Customization/<Skin>/) peut ajouter controllers, widgets, vues, evenements applicatifs propres.
Acces aux donnees
- Contenu editorial : API Umbraco 6 (Content/Media services, XML cache umbraco.config).
- Donnees custom : acces SQL via
Nanoxi.Content.Data(dossierDB/). - E-commerce : modele de donnees uCommerce (
Nanoxi.Shop.Data). - Logs : log4net (table en base + fichiers
App_Data).
Fichiers cles
| Sujet | Fichier |
|---|---|
| Orchestration build | build.cake |
| Post-compilation legacy | postBuildAction.ps1 |
| Version des assemblies | src/SharedAssemblyInfo.cs |
| API install/upgrade | src/Nanoxi.App.Api/Controllers/StarterKitController*.cs |
| Widgets (base) | src/Nanoxi.Content.Widgets/BaseWidget.cs, IWidget.cs |
| Metadonnees clients | doc/StarterKitv2_InfosTechniques.xlsx |
| Generation config client | toolsnanoxi/Nanoxi.Builder/ |

