Skip to content

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

SolutionContenu
StarterKit_base.slnCoeur du framework : tous les Nanoxi.App.* et Nanoxi.Content.* (~35 projets)
StarterKit_shop.slnE-commerce : tous les Nanoxi.Shop.* (compile uniquement si le shop est active pour le skin)
StarterKit_test.slnProjets 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.*)

ProjetResponsabilite
Nanoxi.App.MvcCoeur MVC : Controllers, ViewModels, Macros, Helpers, Views (Views_v1 et Views_v2), Scripts
Nanoxi.App.ApiAPI REST (Web API) : install/upgrade du StarterKit, articles, events, media, PDF, RSS, sitemap, membres, comptes
Nanoxi.App.DomainUtilitaires de domaine (resolution de site/contexte)
Nanoxi.App.DefinitionConstantes, alias, definitions partagees
Nanoxi.App.LibraryServices et helpers partages
Nanoxi.App.UtilUtilitaires transverses
Nanoxi.App.MailEnvoi d'emails
Nanoxi.App.JobJobs planifies (Quartz.NET)
Nanoxi.App.HandlerHandlers HTTP / evenements Umbraco
Nanoxi.App.ModuleHttpModules
Nanoxi.App.TreeArbres backoffice custom
Nanoxi.App.I18nInternationalisation / dictionnaire
Nanoxi.App.ValidationValidation
Nanoxi.App.UrlRewritingReecriture d'URL (canonical, redirections)
Nanoxi.App.LinkCheckerVerification de liens
Nanoxi.App.LicenseLicences (DLL aussi referencee par build.cake)
Nanoxi.App.JsonHelpers JSON
Nanoxi.App.Member.Data / .MvcEspace membre (modeles + MVC)
Nanoxi.App.ActiveDirectoryIntegration AD
Nanoxi.App.Contour / Nanoxi.Contour.Providers / Nanoxi.Plugins.ContourExtensions des formulaires Umbraco Contour
Nanoxi.App.DashboardDashboards backoffice
Nanoxi.App.EmailMonitoringMonitoring email
Nanoxi.App.InstallPackagesInstallation de packages Umbraco
Nanoxi.App.WebFormsComposants WebForms (UserControls)
Nanoxi.App.UmbracoSurcouche / patches Umbraco

Modules de contenu (Nanoxi.Content.*)

ProjetResponsabilite
Nanoxi.Content.DataModeles de donnees, document types (DocType/), media types, acces DB, helpers
Nanoxi.Content.WidgetsTous les widgets (voir ../modules/widgets.md), classes BaseWidget / IWidget
Nanoxi.Content.SearchRecherche full-text (Examine / MediaProtect pour les PDF)
Nanoxi.Content.SyndicationFlux RSS / syndication
Nanoxi.Content.BackendPersonnalisation backoffice cote contenu
Nanoxi.Content.ExtensionExtensions / 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)

  1. Umbraco 6 route la requete vers un document type, rendu via une template Umbraco.
  2. Le rendu s'appuie sur des macros Umbraco (MVC partial view macros et/ou UserControls WebForms) et sur les widgets (Nanoxi.Content.Widgets).
  3. Les controllers MVC (Nanoxi.App.Mvc/Controllers, SurfaceControllers) gerent les actions (formulaires, recherche, membres).
  4. L'API Web (Nanoxi.App.Api) expose les operations d'install/upgrade et les endpoints de contenu (articles, events, PDF, RSS, sitemap, comptes membres).
  5. 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 (dossier DB/).
  • E-commerce : modele de donnees uCommerce (Nanoxi.Shop.Data).
  • Logs : log4net (table en base + fichiers App_Data).

Fichiers cles

SujetFichier
Orchestration buildbuild.cake
Post-compilation legacypostBuildAction.ps1
Version des assembliessrc/SharedAssemblyInfo.cs
API install/upgradesrc/Nanoxi.App.Api/Controllers/StarterKitController*.cs
Widgets (base)src/Nanoxi.Content.Widgets/BaseWidget.cs, IWidget.cs
Metadonnees clientsdoc/StarterKitv2_InfosTechniques.xlsx
Generation config clienttoolsnanoxi/Nanoxi.Builder/

Contributors

No contributors

Changelog

No recent changes