(Cách tổ chức Solution Sitecore theo chuẩn Helix – dễ bảo trì, dễ mở rộng)
Một dự án Sitecore hiện đại thường được tổ chức theo Helix Architecture, chia thành các layer:
Project Layer
Feature Layer
Foundation Layer
Cấu trúc này giúp:
Code phân tách rõ ràng theo module
Tái sử dụng và mở rộng dễ dàng
Tránh phụ thuộc vòng (circular dependency)
Dễ làm việc với nhiều team và nhiều website
Một Solution Sitecore theo chuẩn Helix thường có dạng:
Cùng xem chi tiết từng layer.
Chứa logic nền tảng chung, không liên quan trực tiếp đến hiển thị.
Cung cấp API/service cho các Feature.
Dependency Injection (register services)
Indexing / Search
Serialization (Unicorn, TDS)
Extensions, pipelines
Multisite logic
Security helpers
Chứa các tính năng nghiệp vụ có thể nhìn thấy trên website.
Độc lập, có thể tái sử dụng.
Navigation
Carousel
Search
Blog / News
FAQ
Promo Banner
Feature chỉ phụ thuộc vào Foundation — không phụ thuộc Feature khác.
Kết hợp Feature + Foundation để build website hoàn chỉnh.
Chứa:
Layouts
Page design (Renderings, Partial Designs)
Site-specific logic, settings
Theme/CSS/JS dành riêng cho website
Layout chính (_MainLayout.cshtml)
View Rendering
Site Settings
Media items của website
Site config (WebsiteA.config)
Project layer không chứa business logic, mà chỉ “lắp ghép” các feature lại thành website.
Một project (ví dụ Feature/Search) thường có tree như sau:
Các module sẽ có file cấu hình dạng:
Nguyên tắc:
Foundation config load trước Feature
Feature load trước Project
Nhờ đó tránh lỗi pipeline/DI chưa đăng ký.
Một số tool hỗ trợ tạo cấu trúc Helix tự động:
| Tool | Mô tả |
|---|---|
| Sitecore Helix Templates (VSIX) | Tạo Project theo Helix tự động |
| Sitecore TDS | Serialization + project generation |
| Sitecore Habitat | Dự án mẫu để tham khảo |
| Helix CLI | Tạo module theo command line |
| Unicorn | Serialization |
Không gom code nhiều feature vào chung 1 project.
Foundation → không phụ thuộc ai
Feature → chỉ phụ thuộc Foundation
Project → phụ thuộc cả Feature & Foundation
Module Search không được chạm vào code của Navigation.
Mỗi project phải có serialization riêng.
| Layer | Vai trò | Chứa gì? |
|---|---|---|
| Foundation | Hạ tầng, service dùng chung | DI, indexing, helpers, pipelines |
| Feature | Chức năng nghiệp vụ | Navigation, Search, Banner… |
| Project | Lắp ghép website | Layout, theme, settings |
Giữ cấu trúc Helix chuẩn giúp solution Sitecore:
✔ Dễ mở rộng
✔ Dễ bảo trì
✔ Dễ cho nhiều team cùng phát triển
✔ Code rõ ràng, tránh xung đột