Back To Home

Name: Ngày 10: Sitecore Project Structure trong Visual Studio

Sitecore Project Structure trong Visual Studio

(Cách tổ chức Solution Sitecore theo chuẩn Helix – dễ bảo trì, dễ mở rộng)


🏗️ 1. Tổng quan về cấu trúc dự án Sitecore trong Visual Studio

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


📁 2. Cấu trúc thư mục Helix trong Visual Studio

Một Solution Sitecore theo chuẩn Helix thường có dạng:

 
/src /Project /WebsiteA /WebsiteB /Feature /Navigation /Search /Article /Forms /Foundation /Serialization /Indexing /Multisite /DependencyInjection /tests /Project /Feature /Foundation /tools Unicorn / TDS / Dev scripts…

Cùng xem chi tiết từng layer.


🧱 3. Foundation Layer

📌 Vai trò:

  • 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.

📂 Cấu trúc ví dụ:

 
/src/Foundation/Indexing /code IndexingService.cs ContentSearchHelper.cs /serialization templates config Indexing.csproj

Thành phần thường nằm trong Foundation:

  • Dependency Injection (register services)

  • Indexing / Search

  • Serialization (Unicorn, TDS)

  • Extensions, pipelines

  • Multisite logic

  • Security helpers


🧩 4. Feature Layer

📌 Vai trò:

  • 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.

📂 Cấu trúc ví dụ:

 
/src/Feature/Navigation /code Controllers Models Services ViewModels /rendering Views /serialization Templates Renderings Navigation.csproj

Ví dụ Feature module:

  • Navigation

  • Carousel

  • Search

  • Blog / News

  • FAQ

  • Promo Banner

Feature chỉ phụ thuộc vào Foundation — không phụ thuộc Feature khác.


🚀 5. Project Layer

📌 Vai trò:

  • 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

📂 Cấu trúc ví dụ:

 
/src/Project/WebsiteA /code Controllers Models Layouts Settings /rendering Views Layouts /frontend css js WebsiteA.csproj

Gồm các thành phần:

  • 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.


🧩 6. Cấu trúc 1 project trong Visual Studio

Một project (ví dụ Feature/Search) thường có tree như sau:

 
Feature.Search ├── code │ ├── Controllers │ ├── Services │ ├── Models │ ├── ViewModels │ └── Repositories ├── rendering │ ├── Views │ └── Cshtml ├── serialization │ ├── Templates │ └── Rendering Items ├── Search.csproj

⚙️ 7. File cấu hình (Config patches)

Các module sẽ có file cấu hình dạng:

 
App_Config/Include/Feature/Feature.Search.config App_Config/Include/Foundation/Foundation.Indexing.config

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ý.


🛠️ 8. Công cụ tạo Project Structure tự động

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

🧠 9. Quy tắc vàng khi tổ chức Solution Sitecore

✔ Mỗi module = 1 project

Không gom code nhiều feature vào chung 1 project.

✔ Không phụ thuộc ngược layer

  • Foundation → không phụ thuộc ai

  • Feature → chỉ phụ thuộc Foundation

  • Project → phụ thuộc cả Feature & Foundation

✔ Code phải “module hóa”

Module Search không được chạm vào code của Navigation.

✔ Serialization phải đi theo module

Mỗi project phải có serialization riêng.


📝 10. Tóm tắt

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

Donald Trump

Để trở thành người chiến thắng, bạn cần biết khi nào là đủ. Đôi khi trong cuộc sống, bạn phải từ bỏ cuộc chiến và chuyển sang mục tiêu mới mang lại hiệu quả hơn

Related Post