Back To Home

Name: Ngày 8: Giới thiệu Helix Architecture

🧱 1. Helix là gì?

Helixkiến trúc tiêu chuẩn do Sitecore đề xuất nhằm giúp các nhà phát triển xây dựng, quản lý và mở rộng các dự án Sitecore theo một cách có tổ chức, dễ bảo trì, và dễ mở rộng.
Mục tiêu chính của Helix là đưa ra quy tắc và hướng dẫn chuẩn về việc:

  • Tổ chức cấu trúc thư mụcmodule code

  • Quản lý phụ thuộc giữa các module

  • Đảm bảo tính tái sử dụng và mở rộng lâu dài

Helix không phải là framework hay thư viện, mà là một tập hợp các nguyên tắc (principles)best practices khi phát triển Sitecore.


🧩 2. Lợi ích khi áp dụng Helix

  • 🔄 Tái sử dụng code: Module được tách biệt rõ ràng, dễ dàng dùng lại giữa các dự án.

  • 🧠 Dễ hiểu và bảo trì: Cấu trúc thư mục thống nhất giúp dev mới dễ nắm bắt.

  • ⚙️ Phát triển song song: Các team có thể làm việc trên các module độc lập.

  • 🧱 Tách biệt mối quan tâm (Separation of Concerns): Giúp dự án không bị phụ thuộc chéo và dễ mở rộng.


🧭 3. Cấu trúc 3 tầng chính trong Helix

Helix chia dự án thành 3 tầng (layers) chính:

🔹 1. Project Layer

  • Đây là lớp cao nhất, chứa các module cụ thể cho website hoặc site instance.

  • Chứa code tích hợp từ Feature và Foundation layer.

  • Ví dụ:

     
    /src/Project/MyWebsite/

🔹 2. Feature Layer

  • Chứa các tính năng cụ thể của site mà người dùng có thể thấy.

  • Ví dụ: Navigation, News, Search, Carousel, Hero Banner, Contact Form…

  • Mỗi tính năng là một module độc lập.

  • Ví dụ:

     
    /src/Feature/Navigation/
    /src/Feature/Search/

🔹 3. Foundation Layer

  • Lớp thấp nhất, chứa các chức năng cốt lõi, logic dùng chung cho toàn dự án.

  • Ví dụ: Serialization, Indexing, Data Access, Multisite, Dependency Injection…

  • Ví dụ:

     
    /src/Foundation/Serialization/
    /src/Foundation/Indexing/

⚙️ 4. Quy tắc phụ thuộc (Dependency Rule)

Helix định nghĩa rõ ràng về mối quan hệ giữa các tầng:

Layer Có thể phụ thuộc vào Không được phụ thuộc vào
Project Feature, Foundation Dự án khác
Feature Foundation Feature khác, Project
Foundation (Không phụ thuộc) Feature, Project

➡️ Điều này giúp module độc lập và dễ unit test hơn.


📂 5. Ví dụ cấu trúc thư mục Helix thực tế

 
/src
    /Foundation
               /Serialization
                             /Indexing
                                      /DependencyInjection
                                                                                            /Feature
                                                                                                         /Navigation
                                                                                                                          /Search
                                                                                                                                    /Hero 
                                                                                                                                            /News
                                                                                                                                                   /Project
                                                                                                                                                               /Website

Ngoài ra, Helix còn khuyến nghị chia thành các thư mục bổ trợ:

 
/src /tests /items /tools

🧰 6. Liên quan: Habitat – Dự án mẫu Helix

Habitatdự án mẫu chính thức của Sitecore thể hiện cách triển khai Helix trong thực tế.
Bạn có thể tham khảo tại:
👉 https://github.com/Sitecore/Habitat


💡 7. Kết luận

Helix không chỉ là cấu trúc thư mục, mà là triết lý phát triển phần mềm bền vững trong Sitecore.
Khi tuân thủ Helix:

  • Code dễ quản lý, dễ test, dễ mở rộng

  • Nhiều team có thể làm việc đồng thời

  • Dự án trở nên “enterprise-ready”


👉 Gợi ý cho bài tiếp theo:
🔸 “Phân biệt Feature và Foundation trong Helix”

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