Trong bài viết này, chúng ta sẽ tìm hiểu về kiến trúc của Entity Framework (EF). Tôi chỉ giải thích chi tiết ở mức vừa phải các thành phần nội dung trong EF để các bạn nắm được tổng quan về kiến trúc EF. Đối với các bạn mới học, việc hiểu và nắm bắt về kiến trúc EF rất quan trọng, giúp các bạn định hình được nội dung EF và các mối quan hệ giữa EF và các tầng khác trong ứng dụng Web. Lưu ý bài này sử dụng khá nhiều thuật ngữ, bạn phải tự tìm hiểu từng thuật ngữ nếu chưa rõ.
Mô hình kiến trúc Entity Framework
Mô hình kiến trúc của EF được mô tả đơn giản qua hình sau.
Application
Application (ứng dụng) là tầng chứa giao diện trang Web (HTML, CSS, Javascript, hình ảnh, …) và các đoạn mã nguồn (C#, VB) để tương tác dữ liệu với các tầng khác trong mô hình thông qua Object Services.
Object Services
Object Services (tạm dịch là các dịch vụ đối tượng) là tầng chứa quá trình tương tác giữa ứng dụng và database, hay nói cách khác nó là nơi chủ yếu để truy cập dữ liệu từ database và trả ngược kết quả về giao diện. Object Services cung cấp các tiện ích để truy vết các thay đổi và quản lý nhận dạng, đồng thời là các quan hệ và thay đổi ở database.
EntityClient Data Provider
Đây là tầng cung cấp các kết nối, diễn dịch các truy vấn thực thể thành truy vấn nguồn dữ liệu (chuyển L2E – LINQ to Entity hay các truy vấn thực thể SQL thành truy vấn SQL), trả về data reader để EF dùng chuyển dữ liệu thực thể thành các đối tượng. Phần này kết nối ADO.NET Data Providers để gửi hoặc lấy dữ liệu từ database. Tầng này hoàn toàn khác với EDM (Entity Data Model) khi thực thi các truy vấn tương tự như cách thực hiện ở ADO.NET Provider. EntityClient Data Provider sử dụng ESQL (Entity SQL), một ngôn ngữ truy vấn độc lập dạng văn bản, tương tự như SQL.
ADO.NET Data Providers
Đây là tầng thấp nhấp để dịch các truy vấn L2E (LINQ to Entity) thông qua cây lệnh thành các câu lệnh SQL và thực thi các câu lệnh trong hệ thống DBMS (database management system – hệ quản lý dữ liệu) nào đó. Tầng này kết với database sử dụng ADO.NET.
EDM (Entity Data Model)
EDM (tạm dịch là mô hình dữ liệu thực thể) chứa 3 phần chính: mô hình khái niệm (CSDL – Conceptual schema definition language), mô hình ánh xạ (MSL – mapping specification language) và mô hình lưu trữ (SSDL – store schema definition language). EDM khác với EntityClient Data Provider ở chỗ EDM sử dụng LINQ là ngôn ngữ truy vấn tương tác với database.
Lưu ý: Trong 1 dự án thực tế, bạn có thể sử dụng LINQ và ESQL (Entity SQL) cùng 1 lúc để đa dạng hóa cách tương tác cơ sở dữ liệu và tối ưu tốc độ lấy cơ sở dữ liệu trong 1 số trường hợp.
Mô hình khái niệm (CSDL – Conceptual schema definition language)
Mô hình khái niệm chứa các lớp mô hình và mối quan hệ giữa các lớp này. Điều này để độc lập với mô hình quan hệ các bảng trong database.
Mô hình lưu trữ (SSDL – store schema definition language)
Mô hình lưu trữ là 1 mô hình thiết kế database bao gồm các bảng, view, stored procedure (thủ tục), và mối quan hệ giữa chúng và các khóa. Mô hình này thể hiện gần giống mô hình quan hệ các bảng trong database.
Mô hình ánh xạ (MSL – mapping specification language)
Mô hình ánh xạ gồm thông tin về cách mô hình khái niệm được ánh xạ đến mô hình lưu trữ.
L2E (LINQ to Entities): là 1 ngôn ngữ truy vấn được dùng để viết các truy vấn trái với mô hình đối tượng. L2E trả về các thực thể, được định nghĩa bởi mô hình khái niệm. Chúng ta có thể dùng LINQ trong ngôn ngữ này.
Như vậy trong bài đã phác họa mô hình kiến trúc Entity Framework, đối với những bạn chưa hiểu được mô hình này, xin đừng lo lắng, bạn sẽ dần hiểu khi tham khảo các bài viết tiếp theo và qua quá trình thực hành thực tế trên các dự án Web có sử dụng Entity Framework.
- APA:
Dammio. (2016). [Entity Framework] Phần 2: Kiến trúc Entity Framework. https://www.dammio.com/2016/11/05/entity-framework-phan-2-kien-truc-entity-framework.
- BibTeX:
@misc{dammio,
author = {Dammio},
title = {[Entity Framework] Phần 2: Kiến trúc Entity Framework},
year = {2016},
url = {https://www.dammio.com/2016/11/05/entity-framework-phan-2-kien-truc-entity-framework},
urldate = {2024-10-11}
}