Table of contents

Kiến trúc

Giới thiệu

Domain-Driven Design là một trong phương thức tiếp cận trong bài toán phân tích với cách tân và phát triển ứng dụng lúc giải quyết và xử lý đầy đủ vụ việc nghiệp vụ phức hợp. Ý tưởng cơ phiên bản của phương pháp này là vấn đề chế tạo sự kết nối chặt chẽ thân xây đắp ứng dụng và quy mô nhiệm vụ trong veo vòng đời cách tân và phát triển sản phẩm. Để làm cho sự liên kết này, DDD đưa ra 3 yên cầu cơ bản:

Trọng chổ chính giữa của dự án công trình là rất nhiều qui định và lô ghích nhiệm vụ Thiết kế phần mềm cần được đề đạt đúng mực mô hình nhiệm vụ Sự cộng tác tiếp tục thân kĩ sư và Chuyên Viên nghiệp vụ

Kết trái của câu hỏi phân tích hệ thống dựa trên phương pháp DDD, phối hợp cùng quy mô bản vẽ xây dựng Microservices giúp chúng ta tổ chức triển khai và cải cách và phát triển mọi microservices giải quyết và xử lý các vụ việc nghiệp vụ một phương pháp tương ứng. Hoạt cồn phối kết hợp này được phản ánh qua 1 công đoạn bao gồm các bước:

Phân tích nghiệp vụ - tên miền Model Định nghĩa ngữ chình họa - bounded context Định nghĩa đối tượng (entities), tập vừa lòng (aggregate) cùng dịch vụ (service) Xác định microservices đề nghị xây cất

*

Khái niệm

DDD được người sáng tác Eric Evan khuyến nghị vào vào khoảng thời gian 2003 trong một cuốn sách ứng dụng khét tiếng “Domain Driven Design - Tackling complexity in the heart of software”. Phương thơm pháp này nhanh lẹ nhận được sự chào đón, trở nên tân tiến từ bỏ cộng cồn cùng được áp dụng sâu rộng lớn vào quá trình phát triển ứng dụng thời buổi này.

Bạn đang xem: Domain driven design là gì

Để giới thiệu những khái niệm cơ bạn dạng trong DDD, bọn họ lấy ví dụ về trở nên tân tiến khối hệ thống thống trị vận tải đường bộ theo quy mô Uber. Trong quy trình kiến thiết với thiết kế hệ thống, đều kĩ sư ứng dụng phối hợp ngặt nghèo cùng với phần lớn Chuyên Viên nghiệp vụ - tên miền experts. Việc hiệp thương thông tin giữa những member này yêu cầu dựa trên một ngữ điệu mô tả đúng chuẩn những thuật ngữ, sự việc hoặc quá trình cần giải quyết - ubiqitous language.

Quá trình hợp tác liên tục làm cho một quy mô nhiệm vụ - domain model - một hiệ tượng trừu tượng hoá trường đoản cú quy mô sale doanh nghiệp lớn - business domain. lúc nhiệm vụ phức hợp, quy mô này tiếp tục được phân phân thành những yếu tố nhiệm vụ bé dại hơn, bao gồm:

Chip Core Domains - nhiệm vụ cốt yếu, cơ bản tuyệt nhất. Sub Domains - nhiệm vụ tất cả đặc điểm phụ trợ

Điểm quan trọng đặc biệt của việc phân tách tách này là tạo nên được rất nhiều phạm vi ngữ cảnh - bounded context, góp xác định rõ ma lanh giới thân các nhiệm vụ, bên cạnh đó mô tả được đúng đắn ý nghĩa sâu sắc của rất nhiều thực thể - entity trong mỗi phạm vi đó.

Trong ví dụ về hệ thống làm chủ vận tải, họ bao gồm yếu tố nghiệp vụ:

Khách sản phẩm - Customer Tài xế - Driver Vận chuyển - Trip Management Tkhô nóng toán - Payment Hoá solo - Invoice Trợ giúp người tiêu dùng - call Center Bản đồ - Location Khuyến mại, kinh doanh - Loyalty Báo cáo sự ráng - Reporting

Các thực thể vào ngữ chình họa Trip Management:

Chuyến đi - Trip Đánh giá chỉ unique giao hàng - Rating

*

Việc phân chia phạm vi những ngữ chình họa cũng góp bớt tphát âm sự phức tạp không quan trọng khi mô hình hoá các thực thể vào thực tiễn.

ví dụ như về đối tượng người sử dụng người dùng: vào ngữ chình họa người sử dụng, khối hệ thống yêu cầu gìn giữ rất nhiều biết tin về khách hàng, bao gồm tài liệu cá nhân, lịch sử chuyến du ngoạn. Tuy nhiên, trong ngữ cảnh chuyển vận, bọn họ chỉ cần quan tâm mang lại khách hàng cùng với đa số báo cáo căn phiên bản nlỗi tiếng tăm, số điện thoại liên lạc, tuyến phố hưởng thụ.

Trong một số trường đúng theo, những entities ko trường tồn tự do và có vòng đời phụ thuộc vào vào trong 1 tập vừa lòng - aggregate. lấy một ví dụ Lúc vấn đề đánh giá unique phục vụ luôn luôn phụ thuộc vào một chuyến du ngoạn, và vào trường phù hợp này thực thể biễu diễn từng chuyến đi được Điện thoại tư vấn là root entity.

Xem thêm: Ex Là Gì Trên Facebook? Có Phải Exciter Và Ex Có Ý Nghĩa Như Thế Nào

Entity được có mang là những đối tượng mang dữ liệu cùng với khả năng định danh tốt nhất. Bên cạnh Entity, họ cũng áp dụng khái niệm value object nhằm định nghĩa các đối tượng người sử dụng đựng tài liệu đối chọi thuần. lấy ví dụ như, trong ngữ chình ảnh Invoice, hoá đối chọi là hầu hết thực thể chứa quý giá identity giúp bọn họ gồm sự rành mạch về tính chất độc nhất. Mỗi hoá đối kháng cũng bao hàm đối tượng - value object đựng công bố về thời gian đi, quãng đường. Những đối tượng người sử dụng này chỉ cất quý giá công bố đơn thuần với ko cần mang tính hóa học độc nhất vô nhị.

Trong cải cách và phát triển ứng dụng, có nhiều technology cửa hàng tài liệu khác biệt để lưu trữ phần đông đối tượng người dùng entity xuất xắc aggregate. Tuy nhiên, câu hỏi truy vấn những đối tượng người dùng ban bố này thường xuyên được “đóng góp gói” sang một lớp trung gian - repository. Việc gói gọn này sút tính sự dựa vào của quy mô nhiệm vụ vào công nghệ lưu trữ, cùng nâng cấp tài năng nâng cấp, sửa chữa technology lúc cần thiết.

Bên cạnh các loại hình đối tượng người dùng liên quan mang lại dữ liệu và truy vấn, chúng ta cũng có thể có thêm 1 tư tưởng không giống về services. Services là đều quá trình vận động nghiệp vụ, chính sách công ty etc…tương quan đến những đối tượng người sử dụng không giống nhau. Vì ý nghĩa kia, những đối tượng service tất cả đặc thù stateless - những vận động service thực hiện với không giữ lưu giữ bất cứ trạng thái nào.

Với ngữ cảnh Invoice trong ví dụ trên:

Entity Invoice được truy nã vấn qua repository IInvoiceRepository PaymentService cung ứng cách tiến hành tkhô giòn tân oán, thực hiện IInvoiceRepository để tạo nên hoá đối chọi lúc Việc tkhô giòn tân oán thành công

*

Kiến trúc

Sau Khi phân tách bóc những phạm vi ngữ chình họa, khẳng định những đối tượng người tiêu dùng nhiệm vụ phía bên trong bọn chúng, bước tiếp theo sau là việc khái niệm và tạo phần lớn microservices tương xứng.

Xem thêm: Hypertrophy Là Gì ? Cách Áp Dụng Hypertrophy Trong Gym Hypertrophy Là Gì

Dựa trên qui định của cách thức DDD, nhằm tập trung vào bài toán gây ra mô hình nghiệp vụ mặt khác bớt thiểu sự phụ thuộc vào đối với gần như yếu tố khác của vận dụng, từng services được chia thành những lớp -layers.

Tác trả Eric Evan đề xuất bản vẽ xây dựng multi-layers bao gồm:

Domain Layer Application Layer Infrastructure Layer

Domain Layer

Là nhân tố quan trọng đặc biệt tốt nhất trong phong cách xây dựng bởi vấn đề đóng gói các qui tắc và mô hình nghiệp vụ. Tầng nhiệm vụ này còn có những quánh điểm:

Biểu diễn mô hình nhiệm vụ qua entities dưới hiệ tượng các lớp POJO <*> Kiểm thẩm tra với thể thực trạng thái chuyển động nghiệp vụ Sử dụng Domain Event để thông tin cho những module không giống lúc 1 sự khiếu nại xảy ra.
Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *