Các thành phần dịch vụ thường được cấu hình cụ thể cho một nhiệm vụ tổng thể, gây ra hạn chế khả năng tái sử dụng của chúng.
Tái sử dụng, các cross-entity được truy cập thông qua khả năng của các agnostic sub-controller, cho phép tập hợp con của thành phần cha được tạo ra một cách độc lập hơn.
Một dịch vụ Agnostic mới được tạo ra hoặc dịch vụ được gắn với một nhiệm vụ qua khả năng của Agnostic sub-controller
19 trang |
Chia sẻ: superlens | Lượt xem: 1662 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Dịch vụ phần mềm và tích hợp nghiệp vụ, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
|Dịch vụ phần mềm và tích hợp nghiệp vụChapter 19: Design pattern – Composition Implementation PatternsGV: TS. Vũ Thị Hương GiangNhóm 6: Nguyễn Văn Minh Phạm Anh ThắngVINNO – Software Solution*Agnostic Sub-Controller patternProblemCác thành phần dịch vụ thường được cấu hình cụ thể cho một nhiệm vụ tổng thể, gây ra hạn chế khả năng tái sử dụng của chúng.SolutionTái sử dụng, các cross-entity được truy cập thông qua khả năng của các agnostic sub-controller, cho phép tập hợp con của thành phần cha được tạo ra một cách độc lập hơn.ApplicationMột dịch vụ Agnostic mới được tạo ra hoặc dịch vụ được gắn với một nhiệm vụ qua khả năng của Agnostic sub-controllerImpactViệc bổ sung các cross- entity làm các dịch vụ agnostic tăng độ phức tạp và của các thành phần và sự trừu tượng của các Agnostic cross-entity có thể dẫn tới vi phạm các mô hình và thiết kế tiêu chuẩn được thiết lập bởi các lớp dịch vụ (Service layer)PrinciplesArchitectureService Reusability(sự tái sử dụng các thành phần) Service Composablity (do nhu cầu của quá trình phát triển ngày càng mở rộng, các dịch vụ được thiết kế phải sẵn sàng tham gia các thành phần khi cần)Composition, ServiceVINNO – Software Solution*Agnostic Sub-Controller patternVINNO – Software Solution*Agnostic Sub-Controller patternVINNO – Software Solution*Composition Autonomy patternProblemCác dịch vụ thành phần thường mất đi quyền tự điều khiển khi ủy quyền các nhiệm vụ xử lý cho các dịch vụ tổng thể, một trong số đó đôi khi được chia sẻ qua nhiều thành phầnSolutionTất cả những sự tham gia thành phần có thể được cô lập để tối đa hóa quyền tự chủ của các thành phầnApplicationCác dịch vụ thành viên agnostic của một thành phần được thực hiện trong một môi trường bị cô lập cùng với các dịch vụ công việcImpactViệc tăng tính tự chủ trong một cấp độ thành phần dẫn tới kết quả gia tăng chi phí cơ sở hạ tầng và trách nhiệm của tổ chức.PrinciplesArchitectureService Reusability(sự tái sử dụng các thành phần) Serivce Composablity (do nhu cầu của quá trình phát triển ngày càng mở rộng, các dịch vụ được thiết kế phải sẵn sàng tham gia các thành phần khi cần); Service autonomy.CompositionVINNO – Software Solution*Composition Autonomy patternTH trên các Service Area gây ra nút thắt cổ chai vì các dịch vụ này đc truy xuất nhiều lần khi hệ thống lớn và mở rộng. VINNO – Software Solution*Composition Autonomy patternGiải pháp là đưa các service này đặt trong 1 máy chủ vật lý riêng để tăng khả năng độc lập và tự chủVINNO – Software Solution*Atomic Service Transaction patternProblemKhi các dịch vụ trong môi trường thực thi, một dịch vụ con thất bại dẫn đến nhiệm vụ tổng thể của dịch vụ cha thất bại theo. Hành động thực hiện tại thời điểm đó có thể không toàn vẹn và gây nguy hai đến hệ thốngSolutionCác hoạt động dịch vụ có thể được bọc trong một transaction với tính năng rollback.ApplicationMột hệ thống quản lý giao dịch được thực hiện như một phần của kiến trúc và sau đó được sử dụng bởi những thành phần dịch vụ đòi hỏi tính năng rollbackImpactCác dịch vụ tiêu tốn nhiều bộ nhớ hơn vì cần lưu giữ trạng thái ban đầu trước những yêu cầu rollback hoặc cập nhật sự thay đổiPrinciplesArchitectureService statelessness ( ko lưu giữ bất cứ thứ gì của lần gọi trước và cũng không biết gì về những gì client thực hiện )Inventory, CompositionVINNO – Software Solution*Atomic Service Transaction patternCung cấp các chức năng rollback cần thiếtVINNO – Software Solution*Atomic Service Transaction patternCung cấp các chức năng rollback cần thiếtVINNO – Software Solution*Compensating Service Transaction pattern ProblemCác trường hợp ngoại lệ trong thời gian chạy không kiểm soát được có thể gây nguy hiểm cho một thành phần dịch vụ, do dó sử dụng transaction có thể nắm giữ quá nhiều tài nguyên, do đó ảnh hưởng tiêu cực đến hiệu suất và khả năng mở rộng của dịch vụSolutionCompensating routines được giới thiệu, cho phép giải quyết các ngoại lệ thời gian chạy mà không chiếm giữ tài nguyên.ApplicationCompensation logic được định nghĩa trước và được định nghĩa như một phần của các thành phần cha với việc cung cấp tính năng "undo".ImpactViệc sử dụng Compensation logic dẫn tới một kết quả mở và khác nhau về hiệu quả thực tếPrinciplesArchitectureService lose coupling ( kết nối lỏng lẻo giữa các dịch vụ )Inventory, CompositionVINNO – Software Solution*Atomic Service Transaction patternCung cấp các chức năng "undo" nhằm khôi phục lại dữ liệu đã thay đổi.VINNO – Software Solution*Atomic Service Transaction patternCung cấp các chức năng "undo" nhằm khôi phục lại dữ liệu đã thay đổi.VINNO – Software Solution*Application?VINNO – Software Solution*Dịch vụ được truy xuất nhiều lần khi hệ thống lớn và mở rộng. Giải pháp là đưa các service này đặt trong 1 máy chủ vật lý riêng để tăng khả năng độc lập và tự chủComposition Autonomy pattern?CheckingCoursePrerequisitesVerifyingStudentCalculatingAmountPaySubmitRegistrationRecordRegistrationCheckingPaymentCourse enrollment DBStudent records DB Billing DB VINNO – Software Solution* transaction Atomic Service Transaction pattern?SubmitRegistrationRecordRegistrationCourse enrollment DBStudent records DB rollbackFailLOCKLOCKVINNO – Software Solution* transaction boundaryCompensating Service Transaction pattern ?SubmitRegistrationRecordRegistrationCourse enrollment DBStudent records DB undoFailUNLOCKUNLOCKCheckingCoursePrerequisitesVerifyingStudentPing-G – Software Solution*Kết thúcXin chân thành cảm ơn !VINNO – Software Solution*Unlock các database khi transactionAtomic Service Transaction pattern?CheckingCoursePrerequisitesVerifyingStudentRecordRegistrationCourse enrollment DBStudent records DB SubmitRegistrationUNLOCKUNLOCK