Triển khai Dự án Logic - Công nghệ
Chuyển đến nội dung

Thực hiện logic thiết kế

  • qua

quảng cáo

Triết lý tiếp cận thực hiện

cách tiếp cận thác nước

Cách tiếp cận thác nước để triển khai ứng dụng yêu cầu nhà thiết kế tham khảo ý kiến của một hoặc nhiều đại diện của tổ chức người dùng cuối và viết ra tất cả các thông số kỹ thuật của ứng dụng. Thông thường, thông số kỹ thuật có trong một bộ tài liệu chức năng hoặc trường hợp sử dụng, được viết theo cách mà người dùng cuối có thể dễ dàng đọc và hiểu tài liệu.

Người dùng cuối ký các tài liệu này và các tài liệu sau đó được nhóm thiết kế kỹ thuật thiết kế ứng dụng thu thập, tạo ra các tạo phẩm khác nhau như sơ đồ mô hình lớp, sơ đồ trạng thái, sơ đồ hoạt động và mô hình dữ liệu. Mục tiêu của giai đoạn này là viết mọi thứ chi tiết đến mức nhà phát triển sẽ không gặp khó khăn khi tạo mã cần thiết. Có một sự bàn giao chính thức của thiết kế cho nhóm phát triển và cho nhóm thử nghiệm. Sau khi bàn giao, nhóm phát triển bắt đầu viết mã và nhóm thử nghiệm sử dụng thiết kế kỹ thuật kết hợp với các trường hợp sử dụng để tạo các trường hợp thử nghiệm và kịch bản thử nghiệm.

Sau khi nhóm phát triển mã hóa xong, mã được bàn giao cho nhóm thử nghiệm. Nhóm kiểm thử thực hiện các kiểm thử mà họ đã thiết kế dựa trên các yêu cầu và thiết kế chi tiết. Mọi vấn đề sẽ được nhóm phát triển khắc phục. Sau khi quá trình thử nghiệm và sửa lỗi hoàn tất, ứng dụng sẽ được gửi tới người dùng cuối để thử nghiệm chấp nhận. Người dùng cuối thực hiện kiểm tra lần cuối để xem ứng dụng có tuân thủ các yêu cầu ban đầu hay không. Nếu được chấp thuận, anh ta phê duyệt thành phẩm và dự án hoàn thành. Sau khi nhóm phát triển mã hóa xong, mã được bàn giao cho nhóm thử nghiệm.

Nhóm kiểm thử thực hiện các kiểm thử mà họ đã thiết kế dựa trên các yêu cầu và thiết kế chi tiết. Mọi vấn đề sẽ được nhóm phát triển khắc phục. Sau khi quá trình thử nghiệm và sửa lỗi hoàn tất, ứng dụng sẽ được gửi tới người dùng cuối để thử nghiệm chấp nhận. Người dùng cuối thực hiện kiểm tra lần cuối để xem ứng dụng có tuân thủ các yêu cầu ban đầu hay không. Nếu được chấp thuận, anh ta phê duyệt thành phẩm và dự án hoàn thành. Sau khi nhóm phát triển mã hóa xong, mã được bàn giao cho nhóm thử nghiệm. Nhóm kiểm thử thực hiện các kiểm thử mà họ đã thiết kế dựa trên các yêu cầu và thiết kế chi tiết.

 Mọi vấn đề sẽ được nhóm phát triển khắc phục. Sau khi quá trình thử nghiệm và sửa lỗi hoàn tất, ứng dụng sẽ được gửi tới người dùng cuối để thử nghiệm chấp nhận. Người dùng cuối thực hiện kiểm tra lần cuối để xem ứng dụng có tuân thủ các yêu cầu ban đầu hay không. Nếu được chấp thuận, anh ta phê duyệt thành phẩm và dự án hoàn thành.

Người dùng cuối thực hiện kiểm tra lần cuối để xem ứng dụng có tuân thủ các yêu cầu ban đầu hay không. Nếu được chấp thuận, anh ta phê duyệt thành phẩm và dự án hoàn thành. Người dùng cuối thực hiện kiểm tra lần cuối để xem ứng dụng có tuân thủ các yêu cầu ban đầu hay không. Nếu được chấp thuận, anh ta phê duyệt thành phẩm và dự án hoàn thành.

Một dự án có thể có nhiều hoặc ít giai đoạn khi sử dụng phương pháp thác nước, nhưng đặc điểm chính là bắt đầu và kết thúc mỗi giai đoạn rất trang trọng, với các sản phẩm bàn giao rất trang trọng.

Ưu điểm của phương pháp thác nước là trách nhiệm của nhóm chịu trách nhiệm cho từng giai đoạn lớn hơn. Rõ ràng họ cần cung cấp những gì, khi nào họ cần cung cấp và họ cần cung cấp cho ai. Thông thường, nhóm phát triển sẽ không cần phải tương tác với người dùng. Điều này có thể rất hữu ích khi gia công phần mềm phát triển cho một quốc gia khác.

Nhược điểm chính của cách tiếp cận thác nước là trong một môi trường mà mọi thứ được tổ chức theo một cách rất chính thức, tính linh hoạt để đáp ứng với những thay đổi sẽ giảm đi. Ngay cả việc di chuyển cũng cần được tổ chức. Rất ít công ty dường như làm điều này một cách hiệu quả, thường dẫn đến sự gia tăng đáng kể chi phí chung. Để quản lý chi phí của một dự án, một số công ty thậm chí trì hoãn bất kỳ thay đổi nào đối với các yêu cầu cho đến khi phân phối ứng dụng ban đầu, phân phối hiệu quả một ứng dụng không đáp ứng được nhu cầu của người dùng cuối.

phát triển nhanh

Nhiều dự án phát triển phần mềm kéo dài đã vượt quá ngân sách và không cung cấp sản phẩm đúng hạn. Tiền đề của triết lý phát triển phần mềm linh hoạt là giảm thiểu rủi ro bằng cách phát triển phần mềm trong các hộp thời gian ngắn, được gọi là lặp đi lặp lại, thường kéo dài từ một đến bốn tuần. Mỗi lần lặp lại giống như dự án phần mềm thu nhỏ của chính nó và bao gồm tất cả các tác vụ cần thiết để phát hành phần gia tăng của chức năng mới: lập kế hoạch, phân tích yêu cầu, thiết kế, viết mã, thử nghiệm và lập tài liệu. Mặc dù một lần lặp lại có thể không bổ sung đủ chức năng để đảm bảo phát hành sản phẩm, nhưng một dự án phần mềm linh hoạt nhằm mục đích có thể phát hành phần mềm mới vào cuối mỗi lần lặp lại. Vào cuối mỗi lần lặp lại, nhóm sẽ đánh giá lại các ưu tiên của dự án.

Mục tiêu của phát triển phần mềm linh hoạt là đạt được sự hài lòng của khách hàng thông qua việc cung cấp phần mềm hữu ích một cách nhanh chóng và liên tục; luôn hướng tới xây dựng những gì khách hàng cần; hoan nghênh thay vì phản đối những thay đổi muộn đối với các yêu cầu; thường xuyên thích ứng với sự thay đổi của hoàn cảnh; để có sự hợp tác chặt chẽ và hàng ngày giữa các doanh nhân và nhà phát triển, trong đó trò chuyện trực tiếp là hình thức giao tiếp tốt nhất.

Ưu điểm chính của phát triển phần mềm linh hoạt là tính linh hoạt trong việc đối phó với các thay đổi, luôn hướng đến việc cung cấp theo nhu cầu kinh doanh. Tất nhiên, nhược điểm là sự gia tăng mức độ phức tạp của việc quản lý phạm vi, lập kế hoạch và lập ngân sách. Một rủi ro phổ biến khác là sự chú ý hạn chế đến tài liệu (kỹ thuật).

Phát triển gia tăng

Phát triển phần mềm gia tăng là sự kết hợp giữa phát triển nhanh và thác nước. Một ứng dụng được thiết kế, triển khai và thử nghiệm gia tăng để mỗi phần gia tăng có thể được phân phối tới người dùng cuối. Dự án không được hoàn thành cho đến khi phần gia tăng cuối cùng được hoàn thành. Nó nhằm mục đích rút ngắn tầng bằng cách xác định các bước tăng trung gian và sử dụng một số lợi thế của sự phát triển nhanh. Dựa trên phản hồi nhận được về phần tăng trước đó, có thể thực hiện các điều chỉnh khi phân phối phần tăng tiếp theo. Phần gia tăng tiếp theo có thể bao gồm mã mới cũng như các sửa đổi đối với mã được cung cấp trước đó.

Ưu điểm là các thủ tục vẫn được giữ nguyên, nhưng việc quản lý thay đổi trở nên dễ dàng hơn. Chi phí kiểm thử và triển khai một ứng dụng nhiều lần sẽ lớn hơn so với chỉ thực hiện một lần.

Kiểm soát luồng chương trình

Chọn một cách tiếp cận để kiểm soát luồng chương trình là một nhiệm vụ rất kiến trúc. Mục tiêu là tạo ra một kế hoạch chi tiết cho ứng dụng của bạn khi bạn bắt đầu thêm chức năng và mã, mọi thứ dường như có vị trí riêng của nó. Nếu bạn đã từng xem xét hoặc viết mã chất lượng cao, bạn sẽ hiểu nguyên tắc này.

Mã tổ chức

Bước đầu tiên trong thiết kế dòng chương trình là tổ chức mã bằng cách thiết lập một bộ quy tắc để giúp tạo bản thiết kế hoặc phác thảo của ứng dụng. Bảo trì, gỡ lỗi và sửa lỗi sẽ dễ dàng hơn vì mã được đặt ở vị trí hợp lý. Khi bạn đã hoàn thành nền tảng, bạn có thể chọn cách tiếp cận để triển khai logic ứng dụng của mình.

Các mẫu thiết kế nên đóng một vai trò quan trọng trong việc thiết kế kiểm soát luồng chương trình. Trong những năm qua, rất nhiều mã đã được viết và nhiều giải pháp đã được thiết kế cho các sự cố lặp lại. Những giải pháp này được đặt ra trong các mẫu thiết kế. Áp dụng một mẫu thiết kế cho một vấn đề thiết kế phần mềm phổ biến sẽ giúp bạn tạo ra các giải pháp dễ nhận biết và có thể được thực hiện bởi các đồng nghiệp của bạn. Các vấn đề độc đáo sẽ vẫn yêu cầu các giải pháp độc đáo, nhưng bạn có thể sử dụng các mẫu thiết kế để hướng dẫn bạn giải quyết chúng.

Tạo dự án

lớp

Bước đầu tiên là xem xét các lớp logic. Lưu ý rằng các lớp không giống như các lớp, thường bị nhầm lẫn hoặc thậm chí được coi là giống nhau.

lớp so với lớp

Các lớp là tất cả về việc tạo ranh giới trong mã của bạn. Lớp trên cùng có thể có tham chiếu đến mã ở các lớp bên dưới, nhưng một lớp không bao giờ có thể có tham chiếu đến mã ở lớp bên trên. Các bậc đề cập đến sự phân phối vật lý của các bậc trên nhiều máy tính. Ví dụ: trong ứng dụng ba tầng, giao diện người dùng được thiết kế để chạy trên máy tính để bàn, logic ứng dụng được thiết kế để chạy trên máy chủ ứng dụng và cơ sở dữ liệu chạy trên máy chủ cơ sở dữ liệu của dữ liệu chuyên dụng và mã trong mỗi lớp có thể bao gồm một số lớp.

Hình 8-1: Tổ chức ba cấp cơ bản

Lớp đề cập đến mức độ trừu tượng. Các lớp được hiển thị trong Hình 8-1 đúng với hầu hết các ứng dụng. Các cấp độ này còn được gọi là ba lớp chính và có thể có nhiều tên khác nhau. Theo quy định, mã trong lớp trình bày có thể gọi các dịch vụ trong lớp logic ứng dụng, nhưng lớp logic ứng dụng không được gọi phương thức trong lớp trình bày. Lớp trình bày không bao giờ được gọi trực tiếp lớp truy cập dữ liệu, vì điều này sẽ bỏ qua các trách nhiệm được thực hiện bởi lớp logic ứng dụng. Lớp truy cập dữ liệu không bao giờ được gọi lớp logic ứng dụng.

Các lớp chỉ là một sự trừu tượng và có lẽ cách dễ nhất để triển khai các lớp là tạo các thư mục trong dự án của bạn và thêm mã vào thư mục thích hợp. Một cách tiếp cận hữu ích hơn là đặt mỗi lớp trong một dự án riêng biệt, do đó tạo ra các tập hợp riêng biệt. Lợi ích của việc đưa logic ứng dụng của bạn vào một tổ hợp thư viện là nó sẽ cho phép bạn tạo các bài kiểm tra đơn vị, sử dụng Microsoft Visual Studio hoặc NUnit, để kiểm tra logic. Nó cũng tạo ra sự linh hoạt trong việc lựa chọn nơi triển khai từng lớp.

lớp vật lý

Trong một ứng dụng doanh nghiệp, bạn sẽ có nhiều ứng dụng khách cho cùng một logic. Trên thực tế, điều khiến một ứng dụng trở thành ứng dụng doanh nghiệp là nó sẽ được triển khai ở ba lớp: máy khách, máy chủ ứng dụng và máy chủ cơ sở dữ liệu. Ứng dụng Microsoft Office Access được tạo bởi bộ phận bán hàng của công ty bạn, mặc dù rất quan trọng đối với bộ phận bán hàng, nhưng không phải là ứng dụng của công ty.

Lưu ý rằng các lớp truy cập dữ liệu và logic ứng dụng thường được triển khai cùng nhau trên máy chủ ứng dụng. Một phần của việc thiết kế dự án là chọn truy cập máy chủ ứng dụng bằng cách sử dụng các dịch vụ .NET hoặc Web từ xa. Cho dù bạn chọn cách nào, bạn sẽ thêm một số mã để dễ dàng truy cập các dịch vụ từ xa trong lớp trình bày. Nếu bạn đang sử dụng các dịch vụ web để truy cập các dịch vụ trên máy chủ ứng dụng của mình, Visual Studio .NET sẽ thực hiện công việc đó cho bạn và tạo mã proxy, tự động cung cấp triển khai mẫu proxy từ xa.

Thêm các mẫu vào các lớp

Ba lớp cơ bản cung cấp một cái nhìn tổng quan cấp cao. Hãy thêm một số mẫu cấu trúc để tạo ra một kiến trúc doanh nghiệp mạnh mẽ. Kết quả được thể hiện trong Hình 8-2.

Tập trung vào lớp logic ứng dụng. Hình 8-2 cho thấy việc truy cập logic ứng dụng đang sử dụng mẫu mặt tiền. Mặt tiền là một đối tượng cung cấp giao diện đơn giản hóa cho phần mã lớn hơn, chẳng hạn như thư viện lớp. Mặt tiền có thể giảm sự phụ thuộc mã bên ngoài vào hoạt động bên trong của thư viện vì hầu hết mã sử dụng mặt tiền, do đó cho phép phát triển hệ thống linh hoạt hơn. Để làm điều này, facade sẽ cung cấp một giao diện thô cho một tập hợp các đối tượng tinh.

luồng quyết định

Kiểm soát luồng chương trình, còn được gọi là luồng quyết định, liên quan đến cách bạn thiết kế các dịch vụ trong lớp logic ứng dụng của mình hoặc, như bạn đã thấy trong đoạn trước, cách bạn thiết kế các phương thức trong mặt tiền của mình.

Có hai cách tiếp cận để tổ chức các dịch vụ của bạn:

  • hành động theo định hướng
  • điều khiển nhà nước

Phương pháp định hướng hành động

Bằng cách tổ chức các dịch vụ dựa trên hành động của người dùng, bạn đang triển khai logic ứng dụng bằng cách cung cấp các dịch vụ, mỗi dịch vụ xử lý một yêu cầu cụ thể từ lớp trình bày. Điều này còn được gọi là mẫu kịch bản giao dịch. Cách làm này phổ biến vì nó đơn giản và trông rất tự nhiên. Ví dụ về các phương thức tuân theo cách tiếp cận này là BookStoreService.AddNewOrder(Đặt hàng) và BookStoreService.CancelOrder(int orderId).

Logic cần thiết để thực hiện hành động được triển khai rất tuần tự trong phương thức, làm cho mã rất dễ đọc nhưng cũng khó sử dụng lại hơn. Sử dụng các mẫu thiết kế bổ sung, chẳng hạn như mẫu mô-đun bảng, có thể giúp tăng khả năng sử dụng lại.

Cách tiếp cận do nhà nước thúc đẩy

Cũng có thể triển khai luồng quyết định của ứng dụng theo cách định hướng trạng thái hơn nhiều. Các dịch vụ được cung cấp bởi máy chủ ứng dụng có bản chất chung chung hơn, ví dụ BookStoreService.SaveOrder(Đặt hàng). Phương pháp này sẽ kiểm tra trạng thái của đơn đặt hàng và quyết định thêm đơn hàng mới hay hủy đơn hàng hiện có.

đồ án cấu trúc dữ liệu

Bạn phải thực hiện một số lựa chọn khi thiết kế cấu trúc dữ liệu của mình. Lựa chọn đầu tiên là cơ chế lưu trữ dữ liệu, lựa chọn thứ hai là mục đích sử dụng dữ liệu và lựa chọn thứ ba là yêu cầu phiên bản. Có ba cách để xem xét các thiết kế cấu trúc dữ liệu:

  • Các dịch vụ cung cấp dữ liệu; dữ liệu là sự phản ánh của cơ sở dữ liệu quan hệ.
  • Dữ liệu phải được ánh xạ tới các đối tượng và dịch vụ cung cấp quyền truy cập vào các đối tượng.
  • Dữ liệu được cung cấp bởi các dịch vụ phải dựa trên lược đồ.

Việc chọn một trong ba cơ sở làm cơ sở cho cấu trúc luồng dữ liệu của bạn nên được thực hiện ở giai đoạn đầu của quy trình thiết kế. Nhiều công ty có hướng dẫn công ty yêu cầu một trong ba tùy chọn cho tất cả các dự án, nhưng nếu có thể, bạn nên đánh giá lại các tùy chọn cho từng dự án, chọn cách tiếp cận tối ưu cho dự án hiện tại.

Chọn một công cụ lưu trữ dữ liệu

Khi thiết kế ứng dụng của bạn, chắc chắn bạn sẽ phải thiết kế một số loại kho lưu trữ dữ liệu. Các cửa hàng và hình thức lưu trữ dữ liệu sau đây có sẵn:

  • Ghi
  • tập tin app.config
  • tệp xml
  • tập tin văn bản đơn giản
  • Cơ sở dữ liệu
  • hàng đợi tin nhắn

Mỗi cửa hàng có những đặc điểm riêng biệt và có thể được điều chỉnh theo yêu cầu cụ thể.

Thiết kế luồng dữ liệu

Luồng dữ liệu sử dụng ADO.NET

Bằng cách triển khai các dịch vụ tập trung vào dữ liệu trong lớp logic ứng dụng, bạn sẽ thiết kế luồng dữ liệu của mình bằng ADO.NET. Thư viện lớp .NET Framework cung cấp giao diện lập trình ứng dụng (API) mở rộng để thao tác dữ liệu trong mã được quản lý. Được gọi là ADO.NET, API có thể được tìm thấy trong không gian tên System.Data. Sự tách biệt hoàn toàn giữa vật mang dữ liệu và kho lưu trữ dữ liệu là một tính năng thiết kế quan trọng của ADO.NET. Các lớp như DataSet, DataTable và DataRow được thiết kế để lưu trữ dữ liệu nhưng không biết dữ liệu đến từ đâu. Chúng được coi là nguồn dữ liệu bất khả tri. Một tập hợp các lớp riêng biệt, chẳng hạn như SqlConnection, SqlDataAdapter và SqlCommand, đảm nhiệm việc kết nối với nguồn dữ liệu, truy xuất dữ liệu và điền DataSet, DataTable và DataRow. Các lớp này được đặt trong các không gian tên phụ như System.Data.Sql, System.Data.OleDB, System.Data.Oracle, v.v. Tùy thuộc vào nguồn dữ liệu bạn muốn kết nối, bạn có thể sử dụng các lớp trong không gian tên phù hợp và tùy thuộc vào phạm vi của sản phẩm bạn đang sử dụng, bạn sẽ thấy rằng các lớp này cung cấp nhiều hoặc ít chức năng hơn.

Vì DataSet không được kết nối với nguồn dữ liệu nên nó có thể được sử dụng khá thành công để quản lý luồng dữ liệu trong một ứng dụng. Hình 8-5 cho thấy luồng dữ liệu khi thực hiện việc này.

Hãy xem xét dự án này và tưởng tượng rằng ai đó đã đăng nhập vào hiệu sách của bạn và đặt mua ba cuốn sách. Lớp trình bày quản lý trạng thái của giỏ hàng. Khách hàng đã sẵn sàng đặt hàng và đã cung cấp tất cả các dữ liệu cần thiết. Anh ấy chọn gửi đơn đặt hàng. Trang web biến đổi tất cả dữ liệu thành một DataSet chứa hai DataTables, một cho thứ tự và một cho thứ tự; chèn một DataRow cho đơn đặt hàng; và chèn ba DataRows cho các dòng đặt hàng. Sau đó, trang web sẽ hiển thị lại dữ liệu này cho người dùng một lần nữa, ràng buộc các điều khiển dữ liệu với Tập dữ liệu và hỏi Bạn có chắc không? Người dùng xác nhận yêu cầu và nó được gửi đến lớp logic của ứng dụng. Lớp logic ứng dụng kiểm tra DataSet để xem liệu tất cả các trường bắt buộc có giá trị hay không và thực hiện kiểm tra xem liệu người dùng có nhiều hơn 1000 US$ hay không. 00 trên hóa đơn chưa thanh toán. Nếu mọi việc suôn sẻ, Bộ dữ liệu được chuyển đến lớp truy cập dữ liệu, lớp này kết nối với cơ sở dữ liệu và tạo các câu lệnh chèn từ thông tin Bộ dữ liệu.

Sử dụng Bộ dữ liệu theo cách này là một cách nhanh chóng và hiệu quả để xây dựng một ứng dụng và sử dụng sức mạnh của Thư viện lớp Framework và khả năng của ASP.NET để liên kết dữ liệu với các điều khiển khác nhau, chẳng hạn như GridView đối với Bộ dữ liệu. Thay vì sử dụng các đối tượng DataSet đơn giản, bạn có thể sử dụng các đối tượng Typed DataSet và cải thiện trải nghiệm mã hóa bằng cách triển khai mã trong lớp trình bày cũng như lớp logic ứng dụng. Ưu điểm của phương pháp này cũng là nhược điểm của phương pháp. Những thay đổi nhỏ đối với mô hình dữ liệu không nhất thiết dẫn đến nhiều phương thức phải thay đổi chữ ký của chúng. Vì vậy, về mặt bảo trì, điều này hoạt động thực sự tốt. Nếu bạn nhớ rằng lớp trình bày không nhất thiết phải là giao diện người dùng, nó cũng có thể là một dịch vụ web. Và nếu bạn sửa đổi định nghĩa của Tập dữ liệu, có lẽ vì bạn đang đổi tên một trường trong cơ sở dữ liệu, thì bạn đang sửa đổi hợp đồng mà dịch vụ web đăng ký. Như bạn có thể tưởng tượng, điều này có thể dẫn đến một số vấn đề quan trọng. Kịch bản này hoạt động tốt nếu lớp trình bày chỉ là giao diện người dùng, nhưng đối với giao diện với các thành phần hoặc hệ thống bên ngoài, bạn sẽ muốn ẩn hoạt động bên trong ứng dụng của mình và chuyển đổi dữ liệu thành thứ gì đó không phải là bản sao trực tiếp của mô hình dữ liệu của bạn và bạn sẽ muốn tạo Đối tượng truyền dữ liệu (DTO).

Luồng dữ liệu sử dụng ánh xạ quan hệ đối tượng

Luồng dữ liệu sử dụng ADO.NET là một cách tiếp cận tập trung vào dữ liệu để quản lý luồng dữ liệu. Dữ liệu và logic rời rạc. Đầu kia của quang phổ đang thực hiện một cách tiếp cận hướng đối tượng hơn. Ở đây, các lớp được tạo để nhóm dữ liệu và hành vi. Mục tiêu là xác định các lớp bắt chước dữ liệu và hành vi được tìm thấy trong miền kinh doanh mà ứng dụng được tạo. Kết quả thường được gọi là một đối tượng nghiệp vụ. Tập hợp các đối tượng nghiệp vụ tạo nên ứng dụng được gọi là mô hình miền. Một số nhà phát triển cho rằng mô hình miền phong phú sẽ tốt hơn cho việc thiết kế logic phức tạp hơn. Rất khó để chứng minh hoặc bác bỏ một tuyên bố như vậy. Chỉ cần biết rằng bạn có một sự lựa chọn và bạn có thể thực hiện nó hay không.

Hình 8-6 cho thấy một luồng dữ liệu tương tự như Hình 8-5, ngoại trừ việc bây giờ bạn đã thêm lớp ánh xạ quan hệ đối tượng và thay thế các đối tượng DataSet bằng các phương tiện mang dữ liệu khác.

Bây giờ hãy làm từng bước như trước; hãy tưởng tượng rằng ai đó đã kết nối với cửa hàng sách của bạn và đặt mua ba cuốn sách. Lớp trình bày quản lý trạng thái của giỏ hàng. Khách hàng đã sẵn sàng đặt hàng và đã cung cấp tất cả các dữ liệu cần thiết. Anh ấy chọn gửi đơn đặt hàng. Trang web biến tất cả dữ liệu thành DTO, giữ dữ liệu cho một đơn hàng và với ba dòng đơn hàng, tạo các đối tượng khi cần. Trang web hiển thị lại dữ liệu này cho người dùng một lần nữa, liên kết dữ liệu kiểm soát DTO bằng cách sử dụng ObjectDataSource trong ASP.NET 2.0 và hỏi Bạn có chắc không? Người dùng xác nhận lựa chọn và DTO được gửi đến lớp logic của ứng dụng. Lớp logic ứng dụng biến đổi DTO thành một đối tượng nghiệp vụ thuộc loại Order với một thuộc tính để chứa ba đối tượng OrderLine. Phương thức đặt hàng. Xác thực () được gọi để xác thực đơn đặt hàng và xác minh rằng tất cả các trường bắt buộc đều có giá trị và kiểm tra được thực hiện để xác định xem người dùng có nhiều hơn R$ 1.000,00 trong các phiếu đang chờ xử lý hay không. Để thực hiện việc này, đơn đặt hàng sẽ gọi Order.Customer.GetOutstandingBills(). Nếu tất cả đều ổn, phương thức Order.Save() sẽ được gọi. Yêu cầu sẽ chuyển qua lớp ánh xạ quan hệ đối tượng, trong đó yêu cầu và các hàng của yêu cầu được ánh xạ tới một DataTable trong DataSet và DataSet được chuyển tới lớp truy cập dữ liệu, lớp này kết nối với cơ sở dữ liệu và tạo các câu lệnh chèn từ thông tin trong DataSet. Tất nhiên, có nhiều cách trong đó ánh xạ quan hệ đối tượng có thể xảy ra, nhưng không phải tất cả chúng sẽ bao gồm chuyển đổi thành Tập dữ liệu. Một số sẽ trực tiếp tạo câu lệnh chèn nhưng vẫn sử dụng lớp truy cập dữ liệu để thực thi câu lệnh đó.

Như bạn có thể thấy, một số biến đổi diễn ra. Việc sử dụng DTO là cần thiết vì một đối tượng kinh doanh thực hiện hành vi và hành vi có thể thay đổi. Để giảm thiểu tác động của những thay đổi này đối với lớp trình bày, bạn cần chuyển đổi dữ liệu ra khỏi đối tượng nghiệp vụ và thành một đối tượng truyền dữ liệu. Trong Java, đối tượng truyền dữ liệu thường được gọi là đối tượng giá trị.

Một lợi thế lớn khi làm việc với các đối tượng kinh doanh là nó thực sự giúp tổ chức mã của bạn. Nếu bạn nhìn lại một đoạn logic phức tạp, nó thường rất dễ đọc vì có rất ít mã hệ thống ống nước. Nhược điểm là hầu hết các kho lưu trữ dữ liệu vẫn là các đối tượng kinh doanh quan hệ và việc ánh xạ các đối tượng kinh doanh tới dữ liệu quan hệ có thể trở nên khá phức tạp.

dịch vụ dựa trên lược đồ

Bạn vừa thấy hai mặt đối lập khi nói đến việc quản lý luồng dữ liệu. Nhiều biến thể là có thể. Một biến thể phổ biến là biến thể trong đó tập dữ liệu được sử dụng làm vật mang dữ liệu cơ bản của giao diện người dùng để lưu trữ dữ liệu, nhưng các lược đồ riêng biệt (DTO) được sử dụng cho các dịch vụ web được gọi từ các hệ thống khác. Lớp ứng dụng biến đổi dữ liệu quan hệ thành một lược đồ được xác định trước. Ưu điểm chính của điều này là bất kỳ ứng dụng nào tham chiếu đến dịch vụ đều không phụ thuộc vào bất kỳ loại triển khai nội bộ nào của thành phần. Điều này cho phép linh hoạt hơn trong việc lập phiên bản, khả năng tương thích ngược của các giao diện và khả năng thay đổi cách triển khai của thành phần mà không cần thay đổi giao diện của dịch vụ.

Tất nhiên, bạn có thể sử dụng các đối tượng nghiệp vụ trong ứng dụng web và bỏ qua chuyển đổi DTO, nhưng điều này thường chỉ hoạt động tốt nếu logic ứng dụng được triển khai cùng với ứng dụng web. Hãy nhớ rằng để gọi Order.Save() bạn sẽ cần kết nối cơ sở dữ liệu. Điều này có được mong muốn hay không là tùy thuộc vào bạn và có thể là giám đốc an ninh của bạn.