2010-02-19 38 views
5

Tôi đang viết một ứng dụng ASP.NET mà tôi có một lớp giao diện người dùng, lớp logic nghiệp vụ và lớp truy cập dữ liệu. Từ lớp dữ liệu của tôi, tôi trả về các đối tượng nghiệp vụ cho lớp logic nghiệp vụ và chuyển chúng vào lớp UI. Tuy nhiên, tôi không chắc chắn phải làm gì khi tôi muốn thực hiện lưu/chèn với dữ liệu từ lớp giao diện người dùng.Tôi nên trở về từ lớp giao diện người dùng đến lớp doanh nghiệp?

Tôi có nên tạo đối tượng doanh nghiệp ở lớp giao diện người dùng và chuyển sang lớp doanh nghiệp hay tôi nên tạo nó trong lớp doanh nghiệp?

cảm ơn rất nhiều

+0

cảm ơn tất cả các ý kiến ​​của bạn - được đánh giá cao – Nick

Trả lời

2

Tôi đồng ý với crunchdog-- cho tất cả trừ các ứng dụng web tầm thường nhất bạn nên có dạng phẳng của đối tượng doanh nghiệp của bạn dành riêng cho lớp UI/view của bạn. Đôi khi điều này được gọi là lớp Chế độ xem và thường không chứa gì hơn một số thuộc tính chuỗi mà lớp giao diện người dùng có thể nhận được từ và đưa trực tiếp mà không phải lo lắng về xác thực. (Xem asp.net mvc)

Thứ nhất, điều này sẽ giúp các lớp UI sạch hơn và đơn giản hơn, để lại nó để đặt nó là nỗ lực hướng tới hiển thị dữ liệu chứ không phải đi qua các cấu trúc đối tượng, kiểm tra và giải thích null vv

này cũng cung cấp cho lớp nghiệp vụ cơ hội để xác thực khi các giá trị chuỗi đó, trả về các giá trị được nhập nếu chúng không hợp lệ. Điều này có thể tiết kiệm sự thất vọng mã hóa khi, ví dụ, máy chủ của bạn phải xử lý một ngày không hợp lệ trong một trường ngày tháng. Lớp nghiệp vụ, nhận ra các giá trị không hợp lệ, có thể trả lại chính xác như đã nhận cùng với các thông báo lỗi thích hợp. Nếu tất cả các bạn xử lý là các đối tượng tên miền/doanh nghiệp, thì một số giá trị được nhập có thể không phải lúc nào cũng phù hợp với các đối tượng dự định giữ chúng.

Nó cũng có thể giúp có một lớp được chỉ định để ánh xạ các giá trị qua lại giữa các đối tượng kinh doanh/tên miền và mô hình đối tượng/chế độ xem giao diện người dùng. Điều này giúp giữ cho các lớp kinh doanh được phân tách một cách rõ ràng.

0

Tôi thấy tốt hơn là có đối tượng lớp giao diện người dùng mô hình đối tượng kinh doanh "thực". Các đối tượng mô hình này không cần phải có tất cả thông tin (các liên kết và như vậy) mà các đối tượng nghiệp vụ "thực" có. Sau đó, lớp kinh doanh phải chịu trách nhiệm chuyển đổi từ và sang đối tượng kinh doanh.

Đối với các ứng dụng web, điều này đặc biệt hữu ích vì bạn không cần phải gửi dữ liệu quá mức qua lại cho khách hàng.

+0

Crunchdog đang nói về các đối tượng chuyển dữ liệu hoặc DTO cho ngắn: http://en.wikipedia.org/wiki/Data_transfer_object. – Steven

0

Nếu bạn không muốn mã hóa quá nhiều đối tượng kinh doanh thì bạn đã làm đúng việc truy xuất dữ liệu (trong đó bạn trả về cùng một đối tượng nghiệp vụ từ DAL sang BL sang giao diện người dùng).

Khi lưu dữ liệu, những gì bạn có thể làm là chuyển các đối tượng đó dưới dạng tham số trên lớp BL và \ hoặc DAL của bạn. Bạn có thể truyền đối tượng hiện tại trở lại nếu bạn đã liên kết đối tượng đó trên điều khiển giao diện người dùng của mình hoặc tạo một phiên bản mới của đối tượng đó và đặt các thay đổi được thực hiện.

Sau đó, trên lớp DAL của bạn, chỉ cần đọc đối tượng và lưu các thay đổi về cơ sở dữ liệu.

0

Tôi đã nhận thấy rằng giải pháp đơn giản nhất là có đối tượng Kiểu xem được chuyển từ giao diện người dùng đến lớp Doanh nghiệp, vì một vài lý do. Rõ ràng nhất là việc xác nhận hợp lệ sẽ xảy ra trong lớp nghiệp vụ, do đó việc tạo một đối tượng nghiệp vụ trong UI phá vỡ các nguyên tắc của MVC.

Quan trọng hơn, nếu người dùng nhập dữ liệu không hợp lệ, đối tượng kinh doanh có thể (đúng) không thể chấp nhận dữ liệu đó.Tuy nhiên, bạn không muốn ném dữ liệu người dùng đã nhập, vì vậy đối tượng Mô hình xem không hợp lệ cung cấp cho bạn cách lưu trữ và truyền tải dữ liệu mà người dùng đã nhập, cho dù đó có hợp lệ hay không.

Các vấn đề liên quan