2009-07-13 19 views
8

Tôi càng đọc nhiều hơn về Asp.Net MVC thì càng có nhiều lớp và thành phần tôi cần tìm để làm cho ứng dụng của tôi tuân theo tất cả các tiêu chuẩn và thực hành lập trình tốt nhất.Phân tích tất cả các lớp được yêu cầu/đề xuất cho Ứng dụng Asp.Net Mvc sau các phương pháp lập trình tốt nhất là gì?

Bắt đầu có chút bối rối vì một số lớp mới dường như không vừa vặn dễ dàng như những người khác tôi đã học được. Vì vậy, tôi chỉ muốn một ai đó đi qua tất cả các lớp được yêu cầu/được đề xuất cho một ứng dụng Asp.Net MVC - mục đích mà chúng phục vụ và cách chúng tương tác với các lớp khác.

Dưới đây là một vài trong số các lớp tôi đã tìm thấy và làm thế nào họ liên kết lên: (Một số trong số họ có thể sai)

View/UI --> Model Binder --> Controller --> Service Layer --> Repository --> Entity Framework/LINQ to SQL --> DB 

Có thể ai đó đi qua những cái tôi có thể bị thiếu, làm thế nào tất cả họ đều liên kết và mỗi mục đích của họ là gì?

Cảm ơn,
Matt

+4

loại câu hỏi xứng đáng với câu trả lời đúng đắn, sâu sắc .. sẽ rất thú vị khi xem những gì bạn nhận được :) – flesh

+1

Tôi nghĩ bạn có thể thay thế 'bất kỳ ORM' nào cho EF/L2S. –

+0

Câu trả lời của J.W. không tệ. Sẽ tốt hơn nếu bạn có thêm vài câu trả lời chỉ để xem trải nghiệm/quan điểm của người khác về nó. Cũng sẽ giống như một chút về cách họ tương tác với nhau. Xin vui lòng gửi nếu bạn có bất kỳ đầu vào thêm về điều này! – Matt

Trả lời

2

Tốt câu hỏi, tôi nghĩ rằng bạn bao gồm tất cả các lớp tôi đã thấy: phương thức chất kết dính và lớp dịch vụ là không bắt buộc.

Có thể, bạn có thể thêm một lớp Xử lý lỗi khác như elmah.

  • Xem/UI -> Bạn đặt mã đánh dấu html/Javascript của mình.
  • Mẫu Binder -> Bạn thực hiện phép thuật để ràng buộc đầu vào của bạn với các thông số hành động, thông thường, bạn sẽ sử dụng trình kết dính mặc định, vì vậy bạn không cần phải lo lắng về nó. Tuy nhiên, bạn có thể ghi đè điều này bằng chất kết dính của riêng mình và thực hiện xác thực trong lớp này. Đây là một good example về điều này.
  • Bộ điều khiển -> Đủ tài liệu trực tuyến.
  • Lớp dịch vụ -> Rất nhiều người đã xác thực và xử lý logic kinh doanh khác tại đây trước khi gửi nó vào kho lưu trữ. Asp.net mvc contact manger example có một ví dụ điển hình ở đây. Đây cũng là lớp thực sự hoạt động với phương thức của bạn.
  • Kho lưu trữ -> Thao tác đọc/ghi đơn giản.
  • Khuôn khổ thực thể/LINQ to SQL -> DB - Thực ra là ghi vào cơ sở dữ liệu. Nhibernate là một ứng cử viên tốt ở đây.
+0

"hầu hết các lớp"? Những người khác là gì? –

+1

Cuộc gọi tốt trên NHibernate – NikolaiDante

+0

điểm tốt, đó là những gì tôi đã thấy cho đến nay. –

0

Trước hết, tôi nghĩ phần mềm và mẫu có xu hướng làm quá mức mọi thứ. Như tên ASP ngụ ý ý tưởng chính của khung công tác là Model-View-Controller (MVC). Bạn có thể đặt rất nhiều thứ giữa các thành phần này, bao gồm DB, Dịch vụ, API, v.v. Tuy nhiên, khái niệm chính của mô hình Model-View-Controller khá đơn giản: Phân tách các chức năng đó thành các mô-đun để dự án có thể dễ dàng hơn để duy trì.

MVC có thể được áp dụng cho bất kỳ chương trình hoặc tập lệnh nào bạn thực hiện. Ngay cả đối với một kịch bản shell MVC cũng có thể hữu ích. Dưới đây là một số ví dụ về mỗi loại:

  • Chế độ xem - Dưới đây là cách người dùng tương tác. Nó có thể là một trang web, và Windows Form, hoặc một giao diện dòng lệnh.
  • Bộ điều khiển - Bộ não của chương trình, cần lưu ý mọi thứ, nhưng khá đơn giản. Về cơ bản nó nhận được tin nhắn hoặc sự kiện từ quan điểm và/hoặc mô hình và quyết định phải làm gì. Bộ điều khiển tốt về cơ bản là một điều phối viên của các sự kiện. Tùy thuộc vào sự kiện, nó gọi phương thức xem hoặc phương thức mô hình.Trong ASP MVC, bộ điều khiển là một trong những cung cấp ActionResults cho View và tương tác với Model.
  • Mô hình - Đây là cơ bản nơi dữ liệu được. Đây có thể là một DB, hệ thống tệp, Phiên Web hoặc bộ nhớ.

Bây giờ là phần tốt. Bộ điều khiển không quan tâm cách Chế độ xem đang quản lý tương tác với người dùng. Nó có thể là một giao diện dòng lệnh hoặc một biểu mẫu web. Bộ điều khiển không biết cách dữ liệu được lưu trữ, nó không quan trọng nếu nó là một DB hoặc một tập tin. Nó chỉ yêu cầu dữ liệu và chuyển nó đến View. Nó không phải của doanh nghiệp của mình để biết làm thế nào quan điểm là nhận được các yếu tố đầu vào, hoặc mô hình dữ liệu.

Sau đó, câu hỏi, Tại sao chúng ta muốn làm quá nhiều thứ với mô hình này? Vâng, Hãy tưởng tượng rằng bạn có một ứng dụng MVC bằng cách sử dụng một MySQL DB và biết bạn muốn sử dụng SQL Server. Bạn nên thay đổi mô-đun nào? Rõ ràng Model là người bị ảnh hưởng. Bộ điều khiển và Chế độ xem sẽ không có bất kỳ tác động lớn nào. Bây giờ, hãy tưởng tượng rằng bạn có một ứng dụng MVC khác bằng cách sử dụng Windows Forms, và bây giờ bạn muốn thay đổi nó thành biểu mẫu Web? Về cơ bản thì View là cái sẽ bị ảnh hưởng (và một số phần của bộ điều khiển), nhưng Model của bạn sẽ giống nhau.

Tóm lại, MVC là một mẫu tuyệt vời và nó nên được sử dụng nhiều hơn. Tuy nhiên, tôi nghĩ rằng có một số dự án không phù hợp với MVC do tính đơn giản của nó. Nó sẽ giống như xây dựng một laser để tiêu diệt ruồi. Tất nhiên bạn sẽ giết họ, nhưng nỗ lực không xứng đáng với mọi trường hợp.

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