2011-01-02 49 views

Trả lời

6

Kiến trúc 3 tầng là tuyến tính nơi tầng máy khách không bao giờ thực sự giao tiếp với tầng dữ liệu - tất cả các giao tiếp đi qua tầng giữa. Mặt khác, MVC có hình tam giác hơn, nơi khung nhìn gửi các bản cập nhật cho bộ điều khiển và nhận các cập nhật từ mô hình và bộ điều khiển cập nhật mô hình.

(Xem "So sánh với kiến ​​trúc MVC" trên http://en.wikipedia.org/wiki/3-tier_architecture)

+3

Tôi tin rằng bạn đã sao chép câu trả lời này từ Wikipedia. Sẽ tốt hơn nếu bạn trích dẫn nguồn của mình. "Kiểm tra So sánh với Kiến trúc MVC" đoạn @http: //en.wikipedia.org/wiki/3-tier_architecture – chris

+0

Tôi đã thêm nguồn, cảm ơn mẹo! – OCDev

28

Trong các ứng dụng lớn hơn MVC là tầng trình bày duy nhất của một kiến ​​trúc N-tier. Các khung nhìn và các bộ điều khiển mô hình chỉ quan tâm đến bản trình bày và sử dụng tầng giữa để điền các mô hình có dữ liệu từ tầng dữ liệu.

MVC cũng có thể được sử dụng làm toàn bộ kiến ​​trúc 3 tầng trong đó Chế độ xem là bản trình bày của bạn, Bộ điều khiển là logic nghiệp vụ của bạn và Mô hình là lớp dữ liệu của bạn (thường được tạo bởi DAL chẳng hạn như Khung thực thể).

Lý tưởng nhất là bạn muốn bộ điều khiển của mình trở nên gầy còm, bỏ qua logic thành 'thành phần kinh doanh', về cơ bản sẽ trở thành tầng giữa của bạn.

+3

Nếu View = Presentation, Controller = Business và Model = DAL Vậy sự khác biệt cơ bản giữa chúng là gì? Cái nào tốt hơn và tại sao? – chhaya

+1

MVC có thể được cho là một triển khai của một kiến ​​trúc ba tầng, nhưng cũng có thể là cấp cao nhất trong và của chính nó. –

+11

Tôi đồng ý với đoạn 1 của bạn, nhưng không đồng ý với khoản 2 của bạn. BL nên * không * trong bộ điều khiển. Phấn đấu cho một mô hình mạnh mẽ có chứa BL và một bộ điều khiển nạc. – atconway

12

Tôi có cách tiếp cận khác so với những gì Michael nói trong phản hồi của anh ấy.

Bộ điều khiển không bao giờ có nghĩa là logic nghiệp vụ của bạn. Đối với tôi, logic nghiệp vụ thuộc về lớp mô hình. Và mặc dù, các khung nhìn (và một số phạm vi điều khiển) và một phần của lớp trình bày, mô hình không bao giờ là một phần của nó trong một ứng dụng MVC. Mô hình nên là trái tim và linh hồn của một ứng dụng MVC và đó là những gì Domain Driven Design là tất cả về mà có thể dễ dàng thực hiện trong một ứng dụng MVC.

Hãy nhớ rằng bạn không cần phải có mô hình bên trong cùng một dự án (nói về ASP.NET MVC). Nó có thể nằm trong một dự án hoàn toàn khác và nó vẫn có thể hoạt động như một mô hình cho ứng dụng

Ứng dụng MVC hoạt động như một lớp trình diễn chỉ có thể hoạt động trong một dự án lớn với nhiều cấp độ khác nhau. lớp trong một kiến ​​trúc 3 tầng là những gì người hỏi hỏi.

Vì vậy, chúng ta có thể nói rằng MVC tạo hai (thứ ba có thể là lớp dữ liệu không thực sự là một phần của kiến ​​trúc MVC trên mỗi tầng) trong ba lớp của kiến ​​trúc 3 tầng.

Cảm ơn.

7

Kiến trúc 3 tầng là gì?

Ba tầng (lớp) là client-server architecture trong đó giao diện người dùng, quy trình nghiệp vụ (quy tắc kinh doanh) và lưu trữ dữ liệu và truy cập dữ liệu được phát triển và duy trì như mô-đun độc lập hoặc thường xuyên nhất trên các nền tảng riêng biệt. Về cơ bản, có 3 lớp, tầng 1 (tầng trình bày, tầng GUI), tầng 2 (đối tượng nghiệp vụ, tầng logic nghiệp vụ) và tầng 3 (tầng truy cập dữ liệu). Các tầng này có thể được phát triển và thử nghiệm riêng biệt.

DAL - Data Access Layer (nó đã ConnectionString và dữ liệu đọc & quá trình thực hiện)

BOL - Bussiness Object Layer (nó có Queries)

UI - giao diện người dùng (Hình thức & Mã Đằng sau)

Chi tiết khác: 3 Tier Archtecture

+2

Vâng, ngoại trừ việc tốt nhất chỉ là một nửa câu hỏi. Bạn có thể delta MVC? – ruffin

+0

Câu trả lời này không liên quan đến câu hỏi. Điều này nói chỉ có 3 tầng. –

6

IMO có không so sánh trực tiếp giữa 3-Tier ar chitecture và MVC. Cả hai đều được sử dụng trong conjuction và do đó chúng ta có xu hướng nhìn thấy chúng thông qua cùng một lense. Khái niệm họ không cần phải được sử dụng cùng nhau. Tôi có thể có kiến ​​trúc 3 tầng rằng không sử dụng những gì MVC cung cấp.

Tôi không xây dựng phần định nghĩa, nhưng trong Tóm lại:

3-Tier là một cách tiếp cận kiến ​​trúc phần mềm, trong đó giao diện người dùng, quá trình kinh doanh được logic, tầng dữ liệu được phát triển một cách độc lập, thường xuyên nhất trên các nền tảng riêng biệt.

MVC đã phát triển từ mẫu phần mềm thành mẫu kiến ​​trúc trong một khoảng thời gian và được thấy trong tất cả các khung chính hiện nay.

+0

Đồng ý, chúng là trực giao, nhưng bổ sung. –

34

3-tier là một Kiến trúc Phong cáchMVC là một Design Pattern.

như vậy là khác nhau trong đó.

nhưng chúng tôi có thể sử dụng mẫu mvc trong kiểu kiến ​​trúc 3 tầng.

vậy:

Presentation Tier: "Bộ điều khiển và Xem" từ MVC Pattern.

Cấp doanh nghiệp: "Mô hình (Dữ liệu)" từ Mẫu MVC.

Truy cập dữ liệu Cấp: Cấp truy cập dữ liệu gốc.

+14

Nói rằng, "3 tầng là một phong cách kiến ​​trúc và MVC là một mẫu thiết kế" là không đủ. MVC là một mẫu thiết kế rơi vào nhóm mẫu Kiến trúc. – Ronald

+6

Thực ra MVC là một mẫu kiến ​​trúc, không phải là một mẫu thiết kế. – FunctionR

17

Trong kiến ​​trúc 3 tầng, thông tin liên lạc giữa các cấp là hai chiều. Trong MVC, giao tiếp là một chiều; chúng ta có thể nói rằng mỗi "lớp" được cập nhật bởi một lớp ở bên trái và, lần lượt, cập nhật cái ở bên phải "trái" và "phải" chỉ đơn thuần là minh họa.

Kiến trúc 3 tầng thường triển khai dưới dạng 3 quy trình riêng biệt trên 3 nút mạng riêng biệt. Nhưng MVC được thiết kế để triển khai như là một quá trình duy nhất trong một nút mạng đơn. (như ứng dụng dành cho máy tính để bàn)

Cấp doanh nghiệp trong 3 tầng thường chứa các lớp khác nhau triển khai các mẫu nổi tiếng như đại diện kinh doanh, mặt tiền kinh doanh, đối tượng kinh doanh, định vị dịch vụ, đối tượng truyền dữ liệu, v.v. được sử dụng trong tầng trình bày.

Mục tiêu của 3 tầng là tách logic nghiệp vụ khỏi ứng dụng khách và cơ sở dữ liệu, do đó cung cấp nhiều giao thức khách hàng, khả năng mở rộng cao, truy cập dữ liệu không đồng nhất, v.v. Mục tiêu chính của MVC là thay đổi thực hiện trong một phần không yêu cầu thay đổi khác.

3

Kinh nghiệm của tôi là MVC chỉ là một thuật ngữ "mốt" cho 3 tầng kém, trong đó một số giao tiếp nhảy quanh các lớp nghiệp vụ, và do đó lớp khách và/hoặc lớp dữ liệu cũng có các quy tắc nghiệp vụ

Tôi ghét mã được viết như vậy - Thuật ngữ MVC phải được thiết kế để gây nhầm lẫn cho các nhà tuyển dụng nhân sự nghĩ những người lập trình cũ (người biết nó là "3 tầng") không phù hợp với công việc.

+2

câu trả lời này là một ví dụ hoàn hảo về những gì đã xảy ra với tôi trong một cuộc phỏng vấn. Một trong những lý do chính tôi không nhận được công việc là vì tôi không biết MVC là gì nhưng đã lập trình ba tầng trong hơn 10 năm. Sau khi nghiên cứu MVC nó hoàn toàn là ba tầng hỗn hợp. IMO ba cấp vượt trội so với MVC như người dùng này đã chỉ ra, MVC vừa tạo ra một mớ hỗn độn – K3NN3TH

+0

Hoàn toàn đồng ý với u. Chỉ cần một điểm cộng nữa, nhờ vào sự tương tác tam giác đó, nhiều khung công tác web có cách riêng của họ để làm "MVC" gây ra rất nhiều nhầm lẫn. – haotang

3

Trong MVC: Kiến trúc MVC là tam giác: quan điểm gửi thông tin cập nhật với bộ điều khiển, bộ điều khiển cập nhật các mô hình, và xem được cập nhật trực tiếp từ mô hình

Trong Ba Tier: Một kiến ​​trúc ba tầng là khách hàng tầng không bao giờ liên lạc trực tiếp với lớp dữ liệu trong một mô hình ba tầng tất cả thông tin liên lạc phải đi qua tầng giữa

Vikas Joshi Software Engineer

6

Mỗi ứng dụng có một nhiều của Layers sau 1) Presentation Layer hoặc UI lớp 2) lớp kinh doanh hoặc lớp 3 Business Logic) Data Access Layer hoặc Data Layer

3-tier kiến ​​trúc thường có mỗi lớp cách nhau bởi mạng. I E. lớp trình bày là trên một số máy chủ web, sau đó trao đổi với các máy chủ ứng dụng trên mạng cho logic nghiệp vụ, sau đó trao đổi với máy chủ cơ sở dữ liệu, một lần nữa trên mạng và có thể máy chủ ứng dụng cũng gọi ra một số dịch vụ từ xa (nói Authorize.net để xử lý thanh toán).

một số lần chúng tôi đòi hỏi nhiều lớp của các loại trên và nhiều hơn nữa mechines sau đó nó được gọi là N-tier

MVC là một mẫu thiết kế lập trình nơi các phần khác nhau của mã chịu trách nhiệm đại diện cho các Model, View và bộ điều khiển trong một số ứng dụng. Hai thứ này có liên quan bởi vì, ví dụ lớp Mô hình có thể có triển khai thực hiện nội bộ gọi cơ sở dữ liệu để lưu trữ và truy xuất dữ liệu. Bộ điều khiển có thể nằm trên máy chủ web và từ xa gọi máy chủ ứng dụng để truy xuất dữ liệu. MVC tóm tắt các chi tiết về cách kiến ​​trúc của ứng dụng được triển khai. Mẫu vào mô hình chúng tôi muốn xây dựng Xem nghĩa giao diện của ứng dụng Contol nghĩa logic nào kiểm soát ứng dụng

3-tier chỉ đề cập đến cấu trúc vật lý của một thực hiện. Hai điều này đôi khi bị nhầm lẫn vì thiết kế MVC thường được thực hiện bằng cách sử dụng kiến ​​trúc 3 tầng.

5

Không có mối quan hệ nào giữa hai người. MVC là một mẫu lớp trình bày. Toàn bộ Model-View-Controller tồn tại trong lớp trình bày.

  • Mẫu là đối tượng giữ dữ liệu (thường chỉ Vos) được đại diện bởi Xem hay, dân cư từ View.

  • Bộ điều khiển là thứ nhận được yêu cầu (và có thể điền mô hình) và gọi lớp dịch vụ. Sau đó nhận một mô hình khác (hoặc tương tự) và gửi lại cho Chế độ xem.

  • Xem là hình hiển thị mô hình và cung cấp các thành phần để nắm bắt đầu vào của người dùng. (Nó thường là một công cụ mẫu trong các ứng dụng Web, hoặc các thành phần giao diện người dùng trong một ứng dụng máy tính để bàn).

Khi nói về ứng dụng 3 tầng (hoặc n-tier), chúng tôi đang nói về kiến ​​trúc của toàn bộ ứng dụng, bao gồm Lớp trình bày (toàn bộ MVC), Lớp dịch vụ (Lớp doanh nghiệp) và Lớp truy cập dữ liệu.

Lớp dịch vụ (và tất cả sau đó) được ẩn đằng sau Bộ điều khiển của MVC.

-6

Tôi không nghĩ MVC sẽ thay đổi bất cứ điều gì hoặc giúp bạn xây dựng hệ thống tốt hơn hoặc mạnh mẽ hơn. Kiến trúc 3 tầng là thành công và đủ hệ thống. Tôi/bạn có thể xây dựng hệ thống rất toàn diện và mạnh mẽ trong đó. Chúng ta đều biết một trang web cuộc sống phức tạp hoặc thực tế có rất nhiều tương tác giữa tất cả các lớp. Cá nhân tôi tin rằng php vì lý do đó đã thúc đẩy hơn. Nếu u yêu cầu một lập trình viên kiêu ngạo nerdy ass để xây dựng một hệ thống diễn đàn đơn giản trong .net, ông sẽ gãi đầu của mình trên đó kiểm soát để sử dụng để render nó. Sau đó, anh ta sẽ kết hợp lưới dữ liệu với một số repeater ... Nhưng sau này nếu u chỉ đơn giản là yêu cầu thêm bình luận phần hoặc hình ảnh, anh ta sẽ giống như làm thế nào heck tôi làm điều đó? Mặt khác trong php ... U có thể kết hợp trong html với mã máy chủ để đạt được bất kỳ lớp trình bày dễ dàng ... Vì vậy, không khoe khoang về kiến ​​trúc như họ có advatages bình đẳng và bất lợi. Nhưng hỏi bạn đã xây dựng cái gì?

0
  • 3-Tier là cấu trúc tuyến tính. (Cấp bản trình bày -> Cấp logic -> Cấp dữ liệu rồi Lớp dữ liệu -> Cấp logic -> Cấp trình bày) Nhưng MVC là kiến ​​trúc hình tam giác. (Control update View and Model. Model cập nhật View.)
  • MVC có thể bao gồm trong tầng trình bày (Ứng dụng di động, Góc như khung công tác js vv ..) và tầng Logic (J2EE, Laravel, vv ...) trong 3 kiến trúc tầng.
  • Lớp trong 3 cấp có thể triển khai trong các nút mạng khác nhau. Nhưng thông thường các phần tử trong MVC thực hiện trong cùng một nút mạng.
Các vấn đề liên quan