Sự khác biệt cơ bản giữa kiến trúc MVC và kiến trúc 3 tầng là gì?MVC so với kiến trúc 3 tầng?
Trả lời
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)
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.
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
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ó. –
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
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.
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
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
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. –
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.
Đồng ý, chúng là trực giao, nhưng bổ sung. –
3-tier là một Kiến trúc Phong cách và MVC 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.
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.
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.
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
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
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
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.
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.
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ì?
- 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.
- 1. Memcache (d) so với véc ni để tăng tốc kiến trúc web 3 tầng
- 2. nơi đặt thử/bắt trong kiến trúc 3 tầng
- 3. Sử dụng DTO trong kiến trúc 3 tầng
- 4. Ưu điểm của MVC so với kiến trúc 3 lớp trong các ứng dụng web là gì?
- 5. WPF - Nơi đặt DAL trong thiết kế kiến trúc 3 tầng với MVVM?
- 6. Kiến trúc ASP.NET MVC
- 7. Kiến trúc jQuery MVC
- 8. Đội của tôi nên quyết định như thế nào giữa kiến trúc 3 tầng và 2 tầng?
- 9. Có đáng sử dụng kiến trúc 3 tầng cho các ứng dụng nhỏ (ish)
- 10. Lời khuyên khi chuyển sang kiến trúc Delphi đa tầng
- 11. Nếu Entity Framework/DbContext là DAL/Repository, nó phù hợp với kiến trúc 3 tầng ở đâu?
- 12. Kiến trúc Plugin Spring MVC
- 13. Ứng dụng web mvc có nên là 3 tầng không?
- 14. Kiến trúc MVC và Swing
- 15. Kiến trúc/thiết kế N-tầng và N-Layered
- 16. Ví dụ về kiến trúc 4 tầng (đối với N-Tier)?
- 17. .NET tương đương với kiến trúc web Java hiện đại
- 18. Kiến trúc MVC Vs n-tier
- 19. Kiến trúc 3 lớp - truyền dữ liệu giữa các lớp
- 20. Làm thế nào để thực hiện một kiến trúc 3 tầng .net bằng cách sử dụng Winforms
- 21. Kiến trúc SOA với WCF + Cấu trúc IOC
- 22. lời khuyên về kiến trúc các ứng dụng asp.net mvc
- 23. Kiến trúc N-Layer
- 24. Sự khác biệt giữa bộ điều khiển MVC và logic nghiệp vụ (3 tầng)
- 25. Kiến trúc Java EE với Khung Chơi
- 26. Kiến trúc CQRS đa người thuê nhà
- 27. ASP.NET MVC có thực hiện sai sót đối với mẫu kiến trúc MVC không?
- 28. Xử lý lỗi trong kiến trúc 3 lớp
- 29. Nhà nước của nghệ thuật trong kiến trúc MVC?
- 30. Nơi cần chuyển đổi giá trị bản trình bày trong kiến trúc nhiều tầng?
bản sao có thể có của [Kiến trúc MVC Vs n-tier] (http://stackoverflow.com/questions/698220/mvc-vs-n-tier-architecture) – brianpeiris