Có gì khác biệt giữa các lớp Lay và


214

Sự khác biệt giữa "Lớp" và "Tầng" là gì?


3
Hầu như tất cả mọi người tôi đã gặp trong thế giới phần mềm đều sử dụng hai thuật ngữ này thay thế cho nhau như thể chúng giống hệt nhau.
RBT

Câu trả lời:


260

Các lớp logic chỉ là một cách tổ chức mã của bạn. Các lớp tiêu biểu bao gồm Trình bày, Kinh doanh và Dữ liệu - giống như mô hình 3 tầng truyền thống. Nhưng khi chúng ta nói về các lớp, chúng ta chỉ nói về tổ chức mã hợp lý. Không có nghĩa là các lớp này có thể chạy trên các máy tính khác nhau hoặc trong các quy trình khác nhau trên một máy tính hoặc thậm chí trong một quy trình duy nhất trên một máy tính. Tất cả những gì chúng ta đang làm là thảo luận về cách tổ chức mã thành một tập hợp các lớp được xác định bởi chức năng cụ thể.

Tuy nhiên, các lớp vật lý chỉ là về nơi mã chạy. Cụ thể, tầng là nơi các lớp được triển khai và nơi các lớp chạy. Nói cách khác, tầng là sự triển khai vật lý của các lớp.

Nguồn: Rockford Lhotka, tất cả các ứng dụng có nên là n-tier không?


43

Đọc bài viết của Scott Hanselman về vấn đề này: http://www.hanselman.com/blog/AReminderOnThreeMultiTierLayerArch architectureDesignBvedToYouByMyLateNightFrustations.aspx

Tuy nhiên, hãy nhớ rằng trong "Thế giới Scott" (hy vọng thế giới của bạn cũng vậy :)) "Cấp" là một đơn vị triển khai, trong khi "Lớp" là sự phân tách trách nhiệm hợp lý trong mã. Bạn có thể nói rằng bạn có một hệ thống "3 tầng", nhưng đang chạy nó trên một máy tính xách tay. Bạn có thể nói rằng bạn có hệ thống "3 lớp", nhưng chỉ có các trang ASP.NET nói chuyện với cơ sở dữ liệu. Có sức mạnh chính xác, các bạn.


36

Các lớp đề cập đến sự phân tách logic của mã. Các lớp logic giúp bạn tổ chức mã của bạn tốt hơn. Ví dụ, một ứng dụng có thể có các lớp sau.

1) Lớp trình bày hoặc lớp UI 2) Lớp nghiệp vụ hoặc lớp logic nghiệp vụ 3) Lớp truy cập dữ liệu hoặc lớp dữ liệu

Ba lớp aboove nằm trong các dự án của riêng họ, có thể là 3 dự án hoặc thậm chí nhiều hơn. Khi chúng tôi biên dịch các dự án, chúng tôi nhận được lớp DLL tương ứng. Vì vậy, bây giờ chúng ta có 3 DLL.

Tùy thuộc vào cách chúng tôi triển khai ứng dụng của mình, chúng tôi có thể có 1 đến 3 tầng. Như chúng ta hiện có 3 DLL, nếu chúng ta triển khai tất cả các DLL trên cùng một máy, thì chúng ta chỉ có 1 lớp vật lý nhưng có 3 lớp logic.

Nếu chúng ta chọn triển khai mỗi DLL trên một máy riêng biệt, thì chúng ta có 3 tầng và 3 lớp.

Vì vậy, Lớp là một sự phân tách hợp lý và Các tầng là một sự tách biệt vật lý. Chúng ta cũng có thể nói rằng, tầng là sự triển khai vật lý của các lớp.


Điều tôi hiểu từ câu trả lời của bạn rằng chúng tôi có thể triển khai 3 lớp (DLL) trên ba máy chủ khác nhau. Đúng ? Bạn có thể vui lòng cho tôi biết làm thế nào tôi có thể cung cấp tham chiếu của lớp Business Logic trên lớp trình bày không?
Mazhar Khan

@MazharKhan Bạn có thể muốn sử dụng một dịch vụ để hiển thị chức năng của lớp doanh nghiệp cho lớp trình bày
Amit Saxena

32

Tại sao luôn cố gắng sử dụng những từ phức tạp?

Một lớp = một phần mã của bạn , nếu ứng dụng của bạn là một chiếc bánh, đây là một lát cắt.

Một tier = một máy vật lý , một máy chủ.

Một lớp lưu trữ một hoặc nhiều lớp.


Ví dụ về các lớp:

  • Lớp trình bày = thường là tất cả các mã liên quan đến Giao diện người dùng
  • Lớp truy cập dữ liệu = tất cả các mã liên quan đến quyền truy cập cơ sở dữ liệu của bạn

Tầng:

Mã của bạn được lưu trữ trên một máy chủ = Mã của bạn được lưu trữ trên một tầng.

Mã của bạn được lưu trữ trên 2 máy chủ = Mã của bạn được lưu trữ trên 2 tầng.

Ví dụ: một máy lưu trữ chính Trang web (lớp Trình bày), một máy khác bảo mật hơn lưu trữ tất cả các mã nhạy cảm bảo mật hơn (mã doanh nghiệp thực - lớp doanh nghiệp, lớp truy cập cơ sở dữ liệu, v.v.).


Có rất nhiều lợi ích để thực hiện một kiến ​​trúc lớp. Điều này là khó khăn và thực hiện đúng một ứng dụng lớp mất thời gian. Nếu bạn có một số, hãy xem bài đăng này từ Microsoft: http://msdn.microsoft.com/en-gb/l Library / eee658109.aspx


13

Tôi đã tìm thấy một định nghĩa nói rằng Lớp là một sự phân tách hợp lý và các tầng là một sự tách biệt vật lý.


10
  1. Trong tiếng Anh đơn giản, Tierđề cập đến "mỗi hàng trong một loạt các hàng hoặc cấp độ của một cấu trúc được đặt chồng lên nhau" trong khi đó Layerđề cập đến "một tấm, số lượng hoặc độ dày của vật liệu, thường là một trong nhiều, bao phủ một bề mặt hoặc cơ thể ".

  2. Cấp là một đơn vị vật lý , nơi mã / quy trình chạy. Ví dụ: máy khách, máy chủ ứng dụng, máy chủ cơ sở dữ liệu;

    Lớp là một đơn vị logic , làm thế nào để tổ chức mã. Ví dụ: thuyết trình (xem), bộ điều khiển, mô hình, kho lưu trữ, truy cập dữ liệu.

  3. Các bậc biểu thị sự tách biệt vật lý của bản trình bày, kinh doanh, dịch vụ và chức năng dữ liệu của thiết kế của bạn trên các máy tính và hệ thống riêng biệt.

    Các lớp là các nhóm logic của các thành phần phần mềm tạo nên ứng dụng hoặc dịch vụ. Chúng giúp phân biệt giữa các loại nhiệm vụ khác nhau được thực hiện bởi các thành phần, giúp dễ dàng tạo ra một thiết kế hỗ trợ khả năng sử dụng lại các thành phần. Mỗi lớp logic chứa một số loại thành phần riêng biệt được nhóm thành các lớp con, với mỗi lớp con thực hiện một loại nhiệm vụ cụ thể.

Mẫu hai lớp đại diện cho máy khách và máy chủ.

Trong trường hợp này, máy khách và máy chủ có thể tồn tại trên cùng một máy hoặc có thể nằm trên hai máy khác nhau. Hình dưới đây, minh họa một kịch bản ứng dụng Web phổ biến trong đó máy khách tương tác với máy chủ Web nằm trong tầng máy khách. Tầng này chứa logic lớp trình bày và bất kỳ logic lớp nghiệp vụ cần thiết nào. Ứng dụng Web giao tiếp với một máy riêng biệt chứa tầng cơ sở dữ liệu chứa logic lớp dữ liệu.

Lớp vs Tiers

Ưu điểm của lớp và tầng:

  • Phân lớp giúp bạn tối đa hóa khả năng bảo trì mã, tối ưu hóa cách ứng dụng hoạt động khi được triển khai theo các cách khác nhau và cung cấp một phân định rõ ràng giữa các vị trí phải đưa ra quyết định thiết kế hoặc công nghệ nhất định.

  • Đặt các lớp của bạn trên các tầng vật lý riêng biệt có thể giúp thực hiện bằng cách phân phối tải trên nhiều máy chủ. Nó cũng có thể giúp bảo mật bằng cách tách biệt các thành phần và lớp nhạy cảm hơn trên các mạng khác nhau hoặc trên Internet so với mạng nội bộ.

Ứng dụng 1 tầng có thể là ứng dụng 3 lớp.


6

Có bạn bè thân yêu của tôi nói chính xác. Lớp là một phân vùng logic của ứng dụng trong khi tầng là phân vùng vật lý của phân vùng tầng hệ thống phụ thuộc vào phân vùng lớp. Giống như một ứng dụng thực thi trên một máy đơn lẻ nhưng nó tuân theo kiến ​​trúc 3 lớp, vì vậy chúng ta có thể nói rằng kiến ​​trúc lớp có thể tồn tại trong kiến ​​trúc tầng. Trong thuật ngữ đơn giản, kiến ​​trúc 3 lớp có thể thực hiện trong một máy đơn lẻ, chúng ta có thể nói rằng đó là kiến ​​trúc 1 lớp. Nếu chúng ta thực hiện mỗi lớp trên máy riêng biệt thì nó được gọi là kiến ​​trúc 3 tầng. Một lớp cũng có thể chạy nhiều tầng. Trong lớp kiến ​​trúc liên quan thành phần để giao tiếp với nhau dễ dàng.
Giống như chúng ta làm theo kiến ​​trúc được đưa ra dưới đây

  1. lớp trình bày
  2. lớp logic kinh doanh
  3. lớp truy cập dữ liệu

Một khách hàng có thể tương tác với "lớp trình bày", nhưng họ truy cập thành phần công khai của lớp bên dưới (như thành phần công khai của lớp logic nghiệp vụ) vào "lớp logic nghiệp vụ" vì lý do bảo mật.
Q * tại sao chúng ta sử dụng kiến ​​trúc lớp? bởi vì nếu chúng ta thực hiện kiến ​​trúc lớp thì chúng ta sẽ tăng hiệu quả ứng dụng của mình như

==> bảo mật

==> khả năng quản lý

==> khả năng mở rộng

nhu cầu khác như sau khi phát triển ứng dụng, chúng ta cần thay đổi dbms hoặc sửa đổi logic nghiệp vụ, v.v. thì tất cả đều cần thiết.

Q * tại sao chúng tôi sử dụng kiến ​​trúc tầng?

bởi vì việc thực hiện vật lý của mỗi lớp mang lại hiệu quả tốt hơn, nếu không có kiến ​​trúc lớp, chúng ta không thể thực hiện kiến ​​trúc tầng. máy riêng biệt để thực hiện tầng riêng và tầng riêng biệt thực hiện một hoặc nhiều lớp đó là lý do tại sao chúng tôi sử dụng nó.
nó sử dụng cho mục đích chịu lỗi. ==> dễ bảo trì.

Ví dụ đơn giản

Giống như một ngân hàng mở trong một buồng, trong đó phân loại nhân viên:

  1. người giữ cổng
  2. một người cho tiền mặt
  3. một người chịu trách nhiệm giới thiệu chương trình ngân hàng
  4. giám đốc

tất cả chúng là các thành phần liên quan của hệ thống.

Nếu chúng tôi đến ngân hàng cho mục đích cho vay thì trước tiên, một người gác cổng sẽ mở cửa với nụ cười sau đó chúng tôi đến gần một người giới thiệu tất cả các chương trình cho vay sau đó chúng tôi đến cabin quản lý và thông qua khoản vay. Sau đó, cuối cùng chúng tôi đến quầy thu ngân cho vay. Đây là lớp kiến ​​trúc của ngân hàng.

Còn lớp thì sao? Chi nhánh của một ngân hàng mở tại một thị trấn, sau đó ở một thị trấn khác, sau đó ở một thị trấn khác nhưng yêu cầu cơ bản của mỗi chi nhánh là gì

  1. người giữ cổng
  2. một người cho tiền mặt
  3. một người chịu trách nhiệm giới thiệu chương trình ngân hàng
  4. giám đốc

chính xác cùng một khái niệm của lớp và lớp.


Giải thích tuyệt vời thân yêu
Dulaj Kulathunga

6

Các lớp được phân tách hợp lý related-functionality[code] trong một ứng dụng, Giao tiếp giữa các lớp rõ ràng và được ghép lỏng lẻo. [Logic trình bày, logic ứng dụng, logic truy cập dữ liệu]

Các bậc là sự tách biệt vật lý của layers[được lưu trữ trên các máy chủ riêng lẻ] trong một máy tính (quy trình) riêng lẻ.

nhập mô tả hình ảnh ở đây

Như thể hiện trong sơ đồ:

1-Tier & 3-Layers « App Logic  with out DB access store data in a files.
2-Tier & 3-Layers « App Logic & DataStorage-box.
2-Tier & 2-Layers « Browser View[php] & DataStorage[procedures]
2-Tier & 1-Layers « Browser View[php] & DataStorage, query sending is common.
3-Tier & n-Layer  « Browser View[php], App Logic[jsp], DataStorage

n Tier ưu điểm:
Better an
Khả năng mở rộng : Là tổ chức của bạn phát triển Bạn có thể mở rộng lên DB-Tier của bạn với DB-Clustering với ra tầng khác cảm động.
Khả năng bảo trì : Nhà thiết kế web có thể thay đổi Mã xem, mà không cần chạm vào các lớp khác trên các tầng khác.
Dễ dàng nâng cấp hoặc nâng cao [Ví dụ: Bạn có thể thêm Mã ứng dụng bổ sung, Nâng cấp vùng lưu trữ hoặc thậm chí thêm nhiều lớp trình bày cho các mục riêng biệt như điện thoại di động, máy tính bảng, pc]


6

Tôi thích mô tả dưới đây từ Hướng dẫn Kiến trúc Ứng dụng Microsoft 2

Các lớp mô tả các nhóm logic của chức năng và các thành phần trong một ứng dụng; trong khi các tầng mô tả phân phối vật lý của chức năng và các thành phần trên các máy chủ, máy tính, mạng hoặc các vị trí từ xa riêng biệt. Mặc dù cả hai lớp và tầng đều sử dụng cùng một bộ tên (trình bày, kinh doanh, dịch vụ và dữ liệu), hãy nhớ rằng chỉ các tầng có nghĩa là một sự tách biệt vật lý.


5

Tôi sử dụng các lớp để mô tả kiến ​​trúc sư hoặc ngăn xếp công nghệ trong một thành phần của các giải pháp của tôi. Tôi sử dụng các tầng để nhóm hợp lý các thành phần đó một cách điển hình khi liên quan đến mạng hoặc liên kết xử lý.


1

Về mặt kỹ thuật, một Cấp có thể là một loại môi trường tối thiểu cần thiết để mã chạy.

Ví dụ, giả sử một ứng dụng 3 tầng có thể chạy trên

  1. 3 máy vật lý không có HĐH.
  2. 1 máy vật lý với 3 máy ảo không có HĐH.

    (Đó là một ứng dụng cấp 3 (phần cứng))

  3. 1 máy vật lý với 3 máy ảo với 3 hệ điều hành khác nhau / giống nhau

    (Đó là một ứng dụng cấp 3- (HĐH))

  4. 1 máy vật lý với 1 máy ảo với 1 HĐH nhưng 3 AppServers

    (Đó là ứng dụng cấp 3- (Máy chủ ứng dụng))

  5. 1 máy vật lý với 1 máy ảo với 1 HĐH với 1 AppServer nhưng 3 DBMS

    (Đó là một ứng dụng cấp 3- (DBMS))

  6. 1 máy vật lý với 1 máy ảo với 1 HĐH với 1 AppServers và 1 DBMS nhưng 3 sổ làm việc Excel.

    (Đó là ứng dụng cấp 3- (Máy chủ ứng dụng))

Sổ làm việc Excel là môi trường bắt buộc tối thiểu để mã VBA chạy.

3 sách bài tập đó có thể ngồi trên một máy tính vật lý hoặc nhiều.

Tôi đã nhận thấy rằng trong thực tế mọi người có nghĩa là "Cấp hệ điều hành" khi họ nói "Cấp" trong ngữ cảnh mô tả ứng dụng.

Đó là nếu một ứng dụng chạy trên 3 HĐH riêng biệt thì đó là ứng dụng 3 tầng.

Vì vậy, một cách chính xác về mặt mô tả một ứng dụng sẽ là

Có khả năng "1 đến 3 Cấp, chạy trên ứng dụng 2 tầng".

:)


Các lớp chỉ là các loại mã liên quan đến phân tách chức năng của các nhiệm vụ với ứng dụng (ví dụ: Trình bày, Dữ liệu, Bảo mật, v.v.)


0

Các lớp là các thực thể khái niệm và được sử dụng để phân tách chức năng của hệ thống phần mềm theo quan điểm logic; khi bạn thực hiện hệ thống, bạn tổ chức các lớp này bằng các phương thức khác nhau; trong điều kiện này, chúng tôi đề cập đến chúng không phải là lớp mà là tầng.


0

Khi bạn nói về trình bày, dịch vụ, dữ liệu, lớp mạng, bạn đang nói về các lớp. Khi bạn "triển khai chúng một cách riêng biệt", bạn nói về các tầng.

Tiers là tất cả về triển khai. Theo cách này: Chúng tôi có một ứng dụng có giao diện được tạo trong Angular, nó có một phụ trợ là MongoDB và một lớp giữa tương tác giữa giao diện và phụ trợ. Vì vậy, khi ứng dụng lối vào này, ứng dụng cơ sở dữ liệu và lớp giữa được triển khai riêng, chúng tôi nói đó là ứng dụng 3 tầng.

Lợi ích: Nếu chúng ta cần mở rộng quy mô phụ trợ của mình trong tương lai, chúng ta chỉ cần mở rộng quy mô phụ trợ một cách độc lập và không cần phải mở rộng quy mô.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.