2008-11-23 63 views
166

Gần đây tôi đã nhìn thấy một vài bài đăng của nhà phát triển, bao gồm một câu đọc nhiều hay ít như sau: "Phải có kinh nghiệm với kiến ​​trúc N-Tier" hoặc "Phải có khả năng phát triển ứng dụng N-Tier".Kiến trúc N-Tier là gì?

Điều này dẫn tôi đến hỏi, kiến ​​trúc N-Tier là gì? Làm thế nào để có được kinh nghiệm với nó?

+2

Điều thú vị là bài đăng khác này cũng hỏi kiến ​​trúc N-Tier là gì, nhưng câu trả lời hoàn toàn khác. http://stackoverflow.com/questions/7271165/what-does-n-tier-architecture-mean-nowadays. Dường như có kiến ​​trúc N-Tier cho phần mềm và kiến ​​trúc N-Tier cho phần cứng. – Noremac

Trả lời

228

Wikipedia:

Trong công nghệ phần mềm, đa tầng kiến ​​trúc (thường được gọi là kiến ​​trúc n-tier) là một kiến ​​trúc client-server trong đó, trình bày, việc xử lý ứng dụng và quản lý dữ liệu là các quy trình riêng biệt về mặt logic. Đối với ví dụ , một ứng dụng sử dụng các phần mềm trung gian để yêu cầu dữ liệu dịch vụ giữa người dùng và cơ sở dữ liệu sử dụng kiến ​​trúc nhiều lớp . Việc sử dụng rộng rãi nhất kiến ​​trúc "đa tầng " đề cập đến kiến ​​trúc ba tầng .

Điều gây tranh cãi được tính là "tầng", nhưng theo ý kiến ​​của tôi, cần ít nhất phải vượt qua ranh giới quy trình. Hoặc người nào khác nó được gọi là lớp. Nhưng, nó không cần phải có trong các máy vật lý khác nhau. Mặc dù tôi không khuyên bạn sử dụng nó, bạn có thể tầng máy chủ logic và cơ sở dữ liệu trên cùng một hộp.

alt text

Sửa: Một ý nghĩa là tầng trình bày và tầng logic (đôi khi được gọi là Business Logic Layer) cần phải vượt qua ranh giới máy "trên dây" đôi khi trên không đáng tin cậy, chậm, và/hoặc không an toàn mạng. Điều này rất khác với ứng dụng Desktop đơn giản, nơi dữ liệu sống trên cùng một máy như các tệp hoặc Ứng dụng web, nơi bạn có thể nhấn trực tiếp vào cơ sở dữ liệu.

Đối với lập trình n-tier, bạn cần gói dữ liệu theo một số loại biểu mẫu có thể di chuyển được gọi là "tập dữ liệu" và di chuyển chúng qua dây. .NET là giao thức lớp học hoặc giao thức Dịch vụ Web như SOAP. Một vài trong số những nỗ lực đó để bay các vật thể qua dây.

+5

"3 tầng" và "N-tầng" có sự khác biệt không? – chakrit

+5

Nó phụ thuộc vào cách bạn đếm "tầng" (logic, vật lý, vv), nhưng bạn có thể dễ dàng có nhiều hơn 3 quy trình liên quan để viết một ứng dụng. Giao diện người dùng, nền tảng giao diện người dùng (như RCP Eclipse), Dịch vụ web, BLL, DAL, Cơ sở dữ liệu, Dịch vụ xác thực, Dịch vụ báo cáo, Dịch vụ phân tích ... –

+6

@chakrit: Trong thời gian của tôi (tôi cũ) hơn 2 tầng (khách hàng) -server) được tự động đề cập đến n-tier. –

2

Đó là sự hiểu biết của tôi rằng N-Tier tách logic nghiệp vụ, truy cập máy khách và dữ liệu với nhau bằng cách sử dụng các máy vật lý riêng biệt. Lý thuyết là một trong số chúng có thể được cập nhật độc lập với những người khác.

+3

không phải là các máy riêng biệt ... – alchemical

15

Đó là từ thông dụng đề cập đến những thứ như kiến ​​trúc Web thông thường, ví dụ: Javascript - ASP.Net - Middleware - Lớp cơ sở dữ liệu. Mỗi thứ trong số này là "tầng".

19

Nó dựa vào cách bạn tách các lớp trình bày từ logic kinh doanh cốt lõi và truy cập dữ liệu (Wikipedia)

3-tier nghĩa lớp Presentation + lớp Component + lớp truy cập dữ liệu. N-tier là khi các lớp không cần thiết được thêm vào bên ngoài ba lớp này và nó được gắn nhãn bằng một từ thông dụng để nó không giống như các kiến ​​trúc sư của bạn là một loạt các con khỉ crack. Tôi nói điều này dựa trên kiến ​​trúc N-tier mà tôi phải làm việc.

+10

thực sự nếu một trong những tầng đó được lưu trữ bởi một bên từ xa, ví dụ như một bộ xử lý thanh toán, tầng đó có thể không quá "không cần thiết" – Zak

+0

Hmm. Có sự khác biệt rất lớn giữa 'lớp' và 'dịch vụ'. N-Tier thường được sử dụng để chỉ ra rằng đối với các tầng nhất định, bất cứ điều gì ở trên nó phải đi qua nó để truy cập các dịch vụ cấp thấp hơn. Nếu chúng song song, tôi sẽ gọi chúng là các dịch vụ hơn là các tầng. – Dak

+0

Khi xây dựng MCV thông thường (kiến trúc 3 tầng), người ta có thể quyết định triển khai MCV với giao diện hai tầng, vì vậy thực tế có thể thay thế một cấp cụ thể mà không phải sửa đổi ngay cả một dòng mã. Chúng ta thường thấy lợi ích của điều này, ví dụ trong các tình huống mà bạn muốn có thể sử dụng nhiều hơn một cơ sở dữ liệu (trong trường hợp này bạn có một giao diện kép giữa điều khiển và lớp dữ liệu). Khi bạn đặt nó trên lớp Xem (bản trình bày), sau đó bạn có thể (giữ trên !!) thay thế giao diện USER bằng một máy khác, qua đó tự động nhập vào REAL (!!!) –

1

Khi chúng ta nói về các tầng lớp, chúng ta thường nói về các quá trình vật lý (có không gian bộ nhớ khác nhau).

Do đó, trong trường hợp các Lớp của ứng dụng được triển khai trong các quy trình khác nhau, các quy trình khác nhau sẽ là các cấp khác nhau.

Ví dụ: Trong ứng dụng 3 tầng, tầng nghiệp vụ trao đổi với Mainframes (quy trình riêng) và trao đổi với Dịch vụ báo cáo (quy trình riêng), thì ứng dụng đó sẽ là 5 cấp.

Do đó, tên chung là n-tier.

3

Ứng dụng dữ liệu cấp N là các ứng dụng dữ liệu được chia thành nhiều cấp. Cũng được gọi là "ứng dụng phân tán" và "ứng dụng đa nhiệm", các ứng dụng n-tier tách riêng các xử lý thành các tầng riêng biệt được phân phối giữa máy khách và máy chủ. Khi bạn phát triển các ứng dụng truy cập dữ liệu, bạn nên có sự phân tách rõ ràng giữa các tầng khác nhau tạo nên ứng dụng.

Và như vậy trong các ứng dụng dữ liệu http://msdn.microsoft.com/en-us/library/bb384398.aspx

3

N-tier là các ứng dụng dữ liệu được tách thành nhiều tầng. Còn được gọi là "ứng dụng phân tán" và "multitier ứng dụng", các ứng dụng n-tier tách riêng thành các lớp riêng biệt được phân phối giữa máy khách và máy chủ. Khi bạn phát triển các ứng dụng truy cập dữ liệu, bạn cần có khoảng cách rõ ràng giữa các cấp khác nhau tạo nên ứng dụng.

Một ứng dụng n-tier điển hình bao gồm một tầng trình bày, một lớp trung bình và tầng dữ liệu. Cách dễ nhất để tách các tầng khác nhau trong một ứng dụng n-tier là tạo các dự án riêng biệt cho mỗi tầng mà bạn muốn đưa vào ứng dụng của mình. Ví dụ: tầng trình bày có thể là ứng dụng Windows Forms, trong khi logic truy cập dữ liệu có thể là thư viện lớp nằm ở tầng giữa. Ngoài ra, lớp trình bày có thể giao tiếp với dữ liệu truy cập logic ở tầng giữa thông qua dịch vụ như dịch vụ. Tách các thành phần ứng dụng thành các tầng riêng biệt làm tăng khả năng bảo trì và khả năng mở rộng của ứng dụng . Nó thực hiện điều này bằng cách cho phép áp dụng công nghệ mới dễ dàng hơn có thể được áp dụng cho một tầng đơn mà không cần thiết kế lại toàn bộ giải pháp. Trong Ngoài ra, các ứng dụng n-tier thường lưu trữ thông tin nhạy cảm trong tầng giữa, duy trì cách ly khỏi tầng trình bày.

Lấy từ Microsoft website.

4

Nếu tôi hiểu câu hỏi, thì có vẻ như người hỏi đang thực sự hỏi "OK, vì vậy 3 tầng được hiểu rõ, nhưng có vẻ như có sự pha trộn của sự cường điệu, nhầm lẫn và không chắc chắn xung quanh cấp, hoặc để khái quát hóa, kiến ​​trúc N-tier có nghĩa là. Vậy ... định nghĩa của N-tier được hiểu và đồng ý rộng rãi như thế nào? "

Nó thực sự là một câu hỏi khá sâu sắc, và để giải thích tại sao, tôi cần phải đi sâu hơn một chút. Chịu với tôi.

Kiến trúc 3 tầng cổ điển: cơ sở dữ liệu, "logic nghiệp vụ" và bản trình bày, là một cách hay để làm rõ cách tôn trọng nguyên tắc tách mối quan tâm.Có thể nói, nếu tôi muốn thay đổi cách "doanh nghiệp" muốn phục vụ khách hàng, tôi không cần phải xem xét toàn bộ hệ thống để tìm ra cách thực hiện điều này, và đặc biệt, các vấn đề kinh doanh quyết định không nên phân tán willy-nilly thông qua mã.

Bây giờ, mô hình này đã phục vụ tốt trong nhiều thập kỷ và đây là mô hình 'máy khách-máy chủ' cổ điển. Chuyển tiếp nhanh chóng tới các dịch vụ đám mây, nơi trình duyệt web là giao diện người dùng cho một nhóm người dùng được phân phối rộng và được phân phối trên thực tế và thường kết thúc bằng việc thêm dịch vụ phân phối nội dung, không phải là một phần của kiến ​​trúc 3 tầng cổ điển (và cần được quản lý theo cách riêng của họ).

Khái niệm tổng quát khi nói đến dịch vụ, dịch vụ vi mô, cách phân phối dữ liệu và tính toán, v.v. Có hay không một cái gì đó là một 'tầng' phần lớn đi xuống để có hay không các tầng cung cấp một giao diện và mô hình triển khai cho các dịch vụ phía sau (hoặc bên dưới) các tầng. Vì vậy, một mạng lưới phân phối nội dung sẽ là một tầng, nhưng một dịch vụ xác thực sẽ không được.

Bây giờ, hãy đọc và đọc các mô tả khác về các ví dụ về kiến ​​trúc N-tier với ý tưởng này trong đầu, và bạn sẽ bắt đầu hiểu vấn đề. Các quan điểm khác bao gồm các phương pháp tiếp cận dựa trên nhà cung cấp (ví dụ NGINX), cân bằng tải nội dung, cách ly dữ liệu và dịch vụ bảo mật (ví dụ: IBM Datapower), tất cả đều có thể hoặc không thể thêm giá trị vào một trường hợp kiến ​​trúc, triển khai và sử dụng cụ thể .

2

Khi xây dựng MCV (kiến trúc 3 tầng) thông thường, bạn có thể quyết định triển khai MCV với giao diện hai tầng, vì vậy thực tế có thể thay thế một cấp cụ thể mà không phải sửa đổi ngay cả một dòng mã .

Chúng ta thường thấy lợi ích của này, ví dụ trong trường hợp bạn muốn có thể sử dụng nhiều cơ sở dữ liệu (trong trường hợp này bạn có giao diện kép giữa điều khiển và lớp dữ liệu).

Khi bạn đặt nó trên lớp xem (bản trình bày), sau đó bạn có thể (giữ !!) thay thế giao diện USER bằng một máy khác, do đó tự động nhập vào REAL (!!!) - và do đó bạn có thể chạy kiểm tra khả năng sử dụng tẻ nhạt hàng ngàn lần mà không cần bất kỳ người dùng nào phải nhấn và nhấn lại và tái nhấn lại những điều tương tự lặp đi lặp lại.

Một số mô tả như 3 tầng kiến ​​trúc với 1 hoặc 2 đôi giao diện như 4 tầng hoặc 5 tầng kiến ​​trúc, ngầm ám chỉ hai giao diện.

Các trường hợp khác bao gồm (nhưng không giới hạn) thực tế là bạn - trong trường hợp hệ thống cơ sở dữ liệu được bán một lần hoặc đầy đủ thực tế có thể xem xét một trong các cơ sở dữ liệu là "chính", và do đó bạn sẽ có một tầng bao gồm tổng thể và một bao gồm cơ sở dữ liệu nô lệ.

dụ Mobile

Do đó, đa tầng - hoặc N-tier - thực sự có một vài giải thích, trong khi đó tôi chắc chắn sẽ dính vào 3 tầng + tầng thêm bao gồm các giao diện mỏng -disk được chèn vào giữa để cho phép hoán đổi tầng, và về kiểm tra (đặc biệt được sử dụng trên thiết bị di động), bạn có thể chạy thử nghiệm người dùng trên phần mềm thực, bằng cách mô phỏng người dùng nhấn theo cách mà logic điều khiển không thể phân biệt với người dùng thực sự nhấn.Điều này gần như tối quan trọng trong mô phỏng thử nghiệm người dùng thực tế, trong đó bạn có thể ghi lại tất cả các đầu vào từ OTA của người dùng và sau đó sử dụng lại cùng một đầu vào khi thực hiện các phép thử hồi quy.

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