10/10/2018, 10:31
lập trình web với mô hình 3 lớp ????
em ko hiểu mô hình 3 lớp trong lập trình web là sao . Anh chị nào giải thích giủm em nhé. Em cám ơn nhiều
Bài liên quan
ủa, thế em lập trình web với PHP và mysql thì có đựơc áp dụng mô hình 3 lớp ko anh ?
- presentation tier: lớp giao diện người dùng (có thể có các script và validation đơn giản, không động chạm gì đến csdl)
- business logic tier: lớp xử lý các nghiệp vụ (validation có liên quan đến csdl, quyết định truy xuất cái gì, xử lý và trả về cái gì)
- data tier : lớp truy xuất csdl (tạo các câu lệnh sql, kết nối db thực hiện các yêu cầu select, insert, update, delete, ...)
Mình có vài ý về vấn đề bạn hỏi thế này!
Trong lập trình, với những đồ án lớn 1 vài người không thể hoàn thành đc => nảy sinh vấn đề làm sao để nhiều người cùng làm mà mỗi nhóm làm độc lập, ko bị gối đầu nhau => phải chia dự án làm nhiều phần độc lập tương đối mà mỗi nhóm có thể làm mà ko phụ thuộc nhóm khác và mã viết ra phải đc sử dụng lại dễ dàng. Từ đó nảy sinh ra mô hình đa tầng trong lập trình!
Mỗi tầng sẽ do một nhóm đảm nhiệm và đóng vai trò như 1 hộp đen đối với các tầng khác. Nghĩa là, các tầng thấp chỉ đc biết trong tầng cao có các method nào, input và output ntn, và chấm hết! Những xử lý cụ thể thì ko cần biết làm gì!
Mục đích cuối cùng là tăng khả năng quản lý chứ ko tăng performance!
Nhìn vào một ứng dụng CSDL, mọi người có thể nhìn thấy rõ ràng là nó sẽ bao gồm 2 công việc chính:
1- NHập yêu cầu từ user và hiển thị kết quả cho user xem.
2- Ứng dụng xử lý yêu cầu!
ứng với đó, người ta chia ứng dụng là các tầng tương ứng như sau:
1- Presentation layer: Chịu trách nhiệm validate các input từ người dùng, đảm bảo người dùng ko nhập sai ( ví dụ nơi nhập tuổi thì phải gõ vào số >0 chứ ko gõ lung tung). Mục đích là giảm tải bới xử lý cho các tầng sau. Công việc xử lý này sẽ chạy trên client!
2- Business (logic) layer: Phần này theo như tên của nó, sẽ làm công việc tính toán các con số mà client đưa vào. Tầng này đc chạy trên webserver! Sau khi tính toán thì tầng này sẽ phải update vào Db. Tuy nhiên kết nối với DB server như thế nào thì tầng này ko thể quyết định đc. Nó phải gởi yêu cầu truy cập DB cho tầng 3. Bạn thử tưởng tượng, nếu để tầng logic truy cập vào DB, chưa nói đến vấn đề security, chỉ xét đến việc quản lý thì mỗi yêu cầu update DB, tầng này sẽ làm công việc 1- mở connection, 2- thi hành query, 3- đóng connection => rối rắm và nếu nhiều công việc như thế 1 lúc => chết db server. Theo tôi biết thì mấy năm trước, các website tra cứu điểm tuyển sinh cũng chết vì quản lý connection vào DB chưa tốt.
3- Data layer: Tầng này sẽ làm việc truy cập trực tiếp vào DB server. Lý do để sinh ra tầng này là để tập trung quản lý các connection vào DB. Tầng này sẽ làm việc tạo các kết nối, có cơ chế cache cũng như security... Microsoft có một bộ Enterprise library rất hay làm sẵn cho ta cái tầng 3 này rồi => vô cùng khỏe! ()
Tóm lại, những điều trên chỉ ở mức tương đối, phụ thuộc vào trình độ của project leaders khi phân tích thiết kế. Nhưng, trong nhiều trường hợp, sự quá độc lập dễ dẫn đến việc khó viết code và dẫn đến giảm performance. Đối với 1 số người, công việc của tầng logic chỉ là gọi đến tầng 3 chứ chẳng làm xử lý gì khác. Công việc xử lý các business sẽ đc viết trên stored procedure. Việc này có lợi ở chỗ, khi muốn thay đổi Business logic => thay đổi stored procedure chứ ko thay đổi ứng dụng => ko cần compile lại ứng dụng.
Cuối cùng, việc phân tầng này có thể đc implement trong các ứng dụng dù viết = ngôn ngữ gì, ko phải của java hay .net!
Còn nhiều điều nữa, nhưng sắp đến giờ ăn trưa rồi
Mọi người thấy có thiếu sót thì xin chỉ bảo. Thanks