Xây dựng phần mềm, thiết kế website, cung cấp giải pháp
Học lập trình viên tại Aptech

Quay lại   Cộng đồng C Việt > DATABASE & REPORTING | CÁC HỆ QUẢN TRỊ DATABASE > Thắc mắc về Microsoft SQL Server & Microsoft Access

Cộng đồng C Việt, Lập trình, tuyển lập trình, tuyển lập trình game
Trả lời
 
Các công cụ đề tài Các chế độ hiển thị
  #1  
Cũ 14-12-2007, 10:38 AM
Avatar củalvl
lvl lvl là offline
Thành viên mới
 
Ngày gia nhập: 10 2007
Bài viết: 11
Mặc định

Thiết kế lớp DAL và BLL


Mình mới bắt đầu tìm hiểu về xây dựng ứng dụng 3-tiers và gặp vấn đề này:

Với CSDL SQL Server ta nên xây dựng lớp DAL, BLL riêng hay dùng SQL sever project (Database project) hay là dùng luôn Typed dataset?

Nhờ các bạn giúp đỡ! Xin cảm ơn trước!!!
Trả lời cùng với trích dẫn
  #2  
Cũ 15-12-2007, 10:35 AM
Avatar củathanhlv
thanhlv thanhlv là offline
Thành viên tích cực
 
Ngày gia nhập: 06 2007
Nơi ở: Hà nội
Bài viết: 104
Mặc định

Re: Thiết kế lớp DAL và BLL


DAL và BLL là cái gì vậy
__________________
Sống ở trên đời cần có một TẤM LÒNG để lúc đói còn có chỗ mà nhét THỨC ĂN
Trả lời cùng với trích dẫn
  #3  
Cũ 15-12-2007, 11:12 AM
Avatar củanhc1987
nhc1987 nhc1987 là offline
XCoworker Member
 
Ngày gia nhập: 10 2007
Nơi ở: HCMUNS
Bài viết: 701
Mặc định

Re: Thiết kế lớp DAL và BLL


DAL là Data Access Layer, còn BLL là cái gì tui cũng không biết luôn.

P/s: thiết nghĩ khi đặt câu hỏi thì không nên đánh đố người trả lời như thế.
__________________
Keep moving forward!

... Retired ...
Trả lời cùng với trích dẫn
  #4  
Cũ 15-12-2007, 11:44 PM
Avatar củaKevin Hoang
Kevin Hoang Kevin Hoang là offline
Founder & Administrator
 
Ngày gia nhập: 07 2006
Nơi ở: Hà Nội
Bài viết: 1,512
Mặc định

Re: Thiết kế lớp DAL và BLL


Theo Dr thì có thể là:

DAL == Database Abstraction Layer
BLL == Business logic layer

Về câu hỏi của bạn, Dr cũng chưa biết, chắc phải chờ mấy bác hiểu rõ về DB giúp đỡ.
__________________
Đi một ngày đàng học một sàng dại
Sàng đi sàng lại để lấy một tí khôn

Tìm kiếm hạnh phúc và thành công của mình dựa vào người khác thực sự là ngu ngốc.
Phó mặc tương lai của mình cho số phận, chính là định mệnh của một kẻ lười nhác. (Tim Knox)
___________________________________________

Trả lời cùng với trích dẫn
  #5  
Cũ 19-12-2007, 08:49 AM
Avatar củalvl
lvl lvl là offline
Thành viên mới
 
Ngày gia nhập: 10 2007
Bài viết: 11
Mặc định

Re: Thiết kế lớp DAL và BLL


Mô hình ứng dụng 3-tier (3 tầng) do Microsoft khuyến cáo có dạng như sau:
- Tầng cao nhất: Presentation layer (tầng "trình diễn"): đây là tầng giao diện với người dùng (User interface). Tầng này thì phe ta quen cả rồi (Form, Controls,...). Cũng có một số vấn đề về phương pháp thiết kế nhưng nói chung là ta tự mò cũng không đến nỗi gì
- Tầng giữa: Business Logic Layer (BLL) tầng này định nghĩa các lớp cho phép xử lý các qui trình nghiệp vụ chuyên môn của bài toán. Ví dụ: Lớp KhachHang, lớp SanPham, lớp NhaCungCap,... tầng này chủ yếu liên quan đến logic của bài toán nên được gọi là tầng logic.
- Tầng thấp nhất: Data Access Layer (DAL) tầng này định nghĩa các lớp cho phép tuy cập trực tiếp vào cơ sở dữ liệu (đơn giản thì chỉ gồm nạp dữ liệu vào ứng dụng, cập nhật dữ liệu từ ứng dụng trở lại CSDL).

Nguyên tắc chung cho việc thiết lế là: không chồng lấn giữa các lớp. Một số bạn ở các diễn đàn khác giải thích khác với ý này nên lvl cũng chưa chắc chắn lắm! Đây là theo lvl hiểu:
Tầng trên sử dụng các "dịch vụ" do tầng dưới cung cấp nhưng không được ngược lại. Việc sử dụng này thực ra đơn giản là tầng trên tạo ra các đối tượng của các lớp ở tầng dưới (hoặc dùng các đối tượng toàn cục, hoặc dùng các phương thức tĩnh) và truyền tham số cho các method của các đối tượng đó!
VD: Form Thông tin chi tiết khách hàng sẽ dùng các đối tượng thuộc lớp KhachHang, GiaoDich,... nhưng trong các lớp KhachHang, GiaoDich,... không dùng form!
Các đối tượng KhachHang, GiaoDich,... (tầng BLL) này lại dùng các dịch vụ của tầng dưới nó là DAL để nạp dữ liệu, cập nhật dữ liệu từ/đến CSDL. Tất nhiên là các lớp ở DAL không dùng các dịch vụ (tạo ra đối tượng và dùng các phương thức) của các lớp tầng BLL mặc dù vẫn có thể tạo ra đối tượng BLL (không dùng các phương thức).

Nguyên tắc thiết kế này tạo ra một số thuận lợi cơ bản sau:
1. Nhờ việc phân lớp nên các lớp sẽ dùng chung tốt hơn. Khả năng sửa lỗi, nâng cấp sẽ dễ dàng hơn.
2. Từng lớp đó có thể tái sử dụng cho nhiều ứng dụng khác nhau.

-----------------------

Đây là những gì lvl hiểu! Vẫn đang còn mù mờ lắm! Mong các bạn cùng trao đổi thêm!
Trả lời cùng với trích dẫn
  #6  
Cũ 19-12-2007, 11:46 AM
Avatar củaHaipt
Haipt Haipt là offline
Sharp Lover
 
Ngày gia nhập: 06 2007
Nơi ở: hải phòng
Bài viết: 380
Mặc định

Re: Thiết kế lớp DAL và BLL


Trích dẫn:
Nguyên bản được gửi bởi lvl Xem bài viết
Mình mới bắt đầu tìm hiểu về xây dựng ứng dụng 3-tiers và gặp vấn đề này:

Với CSDL SQL Server ta nên xây dựng lớp DAL, BLL riêng hay dùng SQL sever project (Database project) hay là dùng luôn Typed dataset?

Nhờ các bạn giúp đỡ! Xin cảm ơn trước!!!
Tôi thấy nhiều bạn thường phức tạp hóa 3 Tier lên do chưa hiểu rõ vấn đề, cấu trúc 3 lớp chẳng qua là nguyên tắc chia để trị trong cuộc sống áp dụng vào lĩnh vực phần mềm mà thôi,khi viết các đề án lớn các lập trình viên thường gặp rắc rối trong việc bảo trì sản phẩm , ví dụ khi CSDL có thay đổi cũng làm ảnh hưởng đến toàn bộ project dẫn đến phải sửa lại,biên dịch toàn bộ project (nếu project này do nhiều nhóm coder phát triển thì chi phí bảo rì sẽ rất cao)do vậy các lập trình viên phải chia nhỏ các project làm nhiều gói để dễ quản lý, nó cũng được hiểu như nguyên tắc vết nửt trong xây dựng cầu đường vậy, nói đơn giản bình thường bạn không thể xé đôi 1 miếng bìa được, nhưng nếu miếng bìa đó có góc rách thì người ta có thể lựa đúng chỗ rách đó mà xé toang miếng bìa mất rất ít sức ,nhưng nếu miếng bìa đó được hợp thành từ nhiều miếng bìa gắn lại thì có bị crash cũng chỉ phải sửa lại mảnh bị hỏng thôi thay vì phải thay tất cả để tiết kiệm chi phí và tăng độ bền sản phẩm.Do vậy các chương trình đa lớp sẽ có các thế mạnh như sau
+ Gảm thời gian bảo trì và phát triển chương trình
+ Mỗi tầng có thể chạy trên các OS khác nhau ví dụ , database layer chạy trên UNIX,LINUX Presentation layer thì chạy trên Windows( WEB SERVER là 1 ví dụ điển hình ) và được phát triển bằng nhiều ngôn ngữ LT cũng như nhiều nhóm coder

Nhìn cũng thấy là với các chương trình quy mô nhỏ làm theo cấu trúc ba lớp thì sẽ làm tăng chi phí không cần thiết , nhưng với các ứng dụng lớn có hàm trăm ,nginf người dùng, phát triển bởi nhiều nhóm phần mềm thì việc chia ra làm nhiều lớp là tất yếu, thông thường lớp 1,2 ở trên cùng 1 máy,với các ứng dung phức tạp thì các lớp này còn được chia nhỏ thêm nữa thành 7 lớp, microsoft cũng đã công bố các mô hình đa lớp chuẩn cho .net bạn có thể tham khảo ở file đính kèm, với các ngôn ngữ trước .net (vb6,c++) có thể tìm hiểu thêm về DCOM

Với câu hỏi của bạn, tôi trả lời như sau
1 . typed dataset và 3 Tier architecture không loại trừ lẫn nhau , lớp data access có thể sử dụng typed dataset để trung chuyển dữ liệu giữa các tầng
2.Mô hình tốt nhất còn tùy thuộc vào đế án của bạn ,client sẽ là winform APP, WEB, console???, cách thức sử dụng data của client tiear( chỉ đọc ,tương tác cập nhật hay trung chuyển ..),...

Tài liệu tham khảo
http://www.microsoft.com/downloads/d...displaylang=en
__________________
Phạm Hải
MS Technical Expert
FPT Software Corp.
www.FPTSoftwareCareer.com
www.chodua.com
-----------------------------------------
Join us, Kick off the Big Game!

Đã được chỉnh sửa lần cuối bởi Haipt : 19-12-2007 lúc 11:58 AM.
Trả lời cùng với trích dẫn
  #7  
Cũ 25-12-2007, 02:59 PM
Avatar củalvl
lvl lvl là offline
Thành viên mới
 
Ngày gia nhập: 10 2007
Bài viết: 11
Mặc định

Re: Thiết kế lớp DAL và BLL


Cảm ơn phamtiensinh nhiều!
Trả lời cùng với trích dẫn
Trả lời
Google
 

Bookmarks

Các công cụ đề tài
Các chế độ hiển thị

Các nguyên tắc gửi bài
Bạn không thể gửi đề tài mới
Bạn không thể gửi bài trả lời
Bạn không thể gửi các đính kèm
Bạn không thể chỉnh sửa bài viết của bạn

[IMG] code: On
HTML code: Off

Nhảy tới diễn đàn

Các đề tài tương tự
Đề tài Người bắt đầu đề tài Diễn đàn Các trả lời Bài viết cuối
Nghiên cứu về Design Pattern trong lập trình và sản xuất phần mềm. (vesion 1) Kevin Hoang Rắc rối với Software Engineering 20 26-01-2010 09:34 AM
factory method cuopbien Thắc mắc về Lập trình C/C++/C++0x 6 20-12-2008 12:10 AM
Lập trình hướng đối tượng ^^! langman Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x 4 22-01-2008 08:06 AM


Toàn bộ thời gian tính theo múi GMT +7. Bây giờ là 05:44 PM.