Chỉ có một SQLDataSource là hoàn toàn hợp lệ, nếu nó chỉ là bản demo, mẫu thử nghiệm hoặc bản hack nhanh. Thật nhanh chóng, thật dễ dàng, nó chỉ hoạt động và cung cấp cho bạn kết quả bạn cần.
Tuy nhiên, khi ứng dụng được thiết kế và xây dựng trong thời gian dài và dự đoán rằng mọi thứ (yêu cầu, mong muốn của khách hàng, cuối cùng lược đồ cơ sở dữ liệu) có thể thay đổi, thì có thể có ý nghĩa hơn nhiều để giới thiệu một cách thích hợp " kinh doanh "lớp - mô hình hóa các đối tượng nghiệp vụ của bạn làm đối tượng, và sau đó cung cấp ánh xạ từ cơ sở dữ liệu cơ bản đến các đối tượng nghiệp vụ đó.
Khi nói đi - bạn có thể giải quyết khá nhiều thứ trong khoa học máy tính bằng một lớp nữa (hoặc trừu tượng) - cùng giữ ở đây.
SURE: bạn có thể truy cập thẳng vào cơ sở dữ liệu, và chắc chắn, lúc đầu tiên và cho lần lặp đầu tiên, có thể (hoặc có thể) là cách nhanh nhất. Nhưng về lâu dài, khi một ứng dụng được xây dựng để kéo dài, nó thường là một cách nhanh chóng và bẩn - chi phí bảo trì, chi phí bảo trì, chi phí và công sức cần thiết để thay đổi theo nhu cầu của bạn và của khách hàng sẽ phát triển và khá nhanh chóng, giải pháp nhanh chóng này không còn tuyệt vời nữa, về mặt nỗ lực. Vì vậy, để tổng hợp điểm của tôi: có, ban đầu, sử dụng một nguồn dữ liệu SQL trực tiếp có thể nhanh hơn và dễ dàng hơn - vì vậy hãy sử dụng nó khi đó là điểm quan trọng: để hoàn thành công việc cho một bản demo nhanh, bằng chứng ứng dụng phong cách khái niệm. Nhưng về lâu dài, khi bạn nhìn vào tuổi thọ của một ứng dụng, bạn nên đầu tư nhiều hơn một chút (thiết kế và mã hóa) để thêm lớp trừu tượng này để các trang web của bạn không trực tiếp phụ thuộc vào các chi tiết của cơ sở dữ liệu bên dưới.
Marc
Nguồn
2009-07-30 15:33:17
trong khi tôi đồng ý với tất cả các điểm và câu trả lời của bạn được viết tốt, các trang của bạn giờ đây không phụ thuộc vào chi tiết cơ sở dữ liệu của bạn, mà đối tượng doanh nghiệp của bạn làm. Ưu điểm này mang lại lợi ích gì? –
Lợi thế là: nếu cơ sở dữ liệu của bạn thay đổi, nhưng đối tượng kinh doanh của bạn vẫn giữ nguyên, giao diện người dùng vẫn hoạt động. Nếu bạn sử dụng SqlDataSource trực tiếp, và giống như nhiều, sử dụng một 'SELECT * FROM ....' mã của bạn rất có thể sẽ sụp đổ trường thứ hai khác được thêm vào một bảng cơ sở dữ liệu. Đây sẽ không phải là trường hợp nếu bạn có một lớp kinh doanh ở giữa. –
Ngoài ra, bằng cách đóng gói dữ liệu của bạn vào các đối tượng kinh doanh, nó dễ dàng hơn nhiều để làm việc với chúng. Bạn có ví dụ đối tượng "Khách hàng", bạn có thể đọc và viết các thuộc tính như "CustomerID", "Name" và vv - bạn không phải xử lý các hàng tạp hóa và các trường cơ sở dữ liệu và thực hiện mọi chuyển đổi mỗi khi bạn truy cập dữ liệu. –