2010-03-26 30 views
6

Khi nói đến phát triển web, tôi đã luôn luôn cố gắng để làm việc SMART không cứng. Vì vậy, đối cùng thời gian aproach của tôi để tương tác với cơ sở dữ liệu trong các dự án ASPNET tôi đã này:Tại sao tôi nên sử dụng phương pháp tiếp cận N-Tier Khi sử dụng SqlDatasource là A LOT EASIER?

1) Tạo thủ tục của tôi được lưu

2) Kéo một điều khiển SqlDataSource vào trang aspx của tôi

3) Bind một DataList kiểm soát để SqlDataSource tôi

4) Insert, Update & Xóa bằng cách sử dụng DataList tôi hoặc lập trình bằng cách sử dụng được xây dựng trong các phương pháp SqlDataSource EG

MySqlDataSource.InsertParameters["author"].DefaultValue = TextBox1.Text; 

MySqlDataSource.Insert(); 

Tuy nhiên gần đây tôi có một dự án web tương đối dễ dàng. Vì vậy, tôi quyết định sử dụng một mô hình 3 tầng ... Nhưng tôi đã kiệt sức nửa chừng và dường như không có giá trị nó! Dường như tôi đã làm việc quá HARD cho một dự án có thể dễ dàng được thực hiện bởi một vài điều khiển SqlDataSource.

Vậy tại sao Mô hình N-Tier tốt hơn Phương pháp tiếp cận của tôi? Có liên quan gì đến hiệu suất không? Những lợi thế của việc kiểm soát ObjectDataSource qua kiểm soát SqlDataSource là gì?

+0

"ALOT EASIER" để duy trì? – adrianm

+0

Điểm tốt - Trên thực tế tôi luôn nghĩ rằng sẽ dễ dàng hơn để tinker với kiểm soát nguồn dữ liệu của tôi hơn sửa đổi mã trong DAL & BLL ... Nhưng Im bắt đầu thấy một điểm yếu lớn trong cách tiếp cận của tôi –

Trả lời

8

Bạn tiếp cận điều ngược. Cách tiếp cận SQLDataSource là dành cho các dự án nhỏ nhẹ. Ngay sau khi bạn nhận được lớn hơn, bạn sẽ muốn tái sử dụng cấu trúc và truy vấn giữa rất nhiều trang khác nhau.

Với cách tiếp cận của bạn có nghĩa là áp dụng mẫu thiết kế sao chép/dán từ trang này sang trang khác để bạn có thể sử dụng cùng một truy vấn.Bây giờ hãy nghĩ điều gì xảy ra khi một cái gì đó thay đổi (ví dụ cấu trúc DB) và bạn phải sao chép những thay đổi đó giữa 50 trang mà tất cả đều có các chữ cái SQL được nhúng trong chúng - bạn đang ở trong một thế giới bị tổn thương.

Ở đây có mô hình n-tier để giải cứu - logic truy cập dữ liệu phải được phân lập trong cấp riêng của nó và sẽ chỉ có một đoạn mã chịu trách nhiệm về logic nghiệp vụ/dữ liệu nhất định và nếu cần thay đổi sẽ chỉ có một đoạn mã cần được thay đổi. Vấn đề với cách tiếp cận này là nó đòi hỏi nhiều nỗ lực hơn và tiền hoàn vốn chỉ hiển thị trên các dự án hợp lý lớn.

+1

* sao chép/dán thiết kế chống mẫu. – Wix

+0

i có nghĩa là mỉa mai –

+0

Cảm ơn! Giờ thì tôi đã hiểu. Kịch bản của bạn thực sự mở ra đôi mắt của tôi .. hơn nữa duy trì các trang web được xây dựng bằng cách sử dụng phương pháp tiếp cận của tôi luôn luôn là HARD! Tôi đoán làm việc HARD để có được kết quả SMART là giá trị nỗ lực. –

3

Dưới đây là một vài lý do cho n-tier:

  1. n-tier có nghĩa là khả năng mở rộng tốt hơn. Bạn có thể thêm các máy chủ tầng giữa để mở rộng nếu máy chủ cơ sở dữ liệu không thể theo kịp.
  2. n-tier cho phép bạn thêm bảo mật bên ngoài cơ sở dữ liệu (ví dụ: máy chủ thư mục doanh nghiệp).
  3. n-tier cung cấp cho bạn một trung gian có thể kiểm tra các biến SQL, xác thực và ràng buộc các biến từ giao diện người dùng.
  4. n-tier có thể khớp nối lỏng hơn. SqlDataSourceControl có nghĩa là UI biết tất cả về lược đồ cơ sở dữ liệu. (Điều này là run rẩy - nếu bạn thêm một trường mới, hiệu ứng sẽ gợn qua giao diện người dùng bất kể bạn làm gì.)
  5. Cấp trung gian làm cho một giao diện người dùng khác có thể sử dụng lại chức năng.

Nếu bạn chỉ viết một ứng dụng web CRUD, không có cơ hội chia sẻ và khả năng mở rộng tốt, cách tiếp cận của bạn có thể không sao.

+0

Tôi đoán vấn đề của tôi đã sử dụng công cụ sai cho hoạt động sai. –

1

Không có vấn đề gì với việc sử dụng điều khiển SqlDataSource nếu bạn muốn. Điều đó đang được nói, có rất nhiều lý do hợp lệ để sử dụng một hệ thống N-tier.

  1. nó chặt cặp vợ chồng trình bày của bạn lớp để lớp dữ liệu của bạn
  2. bạn lặp lại một núi công việc
  3. truy vấn SqlDataSource thường độc đáo
1

Nếu bạn không xây dựng các dự án cỡ trung bình hoặc lớn, bạn đã khám phá ra bí mật ở đây.

n-tier chỉ giúp cho các ứng dụng lớn hơn; dưới đây, đó là một bài tập thực hành tốt nhất, và một lần đáng chú ý bất kể.

0

Tôi nhận thấy rằng khi bạn lần đầu tiên bắt đầu thử nghiệm ứng dụng của mình, việc sử dụng đối tượng SQLDataSource nhanh hơn rất nhiều. Bạn có thể chuyển qua một lượng đáng kể thiết kế ứng dụng web nhanh chóng bằng phương pháp này trước tiên. Khi ứng dụng của bạn bắt đầu phát triển và phản ánh nhu cầu chuyển sang sử dụng dịch vụ web cho kết nối cơ sở dữ liệu n-tier, bạn có thể đưa ra quyết định của mình tại thời điểm đó. Một số lợi ích đang tạo ra một ứng dụng web chức năng để chứng minh cho khách hàng. Khi họ đồng ý với thiết kế và cách tiếp cận, bạn có thể đưa ra quyết định có thể chuyển đổi các truy vấn thành dịch vụ web. Điều này không quá khó khăn vì bạn đã tạo các truy vấn trong SQLBuilder và bây giờ bạn chỉ cần thiết lập/di chuyển các truy vấn tương tự từ bên trong dịch vụ web và sau đó gọi các truy vấn dịch vụ web thích hợp từ lớp UI. Điều này sẽ mất thời gian nhưng ứng dụng web nguyên mẫu đã chứng minh phương pháp này có thể chấp nhận được và đã tránh được sự chậm trễ đáng kể xung quanh chúng tôi một dịch vụ web trước khi nó xảy ra hoặc có thể không cần thiết.

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