2012-07-06 22 views
5

Tôi đã làm việc trên một ứng dụng web trong ASP.net. Ứng dụng của tôi có một số trang và tất cả chúng cần hiển thị các bảng được điền bởi một cơ sở dữ liệu. Ngay bây giờ những gì tôi đang làm là, trên mỗi trang, tôi đang mở một kết nối cơ sở dữ liệu, thực hiện truy vấn cụ thể cho trang đó và đóng kết nối db. Điều này xảy ra mỗi khi người dùng nhấp vào liên kết để chuyển đến trang mới hoặc nhấp vào một điều khiển biểu mẫu như trang lưới.Thực hành tốt để mở/đóng kết nối trong ứng dụng asp.net?

Tôi đã tự hỏi nếu đây là một thảm họa từ quan điểm thực hiện. Có cách nào tốt hơn để làm điều này không?

+0

Nếu bạn sử dụng odp.net, hành vi mặc định là sử dụng kết nối tổng hợp, hãy xem http://docs.oracle.com/html/E10927_01/featConnecting.htm#i1006393 – tbone

Trả lời

9

Hầu hết các kết nối cơ sở dữ liệu phải được xử lý như sau: Mở càng muộn càng tốt và đóng càng sớm càng tốt. Mở và đóng cho nhiều truy vấn/cập nhật ... đừng nghĩ rằng việc mở nó sẽ giúp bạn tiết kiệm bất cứ điều gì. Bởi vì kết nối tổng hợp thường làm một công việc rất tốt cho bạn quản lý các kết nối.

Hoàn toàn có một vài/vài kết nối được mở/đóng trong quá trình sản xuất một trang. Cố gắng giữ một kết nối duy nhất mở giữa các lần xem trang sẽ là hoàn toàn xấu ... không thực hiện điều đó trong bất kỳ trường hợp nào. Về cơ bản, với kết nối tổng hợp (được kích hoạt theo mặc định cho hầu như tất cả các nhà cung cấp), "đóng" một kết nối thực sự chỉ phát hành nó trở lại hồ bơi để được tái sử dụng. Cố gắng để giữ cho nó mở cho mình sẽ ràng buộc các kết nối có giá trị.

3

Đó chính xác là cách bạn muốn. Kết nối cơ sở dữ liệu chỉ nên được mở khi cần và đóng ngay sau khi sử dụng.

Điều bạn có thể muốn xem, đặc biệt nếu hiệu suất là vấn đề lớn đối với bạn, là caching. Bạn có thể muốn lưu toàn bộ trang hoặc chỉ một phần của trang hoặc chỉ dữ liệu bạn muốn hiển thị trên các trang của mình. Bạn sẽ tiết kiệm rất nhiều cơ sở dữ liệu các chuyến đi theo cách này, nhưng bạn sẽ phải bây giờ xem xét những thứ khác như khi để cập nhật bộ nhớ cache, bộ nhớ đệm cho người dùng khác nhau, vv

3

Từ MSDN - Best Practices in ADO.Net

ứng dụng hiệu suất cao giữ kết nối với nguồn dữ liệu trong sử dụng trong một khoảng thời gian tối thiểu, cũng như tận dụng lợi thế của công nghệ tăng cường hiệu suất như kết nối tổng hợp.

Điều bạn đang làm hoàn toàn ổn, mở kết nối để thực hiện truy vấn và sau đó đóng kết nối sau đó. Nếu bạn giữ kết nối trong một khoảng thời gian dài hơn và có nhiều người truy cập vào ứng dụng của bạn, thì có nhiều khả năng bạn có thể chạy giới hạn kết nối thường được đặt trên cơ sở dữ liệu.

2

Việc kết nối DB với mã phụ trợ là một thực tế tồi. Khi bạn đang học, tôi khuyên bạn nên sử dụng các dịch vụ web để tương tác với giao diện người dùng thay vì liên kết Tương tác dữ liệu với giao diện người dùng.

Giống như giao diện người dùng (ASPX trang) >> BLL (Business Logic Layer) >> DAL (Data Access Layer)

Ngoài ra hãy thử sử dụng các từ khoá 'sử dụng' trong Dal và xử lý các kết nối và tất cả sau khi DB tương tác

+0

Bạn sẽ đủ tử tế để chỉ định rõ ràng các chủ đề mà tôi nên làm đọc nhiều hơn? –

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