2009-03-17 34 views
5

Tôi muốn biết, cách tốt nhất để quản lý kết nối với cơ sở dữ liệu trong asp.net là gì.Quản lý kết nối đến cơ sở dữ liệu trong ứng dụng asp.net

Ứng dụng của tôi được tạo bằng kiến ​​trúc N-Tier. Các Dal bao gồm các lớp học tĩnh với các phương pháp như

Public Shared Sub Delete(_ 
    ByVal connection As MyConnectionClass, _ 
    ByVal contact_id As Integer, _ 
    ByVal contact_timestamp As Date _ 
) 

    With connection.ProcParams 
     .Add(New StoredProcParam("p_contact_id", contact_id, OracleDbType.Int32)) 
     .Add(New StoredProcParam("p_contact_timestamp", contact_timestamp, OracleDbType.Date)) 
    End With 

    connection.Execute("PKG_DATA_ACCESS.DeleteContact") 

End Sub 

Điểm cần lưu ý ở đây, là tôi vượt qua kết nối đến DAL từ BLL.

Đây là những điểm tôi đã cân nhắc, nhưng không có điểm nào trong số đó có vẻ ổn với tôi, vì vậy tôi chỉ yêu cầu một lời khuyên.

Tôi có nên tạo các kết nối trong MasterPage, lưu nó trong một đối tượng, sau đó vượt qua nó để đối tượng doanh nghiệp của tôi như tôi tạo ra chúng (điều tôi đang cố gắng để tránh)

Tôi có nên tạo một kết nối sử dụng một lớp tĩnh và gọi một phương thức như CreateConnection trên nó, từ hàm tạo của đối tượng nghiệp vụ của tôi (Tôi muốn, nhưng tôi không muốn có kết nối cho mỗi đối tượng, tôi muốn nó được chia sẻ cho tất cả các cá thể đối tượng của tôi, nhưng vì asp.net là đa luồng, một lớp tĩnh không có ý nghĩa để lưu trữ các kết nối)

Lý tưởng nhất, giải pháp cũng sẽ hoạt động tốt trong môi trường Windows Forms (Vì vậy, không có kết nối lưu trữ trong sessi bật và lấy nó bằng phương pháp tĩnh trong một lớp, đối với ngữ cảnh hiện tại)

+0

Chia sẻ cùng một kết nối trên toàn bộ ứng dụng không phải lúc nào cũng là một phương pháp hay. Hãy suy nghĩ về một trang web với hàng trăm yêu cầu mỗi giây, tất cả đều trải qua kết nối tương tự với cơ sở dữ liệu ... –

+0

Tôi đã suy nghĩ nhiều hơn về kết nối cho mỗi người dùng, nhưng câu trả lời của Neil N là tốt, đó là điều tôi chưa từng nghĩ đến. – Martin

Trả lời

13

Đừng cố gắng duy trì kết nối. Khởi tạo nó trong mỗi phạm vi mà bạn đang sử dụng nó. .Net sẽ quản lý một nhóm các kết nối cho bạn, thông qua các dạng cửa sổ hoặc trong asp.net.

Cố gắng giữ kết nối là đối tượng phiên hoặc trong trang chính sẽ thực sự làm tổn thương hiệu suất, chưa kể đến việc giới thiệu các sự cố khác.

Từ bình luận của BC:

chuỗi kết nối phải là các chuỗi bằng kết thúc trong cùng một hồ bơi.

+1

Điều đáng nói ở đây là các chuỗi kết nối phải bằng chuỗi để kết thúc trong cùng một hồ bơi –

+0

tốt, tôi không nghĩ về điều đó, giải pháp này phù hợp với nhu cầu của tôi và đơn giản hơn về thiết kế, tôi thích nó:) – Martin

+0

Ồ, và cảm ơn bạn đã phản hồi nhanh chóng – Martin

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