2010-02-15 2 views
1

NHibernate를 사용하여 IHttpModule을 사용하여 요청 당 세션을 사용하는 ASP.NET 웹 응용 프로그램을 방금 다시 구현했습니다. SessionFactory는 web.config 파일의 연결 문자열을 사용하여 응용 프로그램의 시작 부분에 만들어집니다. 그런 다음 SessionFactory가 저장되고 세션은 생성되고 스레드로부터 안전한, 게으른 싱글 톤을 사용하여 해제됩니다.NHibernate와 ASP.NET을 사용할 때 동일한 연결 문자열을 사용해야합니까?

즉, 20 명의 사용자가 응용 프로그램을 사용하는 경우 데이터베이스에 대한 연결을 만들 때 동일한 사용자 (web.config의 연결 문자열에 지정된 사용자)가 사용됩니다. 이는 최상의 방법입니다. SQL Server Express는 결국 연결 수에 대해 불만을 제기합니까? (요청이있을 때마다 연결이 생성되고 해제되므로 실제로는 문제가되지 않을 수 있습니다).

이전 아키텍처에서 현재 사용자의 사용자 이름을 사용하여 연결이 생성되었습니다.이 방법에는 이점이 있습니다 (각 사용자마다 로그인에 대한 보안 제한이있는 경우).

SessionFactory를 포함하고 세션을 관리하는 스레드 세이프, 게으른 싱글 톤 (아래처럼)을 사용하는 경우이 방법은 사이트 전체에서 사용할 수 있다고 생각합니다. 다른 PC에서 응용 프로그램에 액세스하는 2 명의 사용자가 동일한 인스턴스를 사용합니까?

public static NHibernateSessionManager Instance 
{ 
    get 
    { 
    return Nested.NHibernateSessionManager; 
    } 
} 


private class Nested 
{ 
    static Nested() { } 
    internal static readonly NHibernateSessionManager NHibernateSessionManager = 
    new NHibernateSessionManager(); 
} 

답변

1

성능 향상을 목표로하는 것이 좋습니다. 하나의 연결 문자열을 사용하면 connection pooling이 가능합니다.

1

는만큼 연결 문자열이 동일과 같이 동일한 문자열을 사용하여 응용 프로그램의 양쪽에서 더 나은 반환 한을 얻을 것이다 (예를 들어, 당신은 현재 사용자의 사용자 ID를 삽입하지 마십시오).

관련 문제