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();
}