해당 Duwamish 심층 분석 - 구성 장

해당 Duwamish 심층 분석 - 구성 장
요약 :
이 논문에서는, 처리 모드 및 전자 서점의 Web.config 해당 Duwamish 온라인 프로파일의 사용을 설명하는 구성 파일의 기능 모듈의 효과를 설명한다.
내용 :
소개
구성 섹션 처리기 선언
사용자 정의 구성 섹션
구성 섹션 처리기
개요
참고 자료
저자
소개 :
이 Asp.Net 프로그래밍 책의 거의 모든 프리젠 테이션, 다음과 같은 형태로 Web.Config 파일에서 문자열을 기반으로하는 데이터베이스에 연결할 때 데이터베이스 연결 문자열을 관리하는 방법에 대해 이야기에서 :
ppSettings>
DD = 키 "를 ConnectionString"값 = "데이터 소스 = 로컬 호스트; 초기 카탈로그 데이터베이스, 사용자 ID =; 암호 ="/>
</ appSettings는>
그런 다음 프로그램에서 다음과 같은 방법을 참조하십시오
System.Configuration.ConfigurationSettings.AppSettings [ "ConnectionString을"]
이것의 장점은 분명하다 : 데이터베이스에 변경이있는 경우에만 매우 편리를 가져다 전체 응용 프로그램 배포 및 마이그레이션 응용 프로그램을 다시 컴파일 할 필요없이,의 Web.config에 연결 문자열을 변경해야합니다.
당신의 Web.config의 역할이 제한 생각한다면, 당신은 잘못, Web.config의 구성이 매우 강력, 그것은 해당 Duwamish에서 ASP.NET 구성 설정의 표준 세트를 확장하는 자신의 XML 구성 태그의 사용을 지원할 수 우리가 일반적인 구성 기술 .NET 웹 응용 프로그램을 개발하는 배울 수 있도록 어느 정도의 기능을 반영, 나는, 아래의 web.config 파일의 해당 Duwamish의 상세한 분석됩니다.
구성 섹션 처리기 선언
해당 Duwamish 솔루션에서의 Web.config 파일이 필요 IIS와 Web.config의 Asp.Net 런타임 관리 및 지원으로, 웹 프로젝트 아래에 위치하므로이 가상 디렉토리에 배치해야합니다, 우리는 그것을 살펴 첫 번째 부분 :
<configSections>
<섹션 이름 = "ApplicationConfiguration"TYPE = "Duwamish7.SystemFramework.ApplicationConfiguration, Duwamish7.SystemFramework"/>
<섹션 이름 = "DuwamishConfiguration"TYPE = "Duwamish7.Common.DuwamishConfiguration, Duwamish7.Common"/>
<섹션 이름 = "SourceViewer"유형 = "System.Configuration.NameValueSectionHandler, 시스템, 버전 = 1.0.3300.0, 문화 = 중립, PublicKeyToken = b77a5c561934e089"/> </ configSections>
이 세 가지 구성 부 핸들러 선언 (절)가 프로파일 가기 <configSections>와 </ configSections> 그들이 단지 이름과 타입 속성을 사용 태그, 상기 이름에 따라 표시해야 정의 속성은 지정된 구성 부분의 이름, 타입 속성은 클래스 구성 섹션 처리기의 이름이 지정된 부로부터 구성 파일을 판독 지정 정의 (두 부분, 상기 핸들러의 클래스 이름의 앞, 후술 어셈블리 이름을 가지고 총회는 bin 디렉토리) 및 버전 번호, 공개 키 및 기타 정보에 있어야합니다.
그들은 특별히 그게 무슨 뜻 이죠 보여줍니다? 예를 들어, 첫 번째 섹션 Asp.Net 의미 Duwamish7.SystemFramework.ApplicationConfiguration를 호출 할 때 ApplicationConfiguration 구성 부분을 읽어 프로그램이 정적 메소드를 System.Configuration.ConfigurationSettings.GetConfig ( "ApplicationConfiguration") 사용시 시스템에 알릴 수있다 이 과정 구성 섹션이 클래스입니다. 구성 섹션 처리기 클래스에 대해서는, 나중에 자세히 논의의이 web.config 파일을 찾기 위해 계속하게됩니다.
사용자 정의 구성 섹션
<system.web> 노드 후, 우리는 (여기에서 소개 기사의 많은 수의 반복하지 않은 system.web 노드의 설명) 다음과 같은 XML 요소를 볼 수 있습니다
pplicationConfiguration>
<! - 추적 파일 설정 ->
DD 키 = "SystemFramework.Tracing.Enabled"값 = "거짓"/>
<! - 추적 설정 파일에 설정하십시오. 이 파일은 상대해야한다
루트 응용 프로그램 디렉토리. ->
DD 키 = "SystemFramework.Tracing.TraceFile"값 = "DuwamishTrace.txt"/>
<! -이 스위치의 TRACELEVEL. ->
DD 키 = "SystemFramework.Tracing.TraceLevel"값 = "4"/>
<! -이 스위치의 이름입니다. 이 이름에 대한 추적 레벨을 통해 설정할 수 있습니다
환경 변수 또는 레지스트리 ->
DD 키 = "SystemFramework.Tracing.SwitchName"값 = "DuwamishTraceSwitch"/>
<! - Tracing.SwitchName 스위치의이 설명 ->
DD 키 = "SystemFramework.Tracing.SwitchDescription"값 = "오류 및 해당 Duwamish에 대한 추적 정보"/>
<! - 이벤트 로그 설정
참고 : 기본 Duwamish7 이벤트 소스 이름이 설치 중 로컬 컴퓨터에 생성됩니다. 당신은 다른 이벤트 소스에 이벤트를 기록하려면
해당 이벤트 소스가 존재해야합니다.
->
DD 키 = "SystemFramework.EventLog.Enabled"값 = "진정한"/>
DD 키 = "SystemFramework.EventLog.Machine"값 = "." />
DD 키 = "SystemFramework.EventLog.SourceName"값 = "Duwamish7"/>
<! - 표준 TRACELEVEL 값을 사용 :
= 꺼짐 0
1 = 오류
2 = 경고
3 = 정보
4 = 장황한 ->
DD 키 = "SystemFramework.EventLog.LogLevel"값 = "1"/>
</ ApplicationConfiguration>
<DuwamishConfiguration>
<! - 해당 Duwamish 응용 프로그램에 특정 설정 ->
DD 키 = "Duwamish.DataAccess.ConnectionString"값 = "서버 = LUYAN \ NETSDK, 사용자 ID = Duwamish7_login; 암호 = 암호, 데이터베이스 = Duwamish7, 연결 재설정 = FALSE"/>
DD 키 = "Duwamish.Web.EnablePageCache"값 = "진정한"/>
DD 키 = "Duwamish.Web.PageCacheExpiresInSeconds"값 = "3600"/>
DD 키 = "Duwamish.Web.EnableSsl"값 = "거짓"/>
</ DuwamishConfiguration>
<SourceViewer>
<! - 소스 브라우징 유효한 디렉토리. 이러한 소문자를 유지합니다. ->
DD 키 = "." 값 = ""/>
DD 키 = "모듈"값 = ""/>
DD 키 = ".. \ 공통 \ 데이터"값 = ""/>
DD 키 = "... \ systemframework"값 = ""/>
DD 키 = ".. \ 사업 \ 외관"값 = ""/>
DD 키 = ".. \ 사업 \ 규칙"값 = ""/>
DD 키 = "... \ DATAACCESS"값 = ""/>
DD 키 = 값 = "" "보안"/>
DD 키 = "문서 \ 공통의"값 = ""/>
DD 키 = "문서 \ DATAACCESS"값 = ""/>
DD 키 = "문서 \ 외관"값 = ""/>
DD 키 = "문서 \ 규칙"값 = ""/>
DD 키 = "문서 \ 웹"값 = ""/>
</ SourceViewer>
단면 형상 정보는 두 개의 주요 부분으로 나누어진다 : 구성 부 핸들러 선언 영역 설정 부 설정 영역, 이는 지침 참조 참고 사용 실제 구성 설정을 포함 정의한 배치 된 세 부분 구성 단면적이며 모든 구성 정보는 <구성> 사이에 존재하고 <configSections> 영역 뒤에 배치 부의 </ 구성> 루트 XML 태그 영역에 배치한다.
구성 섹션 처리기
이미 설명한 바와 같이, 클래스에 정의 섹션 구성 섹션을 처리합니다 Duwamish7.SystemFramework.ApplicationConfiguration 및 Duwamish7.Common.DuwamishConfiguration, 그들이있는 SystemFramework 및 공통 프로젝트를 .NET 구성 섹션이 달성해야 처리하는 모든 클래스가 필요 IConfigurationSectionHandler 인터페이스는 IConfigurationSectionHandler 인터페이스는 자동 ConfigurationSettings.GetConfig 정적 방법, 즉 때 호출되는 하나의 객체 (객체 부모 configContext,있는 XmlNode 섹션 객체) 만들기 호출하는 이니셔티브를 취할 필요가없는 방법을,있다, 매우 간단합니다 당신이 구성 섹션을 얻을 수있는 프로그램에 ConfigurationSettings.GetConfig을 사용하는 경우, .NET은 자동으로 클래스 이름과 정의 된 구성 섹션 선언을 변경하는 경로에 따라 구성 섹션 처리기 클래스를 인스턴스화하고, Create 메서드를 호출합니다. 여기서 해당 Duwamish 호 흐름 처리 클래스이다 :
Global.asax에 1 정적 메소드 호출 방법의 Application_OnStart ApplicationConfiguration.OnApplicationStart 내부와 도포 루트 절대 경로를 얻는다.
무효의 Application_OnStart () {ApplicationConfiguration.OnApplicationStart (Context.Server.MapPath (Context.Request.ApplicationPath)); 문자열의 configPath = Path.Combine (Context.Server.MapPath (Context.Request.ApplicationPath) "remotingclient.cfg"); 경우 (File.Exists (의 configPath)) RemotingConfiguration.Configure (의 configPath); }
2 구성 부에 System.Configuration.ConfigurationSettings.GetConfig 방식에 ApplicationConfiguration.OnApplicationStart 정적 메소드 호출 :
공공 정적 무효 OnApplicationStart (문자열 myAppPath) = {appRoot myAppPath; System.Configuration.ConfigurationSettings.GetConfig ( "ApplicationConfiguration"); System.Configuration.ConfigurationSettings.GetConfig ( "DuwamishConfiguration"); System.Configuration.ConfigurationSettings.GetConfig ( "SourceViewer"); }
우리는 해당 Duwamish, 발견하고 이미 말했기 때문에, 값 GetConfig 반환을하지 않았다, GetConfig 방법은이 방법 구성 섹션 처리기 만들기 때문에, 단지 라인에 밖으로 이동합니다 방법 구성 값을 생성 할 필요가 발생합니다.
3 구성 예는 읽어 Duwamish7.Common.DuwamishConfiguration 클래스
공공 개체 (개체의 부모를 configContext,있는 XmlNode 섹션 개체) 만들기 {NameValueCollection은 설정; () {NameValueSectionHandler baseHandler = 새로운 NameValueSectionHandler을 시도; 설정 = (NameValueCollection은) baseHandler.Create (부모 configContext, 부); } 잡기 {설정 = NULL; } 경우 (설정 == NULL) {= dbConnectionString DATAACCESS_CONNECTIONSTRING_DEFAULT; pageCacheExpiresInSeconds = WEB_PAGECACHEEXPIRESINSECONDS_DEFAULT; enablePageCache = WEB_ENABLEPAGECACHE_DEFAULT; enableSsl = WEB_ENABLESSL_DEFAULT; } 다른 {dbConnectionString = ApplicationConfiguration.ReadSetting (설정, DATAACCESS_CONNECTIONSTRING, DATAACCESS_CONNECTIONSTRING_DEFAULT); pageCacheExpiresInSeconds = ApplicationConfiguration.ReadSetting (설정 WEB_PAGECACHEEXPIRESINSECONDS, WEB_PAGECACHEEXPIRESINSECONDS_DEFAULT); enablePageCache = ApplicationConfiguration.ReadSetting (설정 WEB_ENABLEPAGECACHE, WEB_ENABLEPAGECACHE_DEFAULT); enableSsl = ApplicationConfiguration.ReadSetting (설정 WEB_ENABLESSL, WEB_ENABLESSL_DEFAULT); } 설정을 반환; }
여기에서 당신은 정의 실제 구성 값이 있는지 확인하기 위해 해당 Duwamish 실제로하지 않았다, 내부 XmlNode에서 데이터를 읽어 자신의 손을 볼 수 있지만, 직접 NameValueSectionHandler에 전송 된 데이터에, 그는 그것을 수행 한 작업을 실제 구성 읽기를 할 수 그렇지 않은 경우, 기본값을 할당합니다.
요약 :
당신만큼, 직접 어디서나 프로그램, 예를 들어, 구성 값에 액세스하기 위해 다른 프로그램에서 클래스의 정적 변수를 구성하는 데 사용할 수 있기 때문에 지금까지의 Web.config의 구성 값은 정적 변수 구성 클래스를 읽은 Duwamish7.Common.DuwamishConfiguration.ConnectionString 입력을 얻을 수있다 : 서버 = LUYAN \ NETSDK, 사용자 ID = Duwamish7_login; 암호 = 암호, 데이터베이스 = Duwamish7; 연결 = FALSE 문자열을 재설정합니다. 더욱 바람직하게, 좀 더 복잡한 사용자 지정 구성 전처리, 구성 섹션 및 구성 섹션 처리기 자신을 확장 할 수 있습니다.

HTTPS : //www.cnblogs.com/Spring/archive/2006/06/10/422547.html 재현

추천

출처blog.csdn.net/weixin_34343308/article/details/93932421