티스토리 뷰

Written by안재우(Jaewoo Ahn),닷넷엑스퍼트(.netXpert)

 

다소의아할있겠지만, ASP.NET마스터하기의첫번째단계는ASP.NET설치하는것으로부터시작합니다.약간뜬금없죠?특히이미ASP.NET설치해보셨던분들은‘ASP.NET설치하는게뭐가어렵다고그러는거야?’라고생각하실수도있습니다.

 

ASP.NET설치하는방법은다음과같습니다. .NET Framework런타임설치패키지인dotnetfx.exe실행하면.NET Framework함께ASP.NET설치됩니다.,IIS설치되어있어야정상적으로ASP.NET설치됩니다.

 

설치방법은이것으로끝입니다.그럼이번강좌는여기서?

글을쓰는저나읽는여러분이나설마그럴려고아까운시간을투자하는것은아니겠죠? ^^

 

일반적인ASP.NET서적들에서ASP.NET설치에대한언급은내용처럼짤막한것이대부분일것입니다.아니,심지어설치에대한내용은한줄도나오는경우도있을겁니다.

 

따라서,우리가강좌에서알아보려고하는것은ASP.NET설치되는동안무슨일이일어나는지에대한것입니다.물론이걸몰라도ASP.NET사용하는데는별다른지장이없습니다만,앞으로설명할ASP.NET내부메커니즘을이해하고ASP.NET사용하다보면겪을수도있는문제들의근본적인원인을파악하는데도움이것입니다.

 

서론이길었는데(그렇습니다..많습니다.),그럼본격적으로ASP.NET설치에서무슨일이일어나는지를파헤쳐보기로합시다.

 

1. ASP.NET관련파일들의복사

.NET Framework런타임설치패키지(dotnetfx.exe)실행하면.NET CLR관련파일, BCL(Base Class Library)등과함께ASP.NET관련파일들을설치하게됩니다.익히아시다시피.NET Framework파일들은모두다음경로에설치됩니다.

 

C:\WINDOWS\Microsoft.NET\Framework\v[버전번호]

 

모두RTM(정식버전)기준으로.NET 1.0버전번호는1.0.3705, 1.1경우1.1.4322, 2.0경우2.0.50727입니다.따라서.NET 2.0경우다음경로에설치됩니다.

 

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

 

다음그림은경로에복사된ASP.NET관련파일들을보여줍니다.

사용자 삽입 이미지

 

중에서핵심적인파일들에대해서알아보면다음과같습니다. ASP.NET 2.0이라고명시한파일은2.0에서만존재합니다.

n       aspnet_compiler.exe : ASP.NET 2.0 Precompile도구

n       aspnet_filter.dll : ASP.NET ISAPI필터DLL

n       aspnet_isapi.dll : ASP.NET ISAPI Extension

n       aspnet_perf.dll : ASP.NET성능카운터

n       aspnet_regiis.exe : ASP.NET IIS등록도구

n       aspnet_regsql.exe : ASP.NET 2.0 SQL서버연동기능설치도구

n       aspnet_state.exe : ASP.NET Out-of-Process상태관리서버프로세스

n       aspnet_wp.exe : ASP.NET작업자프로세스(Worker Process)

 

파일들은.NET Framework버전번호에따라연관되는ASP.NET버전역시달라집니다.1.1.4322아래의파일들은ASP.NET 1.1관련된것이며, 2.0.50727아래의파일들은ASP.NET 2.0관련된것입니다.

 

2. ASP.NET설치,등록,응용프로그램스크립트매핑

관련파일들의설치가끝나고나면,설치패키지는다음명령을실행합니다.

 

aspnet_regiis.exe -i

 

명령은ASP.NET관련파일들을실질적으로설치하고필요한등록작업들을수행합니다. ASP.NET성능카운터를비롯한DLL등록하는작업들과ASP.NET 1.x경우ASP.NET클라이언트스크립트를ASP.NETClientFiles라는폴더에설치하는것이포함됩니다.

이것이끝나면응용프로그램스크립트매핑을IIS등록하는작업을수행합니다.스크립트매핑이뭐냐고물어보실분들을위해여기에대한설명은MSDN되어있는것이있어서옮겨옵니다.

 

스크립트맵은파일이름확장명(: .aspx)HTTP동사(: GETPOST)적절한ISAPI확장에연결합니다.예를들어, IIS.aspx파일에대한요청을받으면응용프로그램의스크립트맵은해당.aspx파일을적절한버전의ASP.NET ISAPI확장에전달하도록IIS지시합니다.ASP.NET응용프로그램의스크립트맵은일반적으로IIS(인터넷정보서비스)관리콘솔에서설정하며응용프로그램에직접적용하거나부모응용프로그램에서상속할있습니다.기본적으로.NET Framework설치될ASP.NET응용프로그램이이후버전이나호환되지않는버전을사용하는경우이외에는기존의모든응용프로그램의스크립트맵이설치된ASP.NET ISAPI확장을사용하도록자동으로업데이트됩니다.

 

스크립트매핑이완료된모습은다음과같이IIS관리자를실행기본사이트->등록정보->디렉터리에서구성버튼을누르면응용프로그램매핑을있습니다. .aspx확장자에aspnet_isapi.dll연관되어있는것이보이시죠?

사용자 삽입 이미지

 

여기에서우리가있는한가지사항은만약.NET Framework설치하는시점에IIS설치되어있지않았거나도중에뭔가문제가생겨서정상적으로설치가되지않았을경우에는나중에aspnet_regiis –i명령을사용하기만하면ASP.NET설치/등록/스크립트매핑생성이가능하다는점입니다.

 

3. ASP.NET계정생성

이후설치패키지는컴퓨터상의Users그룹내에ASPNET이라는로컬사용자계정을생성합니다.기본적으로ASP.NET작업자프로세스(aspnet_wp.exe)계정을사용하여구동되는데,프로세스에최소한의권한을가진계정을부여함으로써보안을강화하기위한것입니다.

사용자 삽입 이미지

 

 

4. Temporary ASP.NET Files폴더생성

차후에자세한설명을하게되겠지만, ASPX파일은페이지가호출될컴파일되는과정을거치게됩니다.그에따라컴파일된결과물인어셈블리(*.dll)저장할폴더가필요하게되는데, Temporary ASP.NET Files폴더가바로용도로사용됩니다. 3과정에서만든ASPNET계정이폴더에대해쓰기권한을가지는것을있습니다.

사용자 삽입 이미지

 

 

5. Configuration설정

이미.NET프로그래밍을경험해보신분들은아시겠지만, .NET애플리케이션은자신이동작하기위한정보를XML형태로.config파일에저장합니다.일반적인애플리케이션을위한구성파일은[애플리케이션이름].exe.config형태를띠게되지만,애플리케이션의경우에는web.config,컴퓨터에전역적인설정은machine.config들어가게됩니다.전역설정인machine.config다음경로에위치합니다.

 

C:\WINDOWS\Microsoft.NET\Framework\v[버전번호]\Config\machine.config

 

ASP.NET 1.x경우에는ASP.NET작업자프로세스설정ASP.NET관련기본구성정보는모두machine.config저장됩니다. Machine.config에서가장눈여겨봐야부분은유명한<processModel>입니다.

 

<processModel

           enable="true"

           timeout="Infinite"

           idleTimeout="Infinite"

           shutdownTimeout="0:00:05"

           requestLimit="Infinite"

           requestQueueLimit="5000"

           restartQueueLimit="10"

           memoryLimit="60"

           webGarden="false"

           cpuMask="0xffffffff"

           userName="machine"

           password="AutoGenerate"

           logLevel="Errors"

           clientConnectedCheck="0:00:05"

           comAuthenticationLevel="Connect"

           comImpersonationLevel="Impersonate"

           responseDeadlockInterval="00:03:00"

           maxWorkerThreads="20"

           maxIoThreads="20"

       />

 

processModel요소는ASP.NET작업자프로세스(aspnet_wp.exe)동작특성을지정하기위한구성정보입니다.여기서재미있는부분은userName이라는attribute값인데,기본값이machine으로지정되어있는있습니다.이걸machine이라고했는지는모르지만,하여간machine3번에서만든ASPNET계정을가리킵니다.만약다른계정을사용하고싶다면userName값을변경해주면됩니다.암호가있는계정의경우에는아래의password값도설정해줘야합니다.

 

ASP.NET 2.0경우에는작업자프로세스설정은machine.configASP.NET관련기본구성정보는web.config라는파일로나누어져있습니다.특이한것은나누어지긴했지만1.1machine.config파일이222KB인데비해, 2.0machine.config24KB이며web.config28KB1.1비해config파일의사이즈가대폭줄어든있습니다.일단2.0<processModel>요소를볼까요?

 

<processModel autoConfig="true" />

 

1.1<processModel>비해놀라울정도로짧죠?이유는.config파일은XML형태이기때문에파일의크기가커질수록XML파싱하는데도시간이많이걸리게됩니다.따라서config구성값들상당량을디폴트값으로코드내에넣어두고,필요한부분만구성파일에추가해서변경하면값이기본값을오버라이드하는형태로바꿈으로써machine.config사이즈가줄어들게되었습니다.예를들어2.0에서작업자프로세스구동계정을바꾸고싶다면다음과같이하면됩니다.

 

<processModel autoConfig="true" userName="SYSTEM" />

 

대략여기까지가ASP.NET설치되는동안일어나는일들입니다.완벽하게100%기술했다고는장담할없겠지만,적어도제가아는내용들에대해서는작성한셈입니다.내용들은결국ASP.NET메커니즘을포함해서앞으로설명할내용들을이해하는데필요한기초가것이므로알아두시기바랍니다.

 

p.s.메모로그에썼듯이날렸다가새로글입니다..