티스토리 뷰
Written by
다소의아할수있겠지만, 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동사(예: GET및POST)를적절한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="
requestLimit="Infinite"
requestQueueLimit="5000"
restartQueueLimit="10"
memoryLimit="60"
webGarden="false"
cpuMask="0xffffffff"
userName="machine"
password="AutoGenerate"
logLevel="Errors"
clientConnectedCheck="
comAuthenticationLevel="Connect"
comImpersonationLevel="Impersonate"
responseDeadlockInterval="
maxWorkerThreads="20"
maxIoThreads="20"
/>
processModel요소는ASP.NET의작업자프로세스(aspnet_wp.exe)의동작특성을지정하기위한구성정보입니다.여기서재미있는부분은userName이라는attribute값인데,기본값이machine으로지정되어있는걸볼수있습니다.왜이걸machine이라고했는지는모르지만,하여간machine은3번에서만든ASPNET계정을가리킵니다.만약다른계정을사용하고싶다면userName값을변경해주면됩니다.암호가있는계정의경우에는아래의password값도설정해줘야합니다.
ASP.NET 2.0의경우에는작업자프로세스설정은machine.config에ASP.NET관련기본구성정보는web.config라는파일로나누어져있습니다.특이한것은나누어지긴했지만1.1의machine.config파일이약222KB인데비해, 2.0의machine.config는약24KB이며web.config는28KB로1.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.메모로그에썼듯이이글날렸다가새로쓴글입니다.ㅠ.ㅠ
- Total
- Today
- Yesterday
- 아이폰 셀카
- 러브트리프로젝트
- Roibosh Vanilla
- 삼성 외장하드
- 아이폰 보조배터리
- 보이스티
- 아이팟 보조배터리
- 릴리스 다이어리 - 설레어
- 안녕 바다
- 보이스차
- 릴리스다이어리
- 아이튠즈 없이 mp3가져오기
- 로네펠트
- .NET Excel
- 모토스톰2
- Crows Zero
- 닷넷 엑셀
- Lily's Diary
- 윈터드림
- GTO SHONAN 14DAYS
- georgia max
- 닷넷 파일형식
- God of War III
- hot 6
- IT·컴퓨터
- 나를 기억하고 있는 너에게
- 아이폰 카메라어플
- 켄우드 정수기
- KL2200
- KL-2200
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |