Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π—Π«Πš ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ˜Π ΠžΠ’ΠΠΠ˜Π― Π‘# 2005 И ΠŸΠ›ΠΠ’Π€ΠžΠ ΠœΠ .NET 2.0. 3-Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 230

Автор Π­Π½Π΄Ρ€ΡŽ ВроСлсСн

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ· этих ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΎΠΊ Π² Web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ явно, Π²Ρ‹Π±Ρ€Π°Π² WebSiteβ†’Add Folder ΠΈΠ· мСню. Но Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях это сдСлаСт сама срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ "СстСствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ" Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π² систСму ΡƒΠ·Π»Π° Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° C#, автоматичСски Π² структуру ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² добавляСтся ΠΏΠ°ΠΏΠΊΠ° App_Code, Ссли ΠΎΠ½Π° Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π΅ сущСствуСт).

Роль папки Bin

ПозТС Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Web-страницы ASP.NET Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ счСтС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ .NET. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΡΡ‚ΡŒΡŽ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Web-ΡƒΠ·Π»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° любоС число ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Ρ… ΠΈΠ»ΠΈ общСдоступных ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ², Π’ ASP.NET 2.0 ΠΌΠ΅Ρ‚ΠΎΠ΄ указания Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡƒΠ·Π»Π°, Π² ΠΊΠΎΡ€Π½Π΅ отличаСтся ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π»ΠΎΡΡŒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ASP.NET 1.x. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Ρ‚Π°ΠΊΠΎΠ³ΠΎ измСнСния Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π² Visual Studio 2005 Web-ΡƒΠ·Π»Ρ‹ Ρ‚Ρ€Π°ΠΊΡ‚ΡƒΡŽΡ‚ΡΡ Π² бСспроСктной Ρ„ΠΎΡ€ΠΌΠ΅.

Π₯отя шаблон Web Site ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ» *.sln, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ *.aspx Π² срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, связанного с Π½ΠΈΠΌ Ρ„Π°ΠΉΠ»Π° *.csproj Π½Π΅ сущСствуСт. Π’Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Web-прилоТСния ASP.NET 1.x записывал ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠ°Ρ… Π² Ρ„Π°ΠΉΠ» *.csproj. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ Ρ€Π΅Π·ΠΎΠ½Π½Ρ‹ΠΉ вопрос: "Π“Π΄Π΅ хранится информация ΠΎ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠ°Ρ… Π² ASP.NET 2.0?"

Когда Π²Ρ‹ ΡΡΡ‹Π»Π°Π΅Ρ‚Π΅ΡΡŒ Π½Π° ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ, Visual Studio 2005 автоматичСски создаСт ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Bin Π² структурС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² прилоТСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΌ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ копию Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. ΠŸΡ€ΠΈ использовании вашим ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Ρ‚ΠΈΠΏΠΎΠ² ΠΈΠ· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΎΠ½ΠΈ автоматичСски Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ запросу. Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ мСню WebSiteβ†’Add Reference ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ любой (Π½ΠΎ Π½Π΅ строго ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ) Ρ„Π°ΠΉΠ» *.dll ΠΈΠ· Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ создали Π² процСссС изучСния тСкста этой ΠΊΠ½ΠΈΠ³ΠΈ, ΠΈ Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² ΠΎΠΊΠ½Π΅ Solution Explorer отобраТаСтся ΠΏΠ°ΠΏΠΊΠ° Bin (рис. 23.14).

Рис. 23.14. Папка Bin содСрТит ΠΊΠΎΠΏΠΈΠΈ всСх ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ², Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ссылаСтся ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Если ΠΆΠ΅ Π²Ρ‹ ΡΡΡ‹Π»Π°Π΅Ρ‚Π΅ΡΡŒ Π½Π° общСдоступный ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ, Visual Studio 2006 автоматичСски добавляСт Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Web-Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ» web.config (Ссли Π΅Π³ΠΎ Π΅Ρ‰Π΅ Π½Π΅Ρ‚) ΠΈ записываСт внСшнюю ссылку Π² Ρ€Π°ΠΌΠΊΠ°Ρ… элСмСнта β€Ήassembliesβ€Ί. Π’Π°ΠΊ, Ссли снова Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мСню Siteβ†’Add Reference, Π½ΠΎ Π½Π° этот Ρ€Π°Π· Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ общСдоступный ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»Π΅ΠΊ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. System.Drawing.dll), Ρ‚ΠΎ Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ваш Ρ„Π°ΠΉΠ» Web.config ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄.

β€Ή?xml version="1.0"?β€Ί

β€Ήconfiguration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"β€Ί

 β€ΉappSettings/β€Ί

 β€ΉconnectionStrings/β€Ί

 β€Ήsystem.webβ€Ί

  β€Ήcompilation debug="false"β€Ί

   β€Ήassembliesβ€Ί

    β€Ήadd assembly="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/β€Ί

   β€Ή/assembliesβ€Ί

  β€Ή/compilationβ€Ί

  β€Ήauthentication mode="Windows"/β€Ί

 β€Ή/system.webβ€Ί

β€Ή/configurationβ€Ί

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ описываСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, которая трСбуСтся для динамичСской Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ Assembly.Load() (см. Π³Π»Π°Π²Ρƒ 12).

Роль папки App_Code

Папка App_Code ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния Ρ„Π°ΠΉΠ»ΠΎΠ² исходного ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ привязаны нСпосрСдствСнно ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Web-страницС (ΠΊΠ°ΠΊ Ρ„Π°ΠΉΠ»Ρ‹ с внСшним ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ), Π½ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ всС Ρ€Π°Π²Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ для использования вашим Web-ΡƒΠ·Π»ΠΎΠΌ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ App_Code Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости. ПослС этого ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ становится доступным Π»ΡŽΠ±ΠΎΠΌΡƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ Web-ΡƒΠ·Π»Π°. Π’ этом смыслС ΠΏΠ°ΠΏΠΊΠ° App_Code Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° ΠΏΠ°ΠΏΠΊΠ΅ Bin, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ здСсь Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ исходный ΠΊΠΎΠ΄ вмСсто скомпилированного ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π“Π»Π°Π²Π½Ρ‹ΠΌ прСимущСством Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ оказываСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ для Web-прилоТСния Π±Π΅Π· нСобходимости ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… нСзависимо.

Одна ΠΏΠ°ΠΏΠΊΠ° App_Code ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, созданныС Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках. Π’ срСдС выполнСния подходящий компилятор сгСнСрируСт Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ. Если ΠΆΠ΅ Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ мноТСство ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² для хранСния Ρ„Π°ΠΉΠ»ΠΎΠ² с управляСмым ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° (*.cs, *.vb ΠΈ Ρ‚.Π΄.).

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ прилоТСния Web-ΡƒΠ·Π»Π° ΠΏΠ°ΠΏΠΊΡƒ App_Code, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ Π΄Π²Π΅ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠΈ (MyCSharpCode ΠΈ MyVbNetCode), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат Ρ„Π°ΠΉΠ»Ρ‹, написанныС Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… языках. ПослС этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Web.config, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° эти ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ элСмСнта β€ΉcodeSubDirectoriesβ€Ί.

β€Ή?xml version="1.0"?β€Ί

β€Ήconfiguration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"β€Ί

 β€ΉappSettings/β€Ί

 β€ΉconnectionStrings/β€Ί

 β€Ήsystem.webβ€Ί

  β€Ήcompilation debug="false"β€Ί

   β€Ήassembliesβ€Ί

    β€Ήadd assembly="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/β€Ί

   β€Ή/assembliesβ€Ί

   β€ΉcodeSubDirectoriesβ€Ί

    β€Ήadd directoryName="MyCSharpCode" /β€Ί

    β€Ήadd directoryName="MyVbNetCode" /β€Ί

   β€Ή/codeSubDirectoriesβ€Ί

  β€Ή/compilationβ€Ί

  β€Ήauthentication mode="Windows"/β€Ί

 β€Ή/system.webβ€Ί

β€Ή/configurationβ€Ί

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Папка App_Code часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈ для хранСния Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ c ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ языкС, Π½ΠΎ Ρ‚ΠΎΠΆΠ΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„Π°ΠΉΠ»Ρ‹ *.xsd, *.wsdl ΠΈ Ρ‚.Π΄).

Π¦ΠΈΠΊΠ» компиляции страницы ASP.NET 2.0

НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΡƒΡŽ модСль страницы Π²Ρ‹ использовали (ΠΎΠ΄Π½ΠΎΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΡƒΡŽ страницу ΠΈΠ»ΠΈ страницу с внСшним ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ), ваши Ρ„Π°ΠΉΠ»Ρ‹ *.aspx (ΠΊΠ°ΠΊ ΠΈ Π»ΡŽΠ±Ρ‹Π΅ связанныС Ρ„Π°ΠΉΠ»Ρ‹ с ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ) динамичСски ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ .NET. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ Π·Π°Ρ‚Π΅ΠΌ обрабатываСтся Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ процСсса ASP.NET (aspnet_wp.exe) Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… собствСнного Π΄ΠΎΠΌΠ΅Π½Π° прилоТСния (для получСния Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π΄ΠΎΠΌΠ΅Π½Π°Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ см. Π³Π»Π°Π²Ρƒ 13). Однако ΠΌΠ΅Ρ‚ΠΎΠ΄ компиляции ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Web-ΡƒΠ·Π»Π° Π² ASP.NET 2.0 оказываСтся ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΈΠ½Ρ‹ΠΌ.

Π¦ΠΈΠΊΠ» компиляции ΠΎΠ΄Π½ΠΎΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… страниц

ΠŸΡ€ΠΈ использовании ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ΄Π½ΠΎΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ страницы, HTML-Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ°, Π±Π»ΠΎΠΊΠΈ β€Ήscriptβ€Ί ΠΈ опрСдСлСния Web-элСмСнтов управлСния динамичСски ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Ρ‚ΠΈΠΏ класса, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΎΡ‚ System.Web.UI.Page.

Имя этого класса получаСтся ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° *.aspx с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ присоСдинСния суффикса _Π°spx ΠΊ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, страница MyPage.aspx ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ класса с ΠΈΠΌΠ΅Π½Π΅ΠΌ MyPage_aspx). На рис. 23.15 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° общая схСма ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ процСсса.

Рис. 23.15. МодСль компиляции ΠΎΠ΄Π½ΠΎΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… страниц

Π­Ρ‚ΠΎΡ‚ динамичСски ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ устанавливаСтся Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ срСдой выполнСния ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π² ΠΏΠ°ΠΏΠΊΠ΅ β€Ή%windir%β€ΊMicrosoft.NET\ Framework\v2.0.50215\Temporary ASP.NET Files\root. Имя ΠΏΡƒΡ‚ΠΈ послС \root зависит ΠΎΡ‚ Ρ†Π΅Π»ΠΎΠ³ΠΎ ряда Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² (Ρ…Π΅Ρˆ-ΠΊΠΎΠ΄Π° ΠΈ Ρ‚.ΠΏ.). Π½ΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ *.dll (ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ). На рис. 23.16 ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°.

Рис. 23.16. АвтоматичСски сгСнСрированный ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ ASP.NET

Π¦ΠΈΠΊΠ» компиляции ΠΌΠ½ΠΎΠ³ΠΎΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… страниц

ΠŸΡ€ΠΎΡ†Π΅ΡΡ компиляции страницы, построСнной ΠΏΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈ с внСшним ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ процСссу компиляции ΠΎΠ΄Π½ΠΎΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ страницы. Однако ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΏΡ€ΠΈ этом Ρ‚ΠΈΠΏ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΎΡ‚ System.Web.UI.Page, компонуСтся ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² (Π΄Π°, ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ· Ρ‚Ρ€Π΅Ρ…, Π° Π½Π΅ ΠΈΠ· ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Ρ… Π΄Π²ΡƒΡ…).

Взглянув Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ CodeBehindPageModel, вспомнитС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» Default.aspx связываСтся с ΠΏΠ°Ρ€Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ классом _Default, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹ΠΌ Π² Ρ„Π°ΠΉΠ»Π΅ внСшнСго ΠΊΠΎΠ΄Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ. Если Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ASP.NET 1.x, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΏΡ€ΠΈ этом происходит с описаниями Ρ‡Π»Π΅Π½ΠΎΠ²-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Web-элСмСнтов управлСния ΠΈ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… InitializeComponent(), Π² частности с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий. Π’ ASP.NET 2.0 всС это собираСтся Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ "Ρ„Π°ΠΉΠ»Π΅", Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ Π² памяти. ЀактичСски это Π½Π΅ совсСм Ρ„Π°ΠΉΠ», Π° прСдставлСниС ΠΏΠ°Ρ€Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ класса Π² памяти (рис. 23.17).

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… этой ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π² Ρ„Π°ΠΉΠ»Π΅ *.aspx Web-элСмСнты управлСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для построСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ класса, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π³ΠΎ всС Ρ‡Π»Π΅Π½Ρ‹-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² ASP.NET 1.x ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π° InitializeComponent(), Π° Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ для нас Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌΠΈ. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс Π² процСссС компиляции ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ΡΡ с Ρ„Π°ΠΉΠ»ΠΎΠΌ внСшнСго ΠΊΠΎΠ΄Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ получился Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° класса _aspx (Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ компиляции ΠΎΠ΄Π½ΠΎΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ страницы Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ„Π°ΠΉΠ» _aspx получаСтся нСпосрСдствСнно ΠΈΠ· System.Web.UI.Page).

Π’ любом случаС послС создания ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° исходный HTTP-запрос этот ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ для всСх ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… запросов, Π½Π΅ трСбуя пСрСкомпиляции. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ запрос страницы *.aspx ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π° ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ обращСния ΠΊ Ρ‚ΠΎΠΉ ΠΆΠ΅ страницы ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС.