-----------------------------------------------------------

New Message on MumbaiUserGroup

-----------------------------------------------------------
From: Swapnil_B1
Message 1 in Discussion

  
To reduce response time and increase safety, ASP.NET version 2.0 introduces the 
ability to precompile a web application. 
When the first request arrives at your web application, The worker process 
starts, the runtime initializes, ASPX pages are parsed and compiled to 
intermediate language, methods are just-in-time compiled to native code - and 
the list goes on and on. If you want to cut out some of the overhead and 
improve the startup time of your application, then you’ll want to look at the 
precompile features in ASP.NET 2.0. 
Although pre-compilation will give our site a performance boost, the difference 
in speed will only be noticeable during the first request to each folder. 
Perhaps a more important benefit is the new deployment option made available by 
the precompile - the option to deploy a site without copying any of the 
original source code to the server. This includes the code and markup in aspx, 
ascx, and master files. 
In Place Pre-Compilation 
By default, ASP.NET dynamically parses and compiles all the ASPX pages in a 
folder when the first request arrives for a page inside that folder. ASP.NET 
also needs to compile applicable files in the special folders, like App_Code, 
on the first request, and any code-behind files associated with ASPX and ASCX 
files. The runtime caches all the compilation results in order to quickly 
process later requests, and does not need to recompile again unless someone 
edits a file. This behavior gives us a great deal of flexibility, including the 
flexibility to change code and markup and instantly have the changes reflected 
in the next browser request. The tool to use for pre-compilation is the 
aspnet_compiler executable, which you can find in the 
%WINDIR%\Microsoft.NET\Framework\v2.x.xxxx directory. If we have a web 
application in the WebSite1 virtual directory under IIS, we could use the 
following command line to compile the application. 
The –v parameter specifies that we are passing a virtual path to our web site. 
On servers with multiple websites you may need to use the –m parameter and 
specify the full IIS metabase path to the application (-m 
/LM/W3SVC/1/Root/WebSite1).  
The pre-compiled code will end up inside of the Temporary ASP.NET File 
directory, just as it would when the runtime compiles files for a browser 
request. Inside of the bin directory for the compiled site, you’ll find the 
assemblies (dll files). The compiler generates special filenames to avoid 
naming collisions. In the shot below, the dll starting with App_Code contains 
the code from the App_Code directory – not too surprising. Each folder 
containing aspx, or ascx files will compile into a dll prefixed with App_Web. 
The files with a .compiled extension contain XML with information about which 
original source code file maps to which assembly. 
With the compiled files in place your web application should have a slightly 
better startup time, but a primary benefit to in place pre-compilation will be 
the ability to ensure the web application is error free. If you happen to 
modify a class or web form and leave an error in the file, the aspnet_compiler 
will fail and display the compiler error. The tool will also display any 
warnings, but warning will not stop compilation.  
Pre-Compilation for Deployment 
Pre-compilation for deployment creates an ‘executable’ (no source code) version 
of your web application. With pre-compilation for deployment you give the 
aspnet_compiler the path to your source code, and the path to a target 
directory for the compilation results, like below. 
aspnet_compiler -p "C:\MyDevelopment\WebSite1" -v / C:\Staging 
This command will compile the site and place the result in C:\Staging. You must 
still specify –v as a parameter, even though we are not using a virtual path as 
either a source or a destination. Instead, the compiler will use this parameter 
to resolve application root references (~). 
The pre-compilation for deployment step will recreate your web site’s folder 
structure in the destination directory. All of the static files (HTML files, 
image files, configuration files) are copied into the folder structure exactly 
as they appear in the source folder hierarchy. A bin directory will appear in 
the target directory with all of the assemblies and .compiled files. 
The target directory will contain no source code. All of the classes in the 
App_Code folder are now compiled into one or more assemblies in the bin 
directory, and no .cs or .vb files will exist in the target directory. Master 
page files will also compile to the bin directory and not exist. All the code 
and markup in ASPX, ASCX, and ASHX files, along with any associated code-behind 
files, will live inside of one or more assemblies in the bin directory, 
although these files will still exist in the target directory, they exist as 
nearly empty ‘marker’ files. If you open an ASPX file in a pre-compiled target 
directory you’ll see the following content:The IIS script map for the ASPX file 
extension leaves the “Verify that file exists” checkbox unchecked, and the site 
will work without any of the ASPX files present. There is, however, a problem 
getting IIS to serve a default document for a directory request unless the file 
is present. 
Once the application finishes compiling you can FTP or XCOPY the target 
directory to a web server (or map a virtual directory to the target directory), 
and the application will be ready to run. A benefit to pre-compilation for 
deployment is that no one can make changes to the web application by tweaking 
the source code – no source code exists! In fact, you can’t even place a new 
ASPX file into the existing application directory structure without causing an 
error. 
Making a change to your site will require you to make a change in the original 
source code, pre-compile the application again, and redeploy all files to the 
server. There is one caveat in this scenario, in that pre-compilation generates 
unique filenames for some assemblies in the bin folder, and these filenames 
will change each time the pre-compiler executes. The first time you run 
aspnet_compiler you might see App_Web_lufhs9vn.dll in the bin directory, the 
next time you might see App_Web_hviqdkt.dll with the same compiled code, even 
though no source file has changed. This means you might have unneeded dlls in 
your bin directory if you keep repeatedly copy files to the server without 
cleanup.  Use the -fixednames switch to generate repeatable assembly names.
 
For some people, the ability to update content on the web server by modifying 
aspx and ascx files is a needed feature. To support this scenario, the 
aspnet_compiler has the –u switch for an “updateable” pre-compilation. With 
updateable pre-compilation the ASPX, ASCX, ASHX, and MASTER files are copied to 
the target directory in tact - they do not become ‘marker’ files. You can 
deploy these files to the server and modify them without causing an error, 
because the ASP.NET runtime will dynamically parse and compile these files. All 
of the source code for code-behind files and in the App_Code folder will still 
be compiled into assemblies and will not need to be deployed. 
Swapnil (Swaps) 
http://swapsnet.spaces.live.net/

-----------------------------------------------------------

To stop getting this e-mail, or change how often it arrives, go to your E-mail 
Settings.
http://groups.msn.com/MumbaiUserGroup/_emailsettings.msnw

Need help? If you've forgotten your password, please go to Passport Member 
Services.
http://groups.msn.com/_passportredir.msnw?ppmprop=help

For other questions or feedback, go to our Contact Us page.
http://groups.msn.com/contact

If you do not want to receive future e-mail from this MSN group, or if you 
received this message by mistake, please click the "Remove" link below. On the 
pre-addressed e-mail message that opens, simply click "Send". Your e-mail 
address will be deleted from this group's mailing list.
mailto:[EMAIL PROTECTED]

Reply via email to