When you think ASP, think...
Recent Articles
All Articles
ASP.NET Articles
ASPFAQs.com
Message Board
Related Web Technologies
User Tips!
Coding Tips

Sections:
Sample Chapters
Commonly Asked Message Board Questions
JavaScript Tutorials
MSDN Communities Hub
Official Docs
Security
Stump the SQL Guru!
XML Info
Information:
Feedback
Author an Article
ASP ASP.NET ASP FAQs Message Board Feedback

The 4 Guys Present: ASPFAQs.com

Jump to a FAQ
Enter FAQ #:
..or see our 10 Most Viewed FAQs.

4GuysFromRolla.com : ASP FAQS : ASP.NET


Question:

If I deploy an ASP.NET Web application will the sysadmin of the Web server where the code in installed be able to see my ASP.NET Web page source code?


[Print this FAQ]

Answer: One of the rather radical changes from classic ASP to ASP.NET is that in ASP.NET, Web pages are compiled programs. With classic ASP, ASP pages are comprised of script code. When an ASP page is requested, a scripting engine parses the script code of the ASP page producing HTML output. With ASP.NET, however, when pages are requested for the first time (or for the first time after a change has been made to the Web page), the code is converted into a class and then compiled into a DLL. This DLL is then "run," emitting HTML output.

The compiled model of ASP.NET invite a couple of advantages over the scripting model of classic ASP. First, a Web server can handle more ASP.NET Web page requests per second than classic ASP page requests per second. One of the major reasons for this performance increase is the fact that ASP.NET Web pages do not need to be recompiled every page view, like ASP pages need to be rerendered every time they are visited.*

"So," you may be wondering, "if the pages are compiled into a DLL then I can build an ASP.NET Web site, compile it into its corresponding DLL files, and then ship the DLL files, effectively hiding the source code from those who are using my system." Well, yes, if you create your application using code-behind pages. ASP.NET Web pages can be created in one of two ways: creating a single ASP.NET Web page that contains both the HTML content and server-side code (the server-side code, ironically, is placed in a <script runat="server"> block, even though it is not script code). The other approach is to use a two file system: the first file is an .aspx page, which contains the HTML content; the second file is a .vb or .cs page, containing a class derived from the Page object that holds the code for the ASP.NET Web page. This latter approach is called using code-behind pages, and is the default way Web pages are created when using Visual Studio .NET. Before your Web page can be viewed, the .vb or .cs must be compiled into a DLL (and there are some settings that must appear in the .aspx file, wiring up the .aspx page to work with the .vb or .cs file).

The code-behind pages have the advantage of separating the code of an ASP.NET Web page from the HTML content. This method can also be used to ship an ASP.NET Web application to a client with the source of the ASP.NET Web pages hidden. Simply by sending only the DLL files (along with the corresponding ASP.NET files that contain the HTML content), you allow your customer to change the look and feel of the ASP.NET Web pages (by editing the .aspx files) as well as hiding the "trade secrets" (the source code) in the code-behind DLL files.

(To learn more about creating code-behind files, check out:

-- ASP.NET Code Behind Pages
-- Creating your First Code Behind Page)

* Technically, ASP pages don't need to be rerendered every page view. IIS automatically caches the low-level output generated by the scripting engines and stores this page output in a memory-based cache. Therefore, ASP page output is cached away for quick access without the need for rerendered. The only caveat is that it is cached in a memory cache, meaning that only a finite number of pages can be held in the cache. (This number is configurable through a registry setting.)

On the other hand, ASP.NET uses a disk-based cache to store the compiled DLLs, guaranteeing a virtual infinite number of ASP.NET Web pages to be "cached" (that is, not needing to be recompiled each time the page is visited).

FAQ posted by Scott Mitchell at 3/11/2002 5:19:42 PM to the ASP.NET category. This FAQ has been viewed 73,651 times.

Do you have a FAQ you'd like to suggest? Suggestions? Comments? If so, send it in! Also, if you'd like to be a FAQ Admin (creating/editing FAQs), let me know! If you are looking for other FAQs, be sure to check out the 4Guys FAQ and Commonly Asked Messageboard Questions!

Most Viewed FAQs:

1.) How can I format numbers and date/times using ASP.NET? For example, I want to format a number as a currency. (761643 views)
2.) I am using Access and getting a 80004005 error (or a [Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot open the file '(unknown)' error) when trying to open a connection! How can I fix this problem? (207777 views)
3.) How can I convert a Recordset into an array? Also, how can I convert an array into a Recordset? (202549 views)
4.) How can I quickly sort a VBScript array? (196039 views)
5.) How can I find out if a record already exists in a database? If it doesn't, I want to add it. (156019 views)
6.) How do I display data on a web page using arrays instead of Do...While...MoveNext...???... (152331 views)
7.) When I get a list of all files in a directory via the FileSystemObject, they aren't ordered in any reasonable way. How can I sort the files by name? Or by size? Or by date created? Or... (140381 views)
8.) For session variables to work, must the Web visitor have cookies enabled? (110162 views)
9.) Can I send emails without using CDONTS? (107083 views)
10.) How can I take the result of a SELECT...MULTIPLE or a group of same-named checkboxes and turn it into a query? That is, if the user selects 3 answers, how can I construct a query that looks for all 3? (106308 views)
Last computed at 9/17/2007 3:22:00 AM


ASP.NET [1.x] [2.0] | ASPMessageboard.com | ASPFAQs.com | Advertise | Feedback | Author an Article