Static, pure-HTML files like Welcome.htm make perfectly serviceable web pages. We
can even spruce up the presentation and usability of such pages by adding more HTML
to create frames and tables. However, there's only so much we can achieve by writing
pure HTML, precisely because their content is completely determined before the page
is ever requested.
The Limitations of Static Web Pages
For example, suppose we want to enhance our Welcome page
so that it displays the current time or a special message that is personalized for
each user. These are simple ambitions, but they are impossible to achieve using
HTML alone. If you're not convinced, try writing a piece of HTML for a web page
that displays the current time, like this:
As you type in the HTML, you'll soon realize the problem you know that the
user will request the page sometime, but you don't know what the time will be when
they do so! Hard-coding the time into your HTML will result in a page that will
lways claim that the time is the same (and will almost always display the wrong
time).
In other words, trying to write pure HTML for a web page that displays the time
but you can't be sure of the exact time that the web page should display
until the time the page is requested. It can't be done using HTML alone.
Also HTML offers no features for personalizing your web pages, each web page that
is served is the same for every user. There's also no security with HTML, the code
is there for everybody to view, and there's nothing to stop you from copying somebody
else's HTML code and using it in your own web page. Static pages might be very fast,
as quick as copying a small file over a network, but they are quite limited without
any dynamic features.
Since we can't create our page by saving our hard-coded HTML into a file before
the page is requested, what we need is a way to generate the HTML after the page
is requested. There are two ways of doing this; we'll look at them both now. Before
we go any further, we need to make sure everybody is up to speed on the terminology
we've introduced here.
What is a Web Server?
A web server is a piece of software that manages web pages
and makes them available to 'client' browsers via a local network or over
the Internet. In the case of the Internet, the web server and browser are usually
on two different machines, possibly many miles apart. However, in a more local situation,
we might set up a machine that runs the web server software, and then use a browser
on the same machine to look at its web pages. It makes no difference whether we
access a remote web server (that is, a web server on a different machine to our
browser application) or a local one (web server and browser on the same machine),
since the web server's function to make web pages available to all
remains unchanged. It might well be that you are the only person with access to
our web server on your own machine, as would be case if you were running a web server
from our home machine. Nevertheless, the principles remain the same.
While there are many web servers available (the commonest ones being Apache, IIS
and Iplanet's Enterprise server) we're only going to talk about one in this book
Microsoft's IIS 5. This is because it is the only web server that will run ASP.NET.
The web server comes as part of the installation for both Windows 2000 and Windows
XP. IIS version 5.0 comes with Windows 2000, and IIS version 5.1 with Windows XP;
however, there is very little to distinguish the two, and we shall treat them in
this chapter as the same product. We'll look at how we go about installing IIS shortly;
however first let's take a look at its role in helping to create dynamic web pages.
How are Dynamic Web Pages Served?
To fully understand the nature of dynamic web pages, we first
need to look at the limitations of what we can and can't do with a static web page.
Two Ways of providing Dynamic Web Page Content
Even though we're only going to be creating dynamic web pages
in this book using one of these methods, you need to be aware of the two different
ways of doing it, as the underlying principles for both feature heavily throughout
the book.
Client-Side Dynamic Web Pages
In the client-side model, modules (or plug-ins) attached
to the browser do all the work of creating dynamic pages. The HTML code is typically
sent to the browser along with a separate file containing a set of instructions,
which is referenced from within the HTML page. However, it is also quite common
to find these instructions intermingled with the HTML codes. The browser then uses
them to generate pure HTML for the page when the user requests the page in
other words, the page is generated dynamically on request. This produces a HTML
page, which is sent back to the browser.
So, in this model, our set of five steps now becomes six:
- A web author writes a set of instructions for creating HTML, and saves it within
an .htm file. The author also writes a set of instructions in a different language.
This might be contained within the .htm file, or within a separate file.
- Sometime later, a user types a page request into their browser, and the request
is passed from the browser to the web server.
-
The web server locates the .htm page, and may also have to locate a second file
that contains the instructions.
-
The web server sends both the newly created HTML stream and instructions back across
the network to the browser.
-
A module within the browser processes the instructions and returns it as HTML within
the .htm page only one page is returned, even if two were requested.
-
The HTML is then processed by the browser which displays the page
Client-side technologies have fallen out of favor in recent times, as they take
a long time to download, especially if we have to download a second file with a
separate set of instructions. In some cases, we might have to download several files
of separate instructions. A second drawback is that each browser interprets these
instructions in different ways, so we have no way of guaranteeing that if Internet
Explorer understands them, whether Netscape Navigator or Opera will. An other major
drawbacks are that it is a problem to write client-side code that uses server-side
resources such as databases, because it is interpreted at client-side.
Also all code for client-side scripting is available to everybody, which can be
undesirable.
Server-Side Dynamic Web Pages
With the server-side model, the HTML source is sent to the
web server with an intermingled set of instructions. Again this set of instructions
will be used to generate HTML for the page at the time the user requests the page.
Once again, the page is generated dynamically upon request. Our set of five steps
once more becomes six, however, with the subtle twist regarding where the processing
of instructions is done:
- A web author writes a set of instructions for creating HTML, and saves these instructions
within a file
- Sometime later, a user types a page request into their browser, and the request
is passed from the browser to the web server
- The web server locates the file of instructions
- The web server follows the instructions in order to create a stream of HTML
- The web server sends the newly created HTML stream back across the network to
the browser
- The browser processes the HTML and displays the page
The twist is that all the processing is done on the server, before
the page is sent back to the browser. One of the key advantages this has over the
client-side model is that only the HTML code describing the finished page is actually
sent to the browser. This means that our page's logic is hidden away on the server,
and that we can safely assume that most browsers should be able to at least have
a go at displaying it. ASP.NET as you might have gathered, follows the server-side
model.
In fact either process of serving a dynamic web page is only slightly different
from the process of serving a static web page there's just one extra step
involved (Step 5 on the client or Step 4 on the server). But in both cases this
difference is crucial the HTML that defines the web page is not generated
until after the web page has been requested. For example, we can use either technique
to write a set of instructions for creating a page that displays the current time:
<html>
<head><title>The Punctual Web Server</title></head>
<body>
<h1>Welcome</h1>
In Webserverland, the time is exactly
<INSTRUCTION: write HTML to display the current time>
</body>
</html>
|
In this case, we can compose most of the page using pure HTML. It's just that we
can't hard-code the current time. Instead, we can write a special code (which would
replace the highlighted line here) that instructs the web server to generate that
bit of HTML during Step 5 on the client, or Step 4 on the server, at the time the
page is requested. We'll return to this example later in the chapter, and we'll
see how to write the highlighted instruction using ASP.NET.
Now we're going to look at the various different technologies, including ASP.NET
and see how the logic is supported in each.
An Overview of the Technologies
We just seen that there are also two distinct models for providing
dynamic content. ASP.NET falls into the server-side model. However, we're going
to look at what we consider to be the most important technologies in both models,
as we will reference some of the client-side models in later chapters, particularly
if we mention old style ASP. Not all of the technologies work in the same way as
ASP.NET, but they all allow the user to achieve the same end-result that
of dynamic web applications. If ASP.NET is not an ideal solution to your problems,
then you might want to consider these following technologies, taking into account
the following questions:
- Are they supported on the platform you use?
- Are they difficult to learn?
- Are they easy to maintain?
- Do they have a long-term future?
- Do they have extra capabilities, such as being able to parse XML?
- Are a lot of people already using them are there a lot of tools available?
- Are the support, skills, and knowledge required to use them readily available?
We're now going to give a quick overview of what each one does, and
in doing so, try to give you an idea of where ASP.NET (and the ASP technology that
preceded it) fits in to the big picture.
Client-Side Technologies For Providing Dynamic Content
Each of these technologies relies on a module (or plug-in)
built into the browser to process the instructions we talked about earlier. The
client-side technologies are a mishmash of scripting languages, controls, and fully
fledged programming languages.
JavaScript
JavaScript is the original browser scripting language,
and is not to be confused with Java. Java is a complete application programming
language in its own right. Netscape had originally developed a scripting language,
known as LiveScript, to add interactivity to their web server and browser range.
It was introduced in the release of the Netscape 2 browser, when Netscape joined
forces with Sun and in the process, they changed its name to JavaScript. JavaScript
borrows some of its syntax and basic structures from Java (which in turn borrowed
ideas from C), but has a different purpose and evolved from different origins
(LiveScript was developed separately to Java).
For example, while JavaScript can control browser behavior and content, it isn't
capable of controlling features such as file handling. In fact, JavaScript is actively
prevented from doing this for security reasons. Think about it: you wouldn't want
a web page capable of deleting files on your hard drive, now would you? Meanwhile,
Java can't control the browser as a whole, but it can do graphics and perform network
and threading functions.
Javascript is much easier to learn than Java. It is designed to create small, efficient,
applications that can do many things, from performing repetitive tasks, to handling
events generated by the user (such as mouse clicks, keyboard responses, and so on).
Microsoft introduced their own version of JavaScript, known as JScript, in Internet
Explorer 3.0 and have supported it ever since right up to, and including IE6. It
has only minor differences from the Netscape version of the language, although in
older versions of both browsers, the differences were originally quite a lot wider.
VBScript
In Internet Explorer 3.0, Microsoft also introduced their
own scripting language, VBScript, which was based on their Visual Basic programming
language. VBScript was intended to be a direct competitor to JavaScript. In terms
of functionality, there isn't much difference between the two; it's more a matter
of personal preference VBScript has a similarly reduced functionality. Visual
Basic developers sometimes prefer VBScript because VBScript is, for the most part,
a subset of Microsoft's Visual Basic language. However, it enjoys one advantage
that makes it more attractive to novice programmers, in that, unlike JavaScript,
it isn't case-sensitive and is therefore less fussy about the particulars of the
code. Although this "advantage", makes it a lot slower and less efficient.
The biggest drawback is that there isn't a single non-Microsoft browser that supports
VBScript for client-side scripting. For a short while there were some proprietary
plug-ins for Netscape that provided VBScript support, but these never took off.
You'll find that JavaScript is much more widely used and supported. If you want
to do client-side scripting of web pages on the Internet then JavaScript is the
only language of choice. Indeed Microsoft themselves have replaced VBScript in their
.NET framework, with VB.NET. VBScript should only be considered when working on
Intranet pages where it is known that all clients are IE on Windows.
With both JavaScript and VBScript there is a module, known as a script engine, built
into the browser that dynamically processes the instructions, or script, as it is
known in this case.
ActiveX Controls
An ActiveX control is a self-contained program (or component),
written in a language such as C++ or Visual Basic. When added to a web page, it
provides a specific piece of client-side functionality, such as a bar chart, timer,
client authentication, or database access. ActiveX controls are added to HTML pages
via the <object> tag, which is now part of the HTML standard. ActiveX controls
can be executed by the browser when they are embedded in a web page.
There is a catch. ActiveX controls were developed by Microsoft, and despite being
compatible with the HTML standard, they are not supported on any Netscape browser
prior to version 6 (which, at time of writing, was still in beta) without an ActiveX
plug-in. Without this, they will only function on Internet Explorer. Also, unlike
VBScript, ActiveX is able to manipulate items on the user's machine such as the
files or Windows registry. For this reason it is very often considered a security
risk and is not even allowed through firewalls. Consequently, ActiveX controls still
can't really be considered either a common or a cross-platform way of making your
pages dynamic and are falling out of use.
Java applets
Java is a cross-platform language for developing applications.
When Java first hit the Web in the mid-1990s, it created a tremendous stir. The
idea is to use Java code in the form of applets, which are essentially Java components
that can be easily inserted into web pages with the aid of the <applet> tag.
Java enjoys better functionality than scripting languages, offering better capabilities
in areas such as graphic functions and file handling. Java is able to provide these
powerful features without compromising security because the applets run in what
is known as a sandbox which prevents a malicious program downloaded from
the web from doing damage to your system. Java also boasts strong database support
through JDBC.
Microsoft and Netscape browsers both have built-in Java support via something known
as the Java Virtual Machine (JVM), and there are several standard <object>
and non-standard <applet> tags that are used to add Java applets to a web
page. These tags tell the browser to download a Java file from a server and execute
it with the Java Virtual Machine built into the browser. Of course, this extra step
in the web page building phase means that Java applets can take a little while to
download, and can take even longer to process once on the browser. So, while smaller
Java applets (that provide features such as drop-down menus and animations) are
very popular on the Web, larger ones are still not as widespread as scripted pages.
Although the popularity of Java today isn't quite what some people expected, it
makes an ideal teaching tool for people wishing to break out into more complex languages;
and its versatility makes it well suited for programming web applications.
Curl
A very recent innovation comes from a company partly set
up by Tim Berners-Lee (the innovator behind the Web and the HTML language). Curl
is another programming language like Java, but unlike Java, where a second file
(or more) has to be downloaded with the HTML file, it completely replaces the HTML
source and the Java files. It relies on a Curl plug-in having been installed on
your browser first, and currently only works on very recent browsers. The advantage
are that the download time is faster than Java, and also you don't have to worry
about integrating different languages into the page, as Curl is capable of providing
the same features as both Java and JavaScript.
Curl is still in the very early stages of development, although the first version
has been released, and more details can be obtained at http://www.curl.com.
|