You are on page 1of 79

SHREE SATGURUVE NAMAH

Introduction to Website
Designing & Development

(D r a f t V e r s i o n )

Introduction to Website Designing & Development - 1 -


List of Topics

• Web-Application Management - An Overview

• Web-Application / WebApp - Introduction


• List of Web-Programming Language Popularity
• What Web-Programming languages are people talking about?
• Popular Web-Programming languages – An Overview

• Database - Overview
• Popular Web-Database Systems – An Overview
• Database – Parameters

• Application Service Provider (ASP) - What is it about?


• Application Service Provider (ASP) - How it works?

• Integrated Development Environment (IDE)


• Comparison of Integrated Development Environments

• Web-Application / WebApp - Development Guide


• Before You Code: Part A – Reviewing Hosting Plans Features
• Before You Code: Part B – Reviewing Hosting Plans Features
• Before You Code: Web Site Basics: Stuff Beginners Need To Know
• Before You Code: Database Websites from Scratch

• Definition of Framework?
• What is Application Framework?
• What is Software Framework?
• What is Web-Application Framework?
• What is Enterprise Architecture Framework?

• List of Content Management Frameworks (CMF)


• List of Content Management Systems (CMS)
• List of Web-application Frameworks

• Glossary / Acronym / File Extensions


• References

• Conclusion

Introduction to Website Designing & Development - 2 -


Web-Application Management
- An Overview -

DATA PRESENTATION APPLICATION SERVER DATABASE SERVER


Content Management Web-Programming Language Record/Files Management
(Client-Side Development) (Server-Side Development) (Server-Side Development)

HTML & CSS XML - JAVA Platform by Sun - MySQL by Sun Microsystems
- .NET Platform by Microsoft - Oracle by Oracle Corporation
- HTML - XML ~ C# by Microsoft - SQL Server by Microsoft
- XHTML - SOAP ~ VB.NET (Visual Basic.NET) - PostgreSQL by PostgreSQL Global
- CSS - RSS
- TCP/IP - DTD ~ ASP.NET - DB2 by IBM
- XML DOM - PhP - Access by Microsoft
- XSL - JavaScript (JScript)
- XSLT - Perl
- XSL-FO - CGI
- XPath -C
- XQuery - C++
- XLink
- XPointer
- Python
- Schema - Ruby on Rails (Ruby)
- XForms
- WSDL
- RDF
- WAP

BROWSER MULTIMEDIA
SCRIPTING
- DHTML - Flash
- HTML DOM - Shockwave
- JavaScript - SMIL
- AJAX - SVG
- VBScript
- E4X
- WMLScript

Integrated Development
GRAPHICS ANIMATION Environment (IDE)
Photoshop - Maya - Netbeans by Sun Microsystems
CorelDraw - 3D StudioMax - Visual Studio by Microsoft
GIF Animator - AutoCAD - DreamWeaver by Adobe
Xara3D - FrontPage by Microsoft
- JBuilder
- Eclipse
- Delphi

INTERNET SERVER

CLIENT COMPUTER OFFICE SERVER

- Internet Browser - Office LAN

Office Client Office Client


computer computer

Introduction to Website Designing & Development - 3 -


Web-Application / WebApp
- Introduction -
In software engineering, a web application or webapp is an application that is accessed via a web browser over a network such as
the Internet or an intranet. The term may also mean a computer software application that is hosted in a browser-controlled
environment (e.g. a Java applet) or coded in a browser-supported language (such as JavaScript, possibly combined with a browser-
rendered markup language like HTML) and reliant on a common web browser to render the application executable.

Web applications are popular due to the ubiquity of web browsers, and the convenience of using a web browser as a client,
sometimes called a thin client. The ability to update and maintain web applications without distributing and installing software on
potentially thousands of client computers is a key reason for their popularity, as is the inherent support for cross-platform
compatibility. Common web applications include web-mail, online retail sales, online auctions, wikis and many other functions.

HISTORY

In earlier types of client-server computing, each application had its own client program which served as its user interface and had to
be separately installed on each user's personal computer. An upgrade to the server part of the application would typically require an
upgrade to the clients installed on each user workstation, adding to the support cost and decreasing productivity.

In contrast, web applications use web documents written in a standard format such as HTML (and more recently XHTML), which are
supported by a variety of web browsers.

Generally, each individual web page is delivered to the client as a static document, but the sequence of pages can provide an
interactive experience, as user input is returned through web form elements embedded in the page markup. During the session, the
web browser interprets and displays the pages, and acts as the universal client for any web application.

In 1995, Netscape introduced a client-side scripting language called JavaScript, which allowed programmers to add some dynamic
elements to the user interface that ran on the client side. Until then, all the data had to be sent to the server for processing, and the
results were delivered through static HTML pages sent back to the client.

In 1996, Macromedia introduced Flash, a vector animation player that could be added to browsers as a plugin to embed animations
on the web pages. It allowed the use of a scripting language to program interactions on the client side with no need to communicate
with the server.

In 1999, the "web application" concept was introduced in the Java language in the Servlet Specification version 2.2. [2.1?]. At that
time both JavaScript and XML had already been developed, but AJAX had still not yet been coined and the XMLHttpRequest object
had only been recently introduced on Internet Explorer 5 as an ActiveX object. [3]

In 2005, the term Ajax was coined, and applications like Gmail started to make their client sides more and more interactive.

INTERFACE

Webconverger operating system provides an interface for web applications. The web interface places very few limits on client
functionality. Through Java, JavaScript, DHTML, Flash and other technologies, application-specific methods such as drawing on the
screen, playing audio, and access to the keyboard and mouse are all possible. Many services have worked to combine all of these
into a more familiar interface that adopts the appearance of an operating system. General purpose techniques such as drag and
drop are also supported by these technologies. Web developers often use client-side scripting to add functionality, especially to
create an interactive experience that does not require page reloading. Recently, technologies have been developed to coordinate
client-side scripting with server-side technologies such as PHP. Ajax, a web development technique using a combination of various
technologies, is an example of technology which creates a more interactive experience.

STRUCTURE

Applications are usually broken into logical chunks called "tiers", where every tier is assigned a role. Traditional applications consist
only of 1 tier, which resides on the client machine, but web applications lend themselves to an n-tiered approach by nature. Though
many variations are possible, the most common structure is the three-tiered application. In its most common form, the three tiers are
called presentation, application and storage, in this order.

• A web browser is the first tier (presentation),


• An engine using some dynamic Web content technology (such as ASP, ASP.NET, CGI, ColdFusion, JSP/Java, PHP, Perl,
Python, Ruby on Rails or Struts2) is the middle tier (application logic), and
• A database is the third tier (storage).

The web browser sends requests to the middle tier, which services them by making queries and updates against the database and
generates a user interface.

For more complex applications, a 3-tier solution may fall short, and you may need a n-tiered approach, where the greatest benefit is
breaking the business logic, which resides on the application tier, into a more fine-grained model or adding an integration tier that
separates the data tier from the rest of tiers by providing an easy-to-use interface to access the data. For example, you would
access the client data by calling a "list_clients()" function instead of making a SQL query directly against the client table on the
database. That allows you to replace the underlying database without changing the other tiers.

There are some who view a web application as two-tier architecture. This can be a "smart" client that performs all the work and
queries a "dumb" server, or a "dumb" client that relies on a "smart" server. The client would handle the presentation tier, the server
would have the database (storage tier), and the business logic (application tier) would be on one of them or on both; while this
increases the scalability of the applications and separates the display and the database, it still doesn't allow for true specialization of
layers, so most applications will outgrow this model.
Introduction to Website Designing & Development - 4 -
Web-Application / WebApp
- Introduction -

BUSINESS USE

An emerging strategy for application software companies is to provide web access to software previously distributed as local
applications. Depending on the type of application, it may require the development of an entirely different browser-based interface,
or merely adapting an existing application to use different presentation technology. These programs allow the user to pay a monthly
or yearly fee for use of a software application without having to install it on a local hard drive. A company which follows this strategy
is known as an application service provider (ASP), and ASPs are currently receiving much attention in the software industry.

WRITING WEB APPLICATIONS

There are many web application frameworks which facilitate rapid application development by allowing the programmer to define a
high-level description of the program. In addition, there is potential for the development of applications on Internet operating
systems, although currently there are not many viable platforms that fit this model.

The use of web application frameworks can often reduce the number of errors in a program, both by making the code simpler, and
by allowing one team to concentrate just on the framework. In applications which are exposed to constant hacking attempts on the
Internet, security-related problems caused by errors in the program are a big issue. Frameworks may also promote the use of best
practices such as GET after POST.

APPLICATIONS

Browser applications typically include simple office software (word processors, online spreadsheets, and presentation tools), with
Google Docs being the most notable example, and can also include more advanced applications such as project management,
computer-aided design, video editing and point-of-sale.

BENEFITS

Browser applications typically require little or no disk space on the client, upgrade automatically with new features, and integrate
easily into other web procedures, such as email and searching. They also provide cross-platform compatibility (i.e., Windows, Mac,
Linux, etc.) because they operate within a web browser window.

DRAWBACKS

Standards compliance is an issue with any non-typical office document creator, which causes problems when file sharing and
collaboration becomes critical. Also, browser applications rely on application files accessed on remote servers through the Internet.
Therefore, when connection is interrupted, the application is no longer usable. Google Gears is a platform to ameliorate this issue
and improve the usability of browser applications.

Introduction to Website Designing & Development - 5 -


List of Web-Programming Language Popularity

We have attempted to collect a variety of data about the relative popularity of programming languages, mostly out of curiosity. To
some degree popularity does matter - however it is clearly not the only thing to take into account when choosing a programming
language. Most experienced programmers should be able to learn the basics of a new language in a week, and be productive with it
in a few more weeks, although it will likely take much longer to truly master it.

Note:
These results are not scientific. They are interesting nonetheless, and are an attempt to glean as much data as possible
notwithstanding the fact that gathering precise data is impossible. We hope you find them interesting as well. Constructive
suggestions on improving them are welcome. Contact information is provided at the bottom of the page.

Introduction to Website Designing & Development - 6 -


List of Web-Programming Language Popularity

YAHOO SEARCH RESULTS

Yahoo provides an API to its search API. Previous versions of these statistics used numbers from Google, but since Google has
deprecated its own API, we utilized Yahoo's. Searches took the form "language programming"

This is a fairly crude approximation of popularity, however, it's worth including, because all other things being equal, the more
popular a language is, the more pages will exist mentioning it.

Note:
These results are not scientific. They are interesting nonetheless, and are an attempt to glean as much data as possible
notwithstanding the fact that gathering precise data is impossible. We hope you find them interesting as well.

Popular Programming Language

CRAIGSLIST

We used Yahoo's search API for this too, with queries like this: language programmer -"job wanted" site: craigslist.org
Popular languages are used more in industry, and consequently, people post job listings that seek individuals with experience in
those languages. This is probably something of a lagging indicator, because a language is likely to gain popularity prior to
companies utilizing it and consequently seeking more people with experience in it.

Jobs Requirements

Introduction to Website Designing & Development - 7 -


List of Web-Programming Language Popularity

POWELL'S BOOKS

Note: Until recently, we used data from Amazon.com for book statistics, but due to several problems with Amazon's web service, we
have switched to data from Powell's Books. They're a large, independent book store based in Portland, Oregon. A visit to the
physical store is highly recommended if you're ever in the area.

Since these results are new, we will probably be tweaking them in order to determine which queries work "best". Currently, we're
searching for language names in titles in several sections that are relevant (Software Engineering and Computer Programming, to
be precise). Expect the results to change some over the coming months.

Books are a lagging indicator, but a good way to eliminate languages that aren't "established" at all. There are hundreds of
languages out there, but if there's a book, it's generally something more than a toy or research project. That's not to say that
languages without a book aren't "serious", but we do need to draw the line somewhere. In any case, it's interesting to compare what
languages people are talking about with the amount of available books.

Books Demand

FRESHMEAT

The data from Freshmeat were obtained via their new API: http://help.freshmeat.net/faqs/api-7/data-api-intro.

Freshmeat is a good place to get data on open source projects that have passed the early stages and actually released something.
These results most likely reflect differences in what people are paid to work with and what they choose to work with when they can
choose. There were no Freshmeat projects utilizing COBOL, for example, although it seems to fare decently in the other results.

Open Source Projects

Introduction to Website Designing & Development - 8 -


List of Web-Programming Language Popularity

GOOGLE CODE

Data from Google Code Search was obtained using the API to search here: http://www.google.com/codesearch

This is similar to Freshmeat in that it favors open source projects with code floating around on the web. Unfortunately, it seems that
the Google Code people don't like Forth much, as it's not on their list of languages. I have renewed the request to add it.

Programming Source Code Availability

DEL.ICIO.US

Data from Del.icio.us was obtained with the Yahoo Search API, because the del.icio.us API really isn't up to the job yet. We did site:
searches like language programming.

This is an interesting bit of data for a couple of reasons. First of all, it seems more linear that the others. It ought to reflect what
people genuinely find interesting or useful themselves, rather than what they put out there at random, which means they have an
incentive to be 'honest'. The order of the language also seems to change significantly compared to the other data sets.

What people are genuinely find interesting?

Introduction to Website Designing & Development - 9 -


List of Web-Programming Language Popularity

OHLOH

Ohloh provides a lot of information and statistics about various open source projects. We decided to use the number of people
committing code in a particular language, rather than something like lines of code, as languages like C will always have more lines
than, say, shell scripts.

Number of people committing programming code in a particular language

NORMALIZED COMPARISON

This is a chart showing combined results from all data sets.

Overall Results

Introduction to Website Designing & Development - 10 -


What Web-Programming languages are people talking about?

For fun (well, this whole site is "for fun"... let's just say it's extra data we don't include in the main results), we also gathered some
data from sites programmers often visit to talk about programming languages. Because of how this industry functions, what people
are experimenting with, what they want to use and what they're paid to use every day are often different things. For the moment, we
use four sites:

• Lambda - The Ultimate


• programming.reddit.com
• Slashdot
• IRC

Introduction to Website Designing & Development - 11 -


What Web-Programming languages are people talking about?

LAMBDA - THE ULTIMATE

The data were obtained using Yahoo's search API on the Lambda The Ultimate web site, utilizing the title: query option in an attempt
to eliminate false positives due to the presence of these terms on every page: Erlang, Lisp, Haskell, Tcl, Python.

This site is firmly grounded in academia, and many participants are associated with programming language research, so more
"experimental" or innovative languages are commonly discussed and well regarded. What's interesting about the numbers is that
there seems to be a cap, with several languages equal to the maximum. Perhaps it's an error with Yahoo's data - we'll keep an eye
on it for future versions of this report.

At Lambda Website

PROGRAMMING.REDDIT.COM

The data were obtained using Yahoo's search API with the programming.reddit.com web site, and the title: query option, due to the
(c) 2007 at the bottom of every reddit page that returns lots of false positives for C.

This site has gained in popularity recently, and often has decent discussions of programming languages and their relative merits.
The community is generally curious about up and coming languages like Haskell and Erlang. Of course there are also many people
working in industry with languages like Java and PHP.

At Programming.Reddit.Com Website

Introduction to Website Designing & Development - 12 -


What Web-Programming languages are people talking about?

SLASHDOT

The data were obtained using Yahoo's search API with the Slashdot web site. We use the title: query option here too, to be fair.
Slashdot reaches a very wide audience, and while it hasn't been quite as popular as more recent arrivals like reddit, it's still a very
popular site, and has been around for a while, so is worth including.

At Slashdot Website

IRC

The data were obtained from a bot stationed on the Freenode IRC network, which polls the number of users per channel at intervals
of several hours.

IRC is still, for many people, the place to go to get real-time help with various technologies, or simply to discuss them.

At IRC Website

Introduction to Website Designing & Development - 13 -


`
What Web-Programming languages are people talking about?

NORMALIZED DISCUSSION SITE RESULTS

Normalized results from the discussion site data sets - these results are not included with the 'normalized results' above. It's
interesting to note how languages like Haskell and Erlang are talked about a lot, despite scoring fairly low on the normalized
popularity chart above. People are interested in them, but haven't begun to use them on a large scale yet.

Overall Results

Introduction to Website Designing & Development - 14 -


Popular Web-Programming languages
– An Overview –

Programming Language JAVA


Designed/Developed Sun Microsystems
Website http://java.sun.com/
Resource http://en.wikipedia.org/wiki/Java_(programming_language)

Microsoft C#
Programming Language C#
Designed/Developed Microsoft Corporation
Website http://msdn.microsoft.com/hi-in/vcsharp/default.aspx
http://msdn.microsoft.com/hi-in/vstudio/default.aspx
Resource http://en.wikipedia.org/wiki/Microsoft_Visual_C_Sharp

Microsoft VB.NET (Visual Basic.NET)


Programming Language VB.NET - by Microsoft
Designed/Developed Microsoft Corporation
Website http://msdn.microsoft.com/hi-in/vbasic/default.aspx
http://msdn.microsoft.com/hi-in/vstudio/default.aspx
Resource http://en.wikipedia.org/wiki/VB.NET

Programming Language ASP.NET


Designed/Developed Microsoft Corporation
Website http://www.asp.net/
Resource http://en.wikipedia.org/wiki/ASP.NET

Programming Language PHP


Designed/Developed Rasmus Lerdorf
Website http://www.php.net/
Resource http://en.wikipedia.org/wiki/PHP

Introduction to Website Designing & Development - 15 -


Popular Web-Programming languages
– An Overview –

JavaScript
Programming Language JavaScript
Designed/Developed - Brendan Eich
- Netscape Communications Corporation, Mozilla Foundation
Website https://developer.mozilla.org/en/JavaScript
Resource http://en.wikipedia.org/wiki/JavaScript

Programming Language Perl

Designed/Developed Larry Wall


Website http://www.perl.org/
Resource http://en.wikipedia.org/wiki/Perl

C
Programming Language C
Designed/Developed Dennis Ritchie & Bell Labs
Website http://www.bell-labs.com/
Resource http://en.wikipedia.org/wiki/C_(programming_language)

C++
Programming Language C++
Designed/Developed Bjarne Stroustrup
Website http://www2.research.att.com/~bs/homepage.html
Resource http://en.wikipedia.org/wiki/C%2B%2B_programming_language

Programming Language Python


Designed/Developed Guido van Rossum
Python Software Foundation
Website http://www.python.org/
Resource http://en.wikipedia.org/wiki/Python_(programming_language)

Programming Language Ruby


Designed/Developed Yukihiro Matsumoto
Website http://www.ruby-lang.org/en/
Resource http://en.wikipedia.org/wiki/Ruby_(programming_language)

Introduction to Website Designing & Development - 16 -


Database
- Overview -
A database is an integrated collection of logically related records or files consolidated into a common pool that provides data for one
or more multiple uses.

One way of classifying databases involves the type of content, for example: bibliographic, full-text, numeric, image. Other
classification methods start from examining database models or database architectures.

ARCHITECTURE

A number of database architectures exist. Many databases use a combination of strategies.

Databases consist of software-based "containers" that are structured to collect and store information so users can retrieve, add,
update or remove such information in an automatic fashion. Database programs are designed for users so that they can add or
delete any information needed. The structure of a database is the table, which consists of rows and columns of information.

DATABASE MANAGEMENT SYSTEMS (DBMS)

A database management system (DBMS) consists of software that organizes the storage of data. A DBMS controls the creation,
maintenance, and use of the database storage structures of social organizations and of their users. It allows organizations to place
control of organization wide database development in the hands of Database Administrators (DBA’s) and other specialists. In large
systems, a DBMS allows users and other software’s to store and retrieve data in a structured way.

Database management systems are usually categorized according to the database model that they support, such as the network,
relational or object model. The model tends to determine the query languages that are available to access the database. One
commonly used query language for the relational database is SQL, although SQL syntax and function can vary from one DBMS to
another.

A relational database management system (RDBMS) implements features of the relational model. In this context, Date's "Information
Principle" states: "the entire information content of the database is represented in one and only one way. Namely as explicit values
in column positions (attributes) and rows in relations (tuples); therefore, there are no explicit pointers between related tables." This
contrasts with the object database management system (ODBMS), which does store explicit pointers between related types.

COMPONENTS OF DBMS

RDBMS components

• Interface drivers
A user or application program initiates either schema modification or content modification. These drivers are built on top of
SQL. They provide methods to prepare statements; execute statements, fetch results, etc. Examples include DDL, DCL,
DML, ODBC, and JDBC. Some vendors provide language-specific proprietary interfaces. For example MySQL provides
drivers for PHP, Python, etc.

• SQL engine
This component interprets and executes the SQL query. It comprises three major components (compiler, optimizer, and
execution engine).

• Transaction engine
Transactions are sequences of operations that read or write database elements, which are grouped together.

• Relational engine
Relational objects such as Table, Index, and Referential integrity constraints are implemented in this component.

• Storage engine
This component stores and retrieves data records. It also provides a mechanism to store metadata and control information
such as undo logs, redo logs, lock tables, etc.

ODBMS components

• Language drivers
A user or application program initiates either schema modification or content modification via the chosen programming
language. The drivers then provide the mechanism to manage object lifecycle coupling of the application memory space
with the underlying persistent storage. Examples include C++, Java, .NET, and Ruby.

• Query engine
This component interprets and executes language-specific query commands in the form of OQL, LINQ, JDOQL, JPAQL,
others. The query engine returns language specific collections of objects which satisfy a query predicate expressed as
logical operators e.g. >, <, >=, <=, AND, OR, NOT, GroupBY, etc.

• Transaction engine
Transactions are sequences of operations that read or write database elements, which are grouped together. The
transaction engine is concerned with such things as data isolation and consistency in the driver cache and data volumes
by coordinating with the storage engine.

• Storage engine
This component stores and retrieves objects in an arbitrarily complex model. It also provides a mechanism to manage and
store metadata and control information such as undo logs, redo logs, lock graphs, etc.

Introduction to Website Designing & Development - 17 -


Database
- Overview -

PRIMARY TASKS OF DBMS PACKAGES

• Database Development
Used to define and organize the content, relationships, and structure of the data needed to build a database.

• Database Interrogation
Can access the data in a database for information retrieval and report generation; end-users can selectively retrieve and
display information and produce printed reports and documents.

• Database Maintenance
Used to add, delete, update, correct, and protect the data in a database.

• Application Development
Used to develop prototypes of data entry screens, queries, forms, reports, tables, and labels for a prototyped application
or use 4GL or 4th Generation Language or application generator to develop program codes.

TYPES OF DATABASE

• Operational database
These databases store detailed data needed to support the operations of an entire organization. They are also called
subject-area databases (SADB), transaction databases, and production databases. For example:
o customer databases
o personal databases
o inventory databases

• Analytical database
These databases store data and information extracted from selected operational and external databases. They consist of
summarized data and information most needed by an organization's management and other end-users. Some people refer
to analytical databases as multidimensional databases, management databases, or information databases.

• Data warehouse
A data warehouse stores data from current and previous years — data extracted from the various operational databases
of an organization. It becomes the central source of data that has been screened, edited, standardized and integrated so
that it can be used by managers and other end-user professionals throughout an organization

• Distributed database
These are databases of local work-groups and departments at regional offices, branch offices, manufacturing plants and
other work sites. These databases can include segments of both common operational and common user databases, as
well as data generated and used only at a user’s own site.

• End-user database
These databases consist of a variety of data files developed by end-users at their workstations. Examples of these are
collections of documents in spreadsheets, word processing and even downloaded files.

• External database
These databases provide access to external, privately-owned data online — available for a fee to end-users and
organizations from commercial services. Access to a wealth of information from external database is available for a fee
from commercial online services and with or without charge from many sources in the Internet.

• Hypermedia databases on the web


These are a set of interconnected multimedia pages at a web-site. They consist of a home page and other hyperlinked
pages of multimedia or mixed media such as text, graphic, photographic images, video clips, audio etc.

• Navigational database
In navigational databases, queries find objects primarily by following references from other objects. Traditionally
navigational interfaces are procedural, though one could characterize some modern systems like XPath as being
simultaneously navigational and declarative.

• In-memory databases
In-memory databases primarily rely on main memory for computer data storage. This contrasts with database
management systems which employ a disk-based storage mechanism. Main memory databases are faster than disk-
optimized databases since the internal optimization algorithms are simpler and execute fewer CPU instructions. Accessing
data in memory provides faster and more predictable performance than disk. In applications where response time is
critical, such as telecommunications network equipment that operates emergency systems, main memory databases are
often used.

• Document-oriented databases
Document-oriented databases are computer programs designed for document-oriented applications. These systems may
be implemented as a layer above a relational database or an object database. As opposed to relational databases,
document-based databases do not store data in tables with uniform sized fields for each record. Instead, they store each
record as a document that has certain characteristics. Any number of fields of any length can be added to a document.
Fields can also contain multiple pieces of data.

Introduction to Website Designing & Development - 18 -


Database
- Overview -

• Real-time databases
A real-time database is a processing system designed to handle workloads whose state may change constantly. This
differs from traditional databases containing persistent data, mostly unaffected by time. For example, a stock market
changes rapidly and dynamically. Real-time processing means that a transaction is processed fast enough for the result to
come back and be acted on right away. Real-time databases are useful for accounting, banking, law, medical records,
multi-media, process control, reservation systems, and scientific data analysis. As computers increase in power and can
store more data, real-time databases become integrated into society and are employed in many applications.

• Relational Database
The standard of business computing as of 2009, relational databases are the most commonly used database today. It
uses the table to structure information so that it can be readily and easily searched through.

DATABASE MODELS

• Post-relational database models (R-DBMS)

Products offering a more general data model than the relational model are sometimes classified as post-relational. The
data model in such products incorporates relations but is not constrained by the Information Principle, which requires the
representation of all information by data values in relation to it.

Some of these extensions to the relational model actually integrate concepts from technologies that pre-date the relational
model. For example, they allow representation of a directed graph with trees on the nodes.

Some products implementing such models do so by extending relational database systems with non-relational features.
Others, however, have arrived in much the same place by adding relational features to pre-relational systems.
Paradoxically, this allows products that are historically pre-relational, such as PICK and MUMPS, to make a plausible
claim to be post-relational in their current architecture.

• Object database models (O-DBMS)

In recent years, the object-oriented paradigm has been applied to database technology, creating various kinds of new
programming models known as object databases. These databases attempt to bring the database world and the
application-programming world closer together, in particular by ensuring that the database uses the same type system as
the application program. This aims to avoid the overhead (sometimes referred to as the impedance mismatch) of
converting information between its representation in the database (for example as rows in tables) and its representation in
the application program (typically as objects). At the same time, object databases attempt to introduce key ideas of object
programming, such as encapsulation and polymorphism, into the world of databases.

A variety of these ways have been tried for storing objects in a database. Some products have approached the problem
from the application-programming side, by making the objects manipulated by the program persistent. This also typically
requires the addition of some kind of query language, since conventional programming languages do not have the ability
to find objects based on their information content. Others have attacked the problem from the database end, by defining
an object-oriented data model for the database, and defining a database programming language that allows full
programming capabilities as well as traditional query facilities.

DATABASE STORAGE STRUCTURES

Databases may store relational tables/indexes in memory or on hard disk in one of many forms:

• ordered/unordered flat files


• ISAM
• heaps
• hash buckets
• B+ trees

These have various advantages and disadvantages - discussed further in the articles on each topic. The most commonly used are
B+ trees and ISAM.

Object databases use a range of storage mechanisms. Some use virtual memory-mapped files to make the native language (C++,
Java etc.) objects persistent. This can be highly efficient but it can make multi-language access more difficult. Others break the
objects down into fixed- and varying-length components that are then clustered tightly together in fixed sized blocks on disk and
reassembled into the appropriate format either for the client or in the client address space. Another popular technique involves
storing the objects in tuples (much like a relational database) which the database server then reassembles for the client.

Other important design choices relate to the clustering of data by category (such as grouping data by month, or location), creating
pre-computed views known as materialized views, partitioning data by range or hash. Memory management and storage topology
can be important design choices for database designers as well. Just as normalization is used to reduce storage requirements and
improve the extensibility of the database, conversely denormalization is often used to reduce join complexity and reduce execution
time for queries.

Introduction to Website Designing & Development - 19 -


Database
- Overview -

DATABASE INDEXING

All of these databases can take advantage of indexing to increase their speed. This technology has advanced tremendously since its
early uses in the 1960s and 1970s. The most common kind of index uses a sorted list of the contents of some particular table
column, with pointers to the row associated with the value. An index allows a set of table rows matching some criterion to be quickly
located. Typically, indexes are also stored in the various forms of data-structure mentioned above (such as B-trees, hashes, and
linked lists). Usually, a database designer selects specific techniques to increase efficiency in the particular case of the type of index
required.

Most relational DBMS’s and some object DBMS’s have the advantage that indexes can be created or dropped without changing
existing applications making use of them, The database chooses between many different strategies based on which one it estimates
will run the fastest. In other words, indexes act transparently to the application or end-user querying the database; while they affect
performance, any SQL command will run with or without indexes to compute the result of an SQL statement. The RDBMS will
produce a query plan of how to execute the query: often generated by analyzing the run times of the different algorithms and select
the quickest process. Some of the key algorithms that deal with joins are nested loop join, sort-merge join and hash join; which of
these an RDBMS selects may depend on whether an index exists, what type it is, and its cardinality.

An index speeds up access to data, but it has disadvantages as well. First, every index increases the amount of storage used on the
hard drive which is also necessary for the database file, and second, the index must be updated each time the data are altered, and
this costs time. (Thus an index saves time in the reading of data, but it costs time in entering and altering data. It thus depends on
the use to which the data are to be put whether an index is overall a net plus or minus in the quest for efficiency.)

A special case of an index is a primary index based on a primary key: a primary index must ensure a unique reference to a record.
Often, for this purpose one simply uses a running index-number (ID number). Primary indexes play a significant role in relational
databases, and they can speed up access to data considerably.

DATABASE TRANSACTIONS AND CONCURRENCY

In addition to their data model, most practical databases ("transactional databases") attempt to enforce database transactions.
Ideally, the database software should enforce the ACID rules, summarized here:

• Atomicity
Either all the tasks in a transaction must happen or none of them. The transaction must be completed, or else it must be
undone (rolled back).

• Consistency
Every transaction must preserve the integrity constraints — the declared consistency rules — of the database. It cannot
leave the data in a contradictory state.

• Isolation
Two simultaneous transactions cannot interfere with one another. Intermediate results within a transaction must remain
invisible to other transactions.

• Durability
Completed transactions cannot be aborted later or their results discarded. They must persist through (for instance) restarts
of the DBMS after crashes.

In practice, many DBMS’s allow the selective relaxation of most of these rules — for better performance.

Concurrency control ensures that transactions execute in a safe manner and follow the ACID rules. The DBMS must be able to
ensure that only serializable, recoverable schedules are allowed, and that no actions of committed transactions are lost while
undoing aborted transactions.

DATABASE REPLICATION

Replication of databases often relates closely to transactions. If a database can log its individual actions, one can create a duplicate
of the data in real time. DBA’s can use the duplicate to improve performance and/or the availability of the whole database system.

Common replication concepts include:

• Master/Slave Replication
All write-requests are performed on the master and then replicated to the slave(s)

• Quorum
The result of Read and Write requests are calculated by querying a "majority" of replicas

• Multimaster
Two or more replicas sync each other via a transaction identifier

Parallel synchronous replication of databases enables the replication of transactions on multiple servers simultaneously, which
provides a method for backup and security as well as data availability. This is commonly referred to as database clustering.

Introduction to Website Designing & Development - 20 -


Database
- Overview -

DATABASE SECURITY

Database security denotes the system, processes, and procedures that protect a database from unintended activity. Enforcing
security is one of the major tasks of the DBA.

DBMS’s usually enforce security through access control, auditing, and encryption:

• Access control ensures and restricts who can connect and what they can do to the database.

• Auditing logs what action or change has been performed, when and by whom.

• Encryption
Many commercial databases include built-in encryption mechanisms to encode data natively into tables and to decipher
information "on the fly" when a query comes in. DBA’s can also secure and encrypt connections if required using DSA,
MD5, SSL or legacy encryption standards.

In the United Kingdom, legislation protecting the public from unauthorized disclosure of personal information held on databases falls
under the Office of the Information Commissioner. Organizations based in the United Kingdom and holding personal data in
electronic format (databases for example) must register with the Data Commissioner.

DATABASE LOCKING

Databases handle multiple concurrent operations with locking. This is how concurrency and some form of basic integrity are
managed within the database system. Such locks can be applied on a row level, or on other levels like page (a basic data block),
extent (multiple array of pages) or even an entire table. This helps maintain the integrity of the data by ensuring that only one
process at a time can modify the same data.

In basic file-system files or folders, only one lock at a time can be set, restricting the usage to one process only. Databases, on the
other hand, can set and hold multiple locks at the same time on the different levels of the physical data structure. The database
engine locking scheme determines how to set and maintain locks based on the submitted SQL or transactions by the users.
Generally speaking, any activity on the database should involve some or extensive locking.

As of 2009 most DBMS systems use shared and exclusive locks. Exclusive locks mean that no other lock can acquire the current
data object as long as the exclusive lock lasts. DBMS’s usually set exclusive locks when the database needs to change data, as
during an UPDATE or DELETE operation.

Shared locks can take ownership one from the other of the current data structure. Shared locks are usually used while the database
is reading data (during a SELECT operation). The number, nature of locks and time the lock holds a data block can have a huge
impact on the database performances. Bad locking can lead to disastrous performance response (usually the result of poor SQL
requests, or inadequate database physical structure)

The isolation level of the data server enforces default locking behavior. Changing the isolation level will affect how shared or
exclusive locks must be set on the data for the entire database system. Default isolation is generally 1, where data can not be read
while it is modified, forbidding the return of "ghost data" to end users.

At some point intensive or inappropriate exclusive locking can lead to a "deadlock" situation between two locks, where none of the
locks can be released because they try to acquire resources mutually from each other. The database should have a fail-safe
mechanism which will automatically "sacrifice" one of the locks, thus releasing the resource. Processes or transactions involved in
the "deadlock" get rolled back.

Databases can also be locked for other reasons, like access restrictions for given levels of user. Some DBA’s also lock databases
for routine maintenance, which prevents changes being made during the maintenance. However, many modern databases don't lock
the database during routine maintenance. e.g. "Routine Database Maintenance" for PostgreSQL.

DATABASE APPLICATIONS

Databases function in many applications, spanning virtually the entire range of computer software. Databases have become the
preferred method of storage for large multi-user applications, where coordination between many users is needed. Even individual
users find them convenient, and many electronic mail programs and personal organizers are based on standard database
technology. Software database drivers are available for most database platforms so that application software can use a common API
to retrieve the information stored in a database. Commonly used database APIs include JDBC and ODBC.

DATABASES IN NEW MEDIA

Within new media, databases collect items on which the user can carry out various operations such as viewings, navigating, create,
and searching. Though there are various types of items within the database, each item has the same significance. Unlike a narrative
or film, the collections are computerized and therefore may offer a unique experience with each view. This form of data may present
a unique presentation of what the world is like. Databases can be seen as a symbolic form of the computer age.

Introduction to Website Designing & Development - 21 -


Popular Web-Database Systems
– An Overview –

Products Database products


Designed/Developed Sun Microsystems
Website http://www.mysql.com/
Resource http://en.wikipedia.org/wiki/MySQL

Products Database products


Designed/Developed Oracle Corporation
Website http://www.oracle.com/
Resource http://en.wikipedia.org/wiki/Oracle_Corporation

Products Database products


Designed/Developed Microsoft Corporation
Website http://www.microsoft.com/sqlserver
Resource http://en.wikipedia.org/wiki/Microsoft_SQL_Server

Products Database products


Designed/Developed PostgreSQL Global Development Group
Website http://www.postgresql.org/
Resource http://en.wikipedia.org/wiki/PostgreSQL

Products Database products


Designed/Developed Microsoft Corporation
Website http://office.microsoft.com/access
Resource http://en.wikipedia.org/wiki/Microsoft_Access

Introduction to Website Designing & Development - 22 -


Database
- Parameters -
INFORMATION ABOUT DATABASE SIZE LIMITS

Maximum Maximum Maximum Maximum Maximum Maximum Maximum Minimum Maximum Maximum
Database Table Row Column BLOB or Character Number Date Date Column
Size Size Size Per Row CLOB Size Size Value Value Name
Size Size
Unlimited (4 4 GB * block
GB * block size (with
Oracle 8KB 1000 Unlimited 4000 B 126 bits -4712 9999 30
size per BIGFILE
tablespace) tablespace)

MyISAM
storage
limits:
4 GB (longtext, 64 KB
MySql Unlimited 256TB; 64 KB 4096 64 bits 1000 9999 64
longblob) (text)
Innodb
storage
limits: 64TB

524,258 TB
(32,767 files
SQL Server 524,258 TB Unlimited 30000 2 GB 2 GB 126 bits 0001 9999 128
* 16 TB max
file size)

1 GB (text,
250-1600 bytea) - stored
PostgreSQL Unlimited 32 TB 1.6 TB depending inline or 2 GB 1 GB Unlimited -4713 5874897 63
on type (stored in
pg_largeobject)

64 KB (memo
field), 1 GB 255 B
MS- Access 2 GB 2 GB 16 MB 255 32 bits 0100 9999 ?
("OLE Object" (text field)
field)

Visual
Unlimited 2 GB 65,500 B 255 2 GB 16 MB 32 bits 0001 9999 ?
Foxpro

DATABASE PRODUCTS GENERAL INFORMATION

First Public Release Latest stable Software


Maintainer
Date version License
11g Release 2
Oracle Oracle Corporation November 1979 Proprietary
(September 2009)

5.1.40 GPL or
MySql Sun Microsystems November 1995
(6 October 2009) proprietary

Proprietary
SQL Server Microsoft Corporation 1989 2008 (v10.0)

8.4.1
PostgreSQL PostgreSQL Global Development Group June 1989 BSD
(9 September 2009)

Proprietary
MS- Access Microsoft Corporation 1992 12 (2007)

Proprietary
Visual Foxpro Microsoft Corporation 9 (2005)

OPERATING SYSTEM SUPPORTED BY DATABASE


(The operating systems the RDBMS can run on)

Windows Mac OS X Linux BSD UNIX AmigaOS Symbian z/OS 1


Oracle Yes Yes Yes No Yes No No Yes
MySql Yes Yes Yes Yes Yes Yes Yes Maybe
SQL Server Yes No No No No No No No
PostgreSQL Yes Yes Yes Yes Yes Yes No No
MS- Access Yes No No No No No No No
Visual Foxpro Yes No No No No No No No

Introduction to Website Designing & Development - 23 -


Database
- Parameters -

DATABASE FUNDAMENTAL FEATURES


(Fundamental RDBMS features are implemented natively)

ACID Referential Transactions Unicode Interface


Integrity
Oracle Yes Yes Yes Yes GUI & SQL
MySql Yes Yes Yes Partial SQL
SQL Server Yes Yes Yes Yes GUI & SQL
PostgreSQL Yes Yes Yes Yes SQL
MS- Access No Yes Yes Yes GUI & SQL
Visual Foxpro No Yes Yes No GUI & SQL

DATABASE TABLES AND VIEWS


(Information about what tables and views (other than basic ones) are supported natively)

Temporary table Materialized view


Oracle Yes Yes
MySql Yes No
SQL Server Yes Yes
PostgreSQL Yes No
MS- Access Yes No
Visual Foxpro Yes Yes

DATABASE INDEXES
(Information about what indexes (other than basic B-/B+ tree indexes) are supported natively.)

R-/R+ tree Hash Expression Partial Reverse Bitmap GiST GIN


Oracle Yes Cluster Tables Yes Yes Yes Yes No No

MyISAM MEMORY, Cluster (NDB),


MySql No No No No No No
tables only InnoDB, tables only

SQL Server ? Non/Cluster & fill factor Yes Yes No No No No

PostgreSQL Yes Yes Yes Yes Yes Yes Yes Yes

MS- Access No No No No No No No No

Visual FoxPro No No Yes Yes Yes Yes No No

DATABASE CAPABILITIES

Union Intersect Except Inner Outer Inner Merge Blobs Common Table Windowing
joins joins selects joins and Expressions Functions
Clobs
Yes. Recursive CTEs
introduced in 11gR2
Yes, via
Oracle Yes Yes Yes Yes Yes Yes Yes supersedes similar Yes
MINUS construct called
CONNECT BY

MySql Yes No No Yes Yes Yes Yes Yes No No

Yes Yes
(2005
SQL Server
and
(2005 and Yes Yes Yes Yes Yes Yes Yes Yes
beyond)
beyond)

PostgreSQL Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes

MS- Access Yes No No Yes Yes Yes No Yes No No

Visual
FoxPro
Yes ? ? Yes Yes Yes ? Yes No No

Introduction to Website Designing & Development - 24 -


Database
- Parameters -

DATA TYPES

Type Integer Floating point Decimal String Binary Date/Time Boolean Other
system
CHAR,
Static + VARCHAR2, DATE, TIMESTAMP
SPATIAL, IMAGE,
Dynamic BINARY_FLOAT, CLOB, BLOB, RAW, (with/without
Oracle NUMBER NUMBER N/A AUDIO, VIDEO,
(through BINARY_DOUBLE NCLOB, LONGRAW TIMEZONE),
DICOM, XMLType
ANYDATA) NVARCHAR2, INTERVAL
NCHAR

TINYINT (8-
bit),
BOOLEAN
SMALLINT
(aka
(16-bit), FLOAT (32-bit), CHAR,
DATETIME, DATE, BOOL) =
MySql Static MEDIUMINT DOUBLE (aka DECIMAL VARCHAR, BLOB ENUM, SET
TIMESTAMP, YEAR synonym
(24-bit), INT REAL) (64-bit) TEXT
for
(32-bit),
TINYINT
BIGINT (64-
bit)

CHAR, CURSOR,
DATE,
NUMERIC, VARCHAR, TIMESTAMP,
TINYINT, BINARY, DATETIMEOFFSET,
DECIMAL, TEXT, HIERARCHYID,
SQL Server Static SMALLINT, FLOAT, REAL VARBINARY, DATETIME2, BIT
SMALLMONEY, NCHAR, UNIQUEIDENTIFIER,
INT, BIGINT IMAGE SMALLDATETIME,
MONEY NVARCHAR, SQL_VARIANT,
DATETIME, TIME
NTEXT XML, TABLE

SMALLINT POINT, LINE, LSEG,


(16-bit), REAL (32-bit), BOX, PATH,
CHAR, DATE, TIME,
INTEGER DOUBLE DECIMAL, POLYGON, CIRCLE,
PostgreSQL Static VARCHAR, BYTEA TIMESTAMP, BOOLEAN
(32-bit), PRECISION (64- NUMERIC CIDR, INET,
TEXT INTERVAL
BIGINT (64- bit) MACADDR, BIT,
bit) arrays

MS- Access

Visual
FoxPro

OTHER OBJECTS

Data Domain Cursor Trigger Function Procedure External routine


Oracle Yes Yes Yes Yes Yes Yes

MySql No Yes Yes Yes Yes Yes

SQL Server Yes Yes Yes Yes Yes Yes


(2000 and beyond)

PostgreSQL Yes Yes Yes Yes Yes Yes

MS- Access Yes No No No No Yes

Visual FoxPro No Yes Yes Yes Yes Yes

DATABASE PARTITIONING

Range Hash Composite List Shadow Native Replication API


(Range + Hash)
Oracle Yes Yes Yes Yes ? ?

MySql Yes Yes Yes Yes ? ?

SQL Server Yes No No No ? ?

PostgreSQL Yes Yes Yes Yes ? ?

MS- Access No No No No No No

Visual FoxPro No No No No No No

Introduction to Website Designing & Development - 25 -


Database
- Parameters -

DATABASE ACCESS CONTROL


Information about access control functionalities (work in progress).

Native Brute-force Enterprise Password Patch Run Audit Resource Separation of Security
network protection directory complexity access unprivileged limit duties Certification
encryption compatibility rules (between
administrator,
operator,
backup, ...
like RBAC)
Oracle Yes Yes Yes Yes ? ? Yes Yes ? Yes

Yes No No No Partial (no Yes ? ? ? No


MySql (SSL with security
4.0) page)

Yes ? Yes Yes Yes Yes Yes Yes Yes Yes


(Microsoft (From
SQL Server
Active 2008)
Directory)

PostgreSQL Yes No Yes No Yes Yes No Yes No Yes

MS- Access

Visual
FoxPro

Introduction to Website Designing & Development - 26 -


Application Service Provider (ASP)
- What is it about? -
An application service provider (ASP) is a business that provides computer-based services to customers over a network. Software
offered using an ASP model is also sometimes called On-demand software or software as a service (SaaS). The most limited sense
of this business is that of providing access to a particular application program (such as customer relationship management) using a
standard protocol such as HTTP.

The need for ASPs has evolved from the increasing costs of specialized software that have far exceeded the price range of small to
medium sized businesses. As well, the growing complexities of software have led to huge costs in distributing the software to end-
users. Through ASPs, the complexities and costs of such software can be cut down. In addition, the issues of upgrading have been
eliminated from the end-firm by placing the onus on the ASP to maintain up-to-date services, 24 x 7 technical support, physical and
electronic security and in-built support for business continuity and flexible working.

The importance of this marketplace is reflected by its size. As of early 2003, estimates of the United States market range from 1.5 to
4 billion dollars. Clients for ASP services include businesses, government organizations, non-profits, and membership organizations.

PROVIDER TYPES

There are several forms of ASP business. These are:

• A “specialist” or “functional” ASP delivers a single application, such as credit card payment processing or timesheet
services;
• A “vertical market” ASP delivers a solution package for a specific customer type, such as a dental practice;
• An “enterprise” ASP delivers broad spectrum solutions;
• A “local” ASP delivers small business services within a limited area.

Some analysts identify a “volume” ASP as a fifth type. This is basically a specialist ASP that offers a low cost packaged solution via
their own website. PayPal was an instance of this type, and their volume was one way to lower the unit cost of each transaction.

In addition to these types, some large multi-line companies (such as IBM), use ASP concepts as a particular business model that
supports some specific customers.

THE APPLICATION SERVICE PROVIDER (ASP) MODEL

The application software resides on the vendor's system and is accessed by users through a web browser using HTML or by special
purpose client software provided by the vendor. Custom client software can also interface to these systems through XML APIs.
These APIs can also be used where integration with in-house systems is required. ASPs may or may not use multi-tenancy in the
deployment of software to clients; some ASPs offer an instance or license to each customer (for example using Virtualization), some
deploy in a single instance multi-tenant access mode, now more frequently referred to as "SaaS".

Common features associated with ASPs include:


• ASP fully owns and operates the software application(s)
• ASP owns, operates and maintains the servers that support the software
• ASP makes information available to customers via the Internet or a "thin client"
• ASP bills on a "per-use" basis or on a monthly/annual fee

The advantages to this approach include:


• Software integration issues are eliminated from the client site
• Software costs for the application are spread over a number of clients
• Vendors can build more application experience than the in-house staff
• Key software systems are kept up to date, available, and managed for performance by experts
• Improved reliability, availability, scalability and security of internal IT systems
• A provider's service level agreement guarantees a certain level of service
• Access to product and technology experts dedicated to available products
• Reduction of internal IT costs to a predictable monthly fee.
• Redeploying IT staff and tools to focus on strategic technology projects that impact the enterprise's bottom line

Some inherent disadvantages include:


• The client must generally accept the application as provided since ASPs can only afford a customized solution for the
largest clients
• The client may rely on the provider to provide a critical business function, thus limiting their control of that function and
instead relying on the provider
• Changes in the ASP market may result in changes in the type or level of service available to clients
• Integration with the client's non-ASP systems may be problematic

Evaluating an Application Service Provider security when moving to an ASP infrastructure can come at a high cost, as such a firm
must assess the level of risk associated with the ASP itself. Failure to properly account for such risk can lead to:
• Loss of control of corporate data
• Loss of control of corporate image
• Insufficient ASP security to counter risks
• Exposure of corporate data to other ASP customers
• Compromise of corporate data

Introduction to Website Designing & Development - 27 -


Application Service Provider (ASP)
- What is it about? -

Some other risks include failure to account for the financial future of the ASP in general, i.e. how stable a company is and if it has the
resources to continue business into the foreseeable future. For these reasons Cisco Systems has developed a comprehensive
evaluation guideline. This guideline includes evaluating the scope of the ASP's service, the security of the program and the ASP's
maturity with regard to security awareness. Finally the guidelines indicate the importance of performing audits on the ASP with
respect to:

• Port/Network service
• Application vulnerability
• ASP Personnel

Physical visits to the ASP to assess the formality of the organization will provide invaluable insight into the awareness of the firm.

HISTORY

In terms of their common goal of enabling customers to outsource specific computer applications so they can focus on their core
competencies, ASPs may be regarded as the indirect descendants of the service bureaus of the 1960s and 1970s. In turn, those
bureaus were trying to fulfill the vision of computing as a utility, which was first proposed by John McCarthy in a speech at MIT in
1961.

Introduction to Website Designing & Development - 28 -


Application Service Provider (ASP)
- How it works? -
INTRODUCTION TO HOW ASPS WORK

The Web and the Internet began to really heat up and receive significant media exposure starting around 1994. Initially, the Web
started as a great way for academics and researchers to distribute information; but as millions of consumers flocked to the Internet, it
began to spawn completely new business models. Three good examples of innovative models include:

• Amazon - Amazon (which opened its doors in July, 1995) houses a database of millions of products that anyone can
browse at any time. It would have been impossible to compile a list this large in any medium other than the Web.
• Ebay - Online auctions make it easy and inexpensive for millions of people to buy and sell any imaginable item. It would
be impossible to do this at a reasonable cost or in a timely manner with any medium other than the Web.
• Epinions - Thousands of people contribute to a shared library of product reviews. One of the Web's greatest strengths is
its worldwide view and collaborative possibilities.

These different business models are all visible to anyone surfing the Web. One of the most interesting behind-the-scenes business
models that the Web has created is called the ASP, or Application Service Provider. ASPs are a completely new way to sell and
distribute software and software services. Although ASPs were possible before the advent of the Web, the Web makes them so easy
to create that they have proliferated hugely in the last several years.

The ASP model can be extremely appealing to businesses -- especially small businesses and startups -- because it can drastically
lower the costs of software and services. We will look at the ASP model from top to bottom so you can understand it completely. You
will learn how it works, why it evolved and why it is becoming so popular.

DEFINING AN ASP

ASPs tend to be made fairly complex and confusing in the media, but people have been using forms of the ASP for centuries. By
looking at one of these existing models and seeing how simple they are, you can gain a great deal of knowledge about Internet
ASPs. An airline is a classic example of a non-Internet ASP, and is extremely simple to understand. It therefore makes a great
starting point into your understanding of ASPs.

Almost all Fortune 1,000 businesses, as well as many small businesses, use airlines extensively. Many individuals also fly frequently
for business and pleasure. Yet the number of businesses and individuals that own their own airplanes is extremely small. Instead,
we rely on airlines to provide travel services to us on a per-use basis.

The main reason for the lack of plane ownership is the extremely high cost of entry. Let's say that you would like to own and operate
your own jet. Here are some of the costs involved:

• You have to purchase the jet. Jets cost millions of dollars.


• You have to maintain the jet.
• You have to hire people to staff the jet -- a pilot, for instance, is someone you will need, and pilots are extremely
expensive.
• You have to hope that the jet is in the right place at the right time for the people who need it. If not, you need to move the
jet around at a high cost in terms of fuel, maintenance, etc.

In almost all cases, these costs are so high that, compared to the cost of individual airline tickets, they make no economic sense.
Even the most intrepid traveler who flies 52 weeks out of the year would spend at most $2,000 per week ($104,000 per year) on
airline travel. That amount of money would not even cover the cost of the pilot, not to mention the cost of the plane, fuel,
maintenance, support, etc. involved in owning and operating a private jet. A private jet only makes economic sense in two possible
cases:

• You are moving a group of people around frequently and in unison.


• The value of the people flying is so great that it washes out the cost of operating the jet. For example, if you have a group
of executives whose value to the company is $2,000 per hour (for example, a CEO making $4 million per year), then
obviously you want to waste as little of this group's time as possible. You also want these people to be as relaxed as
possible so they can work optimally. In cases like that, a private jet may be well worth the money.

These two cases are extremely rare, hence the rarity of private jets. Note also that people who own private jets frequently travel
between the United States and Europe on the Concorde. The Concorde is an ASP for high-speed European travel. No company
could justify the cost of owning and operating a supersonic jet.

Airlines are classic ASPs because they give you and/or your company a choice. You can own and operate your own jet, or you can
charter a jet from an airline when you need, or you can pay a very low incremental cost to fly each time you need to travel (and
share the cost of owning and operating the jet with hundreds of other passengers on the plane). The "pay a low price each time you
use it" versus the "buy the service outright" option is a common feature of Internet ASPs, too.

Introduction to Website Designing & Development - 29 -


Application Service Provider (ASP)
- How it works? -

There are many other ASP-like models that most of us use every day. For example:

• Shipping companies - Instead of maintaining your own distribution network for packages, you pay a low incremental fee to
ship a package with the post office, Fedex or UPS. BMW and McDonalds are examples of companies that do so much
shipping that they actually own and operate their own truck fleets -- but this are a rarity.

• Telephone companies - It would be extremely difficult for a company to justify the cost of owning and operating its own
nationwide fiber optic network, so we all pay an extremely low incremental cost for each minute of long distance time we
use.

• Power companies - It would be possible for each homeowner and business to generate power, but not for 10 cents per
kilowatt-hour. Therefore, it makes sense to purchase power from a power company that distributes the high capital cost of
a power plant across all of its customers. Some companies -- especially companies that deal in forestry products -- can
actually generate their own power affordably because they have a source of free fuel or waste heat from some other
process within the company.

There are cases where we do not go the ASP route. For example, a huge number of Americans own and operate their own
automobiles instead of using the ASP called "public transportation." Most large businesses can justify the costs of large copying
machines, while smaller companies rely on the ASP called Kinkos.

The point of all this is simple -- ASPs are all around us in many different forms. We choose whether or not to use ASPs based on
economic factors that are driven largely by our frequency of use and the cost of entry and maintenance.

DEFINING AN INTERNET ASP

Even though airlines fit the model for an ASP, we generally do not refer to airlines as ASPs. The terms "ASP" and "Application
Service Provider" are applied specifically to companies that provide services via the Internet. In most cases, the term ASP has come
to denote companies that supply software applications and/or software-related services over the Internet.

Here are the most common features of an ASP:

• The ASP owns and operates a software application.

• The ASP owns, operates and maintains the servers that run the application. The ASP also employs the people needed to
maintain the application.

• The ASP makes the application available to customers everywhere via the Internet, either in a browser or through some
sort of "thin client."

• The ASP bills for the application either on a per-use basis or on a monthly/annual fee basis. In many cases, however, the
ASP can provide the service for free or will even pay the customer.

ADVANTAGES OF ASP’s

The ASP model has evolved because it offers some significant advantages over traditional approaches. Here are some of the most
important advantages:

• Especially for small businesses and startups, the biggest advantage is low cost of entry and, in most cases, an extremely
short setup time.

• The pay-as-you-go model is often significantly less expensive for all but the most frequent users of the service.

• The ASP model, as with any outsourcing arrangement, eliminates head count. IT headcount tends to be very expensive
and very specialized (like pilots in the airline example), so this is frequently advantageous.

• The ASP model also eliminates specialized IT infrastructure for the application as well as supporting applications. For
example, if the application you want to use requires an Oracle or MS-SQL database, you would have to support both the
application and the database.

• The ASP model can shift Internet bandwidth to the ASP, who can often provide it at lower cost.

One thing that led to the growth of ASPs is the high cost of specialized software. As the costs grow, it becomes nearly impossible for
a small business to afford to purchase the software, so the ASP makes using the software possible.

Another important factor leading to the development of ASPs has been the growing complexity of software and software upgrades.
Distributing huge, complex applications to the end user has become extremely expensive from a customer service standpoint, and
upgrades make the problem worse. In a large company where there may be thousands of desktops, distributing software (even
something as simple as a new release of Microsoft Word) can cost millions of dollars. The ASP model eliminates most of these
headaches.

Introduction to Website Designing & Development - 30 -


Application Service Provider (ASP)
- How it works? -

EXAMPLES OF ASP’s

ASP’s come in all shapes and sizes. One way to understand ASP’s is to look at them from several different angles using real-world
examples.

- Simple ASP’s -

If you were to start a small business today, you would probably begin by contacting three or four extremely common and largely
unnoticed ASP’s:

• A Web hosting company


Companies like Verio and WebHosting.com provide a classic ASP scenario -- virtual Web hosting. These companies
provide hardware, software, bandwidth and people to host Web sites for companies and individuals. Typically, they charge
something like $15 to $30 per month for the service, and may host hundreds of accounts on a single machine.

• An e-mail provider
A Web hosting company usually provides some sort of e-mail service with your Web hosting account. There are two other
alternatives:
1. Free services such as Hotmail or Yahoo! Mail
2. E-mail server ASPs who run exchange servers, POP servers or IMAP4 servers and distribute them on a
monthly-fee basis - For example, a company in the Raleigh area called Interpath offers a complete e-mail
solution at a rate of $8 per month per account (as of 4/10/2000).

The advantage of the second approach is that the e-mail address uses your company's domain name.

• A fax provider
Efax provides a free fax service that delivers faxes to your e-mail box. This is a classic example of a free ASP.

The huge advantage of using these ASPs is the fact that you don't have to do anything to get started. Five years ago, a small
business looking for these services would have needed to:
• Purchase Internet connectivity and a router
• Purchase one or more servers for the Web server software, e-mail software, etc.
• Hire a person to install and administrate the software
• In the case of a fax machine, purchase the fax machine and a separate incoming line for it

Those are tremendous hurdles. Now, all of these services can be ordered and delivered on the same day, and the monthly cost for
all three is probably less than $50 per month. The latest product category to enter the list of start-up ASPs is eCommerce Storefronts
-- a storefront might cost $200 to $400 per month.

The other thing to note is that ASP versions of these services will be significantly better than anything a small business owner can
afford to provide. For example:

• In the case of Web hosting, the provider will normally have a huge amount of available bandwidth, and the bandwidth will
be redundant at several levels.
• If there is a problem, trained staff on site 24 hours a day will fix it immediately.
• If you need more capacity, it is available with a phone call and a small adjustment of the monthly fee.
• The ASP will backup the data on a regular basis and is responsible for disaster recovery.

No small business could afford that level of service with a home-grown server infrastructure.

- Traditional ASP’s -

The "traditional" ASP sells a large, expensive application to large enterprises, but also provides a pay-as-you-go model for smaller
clients. A typical example might be ad-serving software or auction software for a Web site. For example:

• Engage offers ad-management software for Web sites. The software can be purchased on a yearly license costing tens of
thousands of dollars per year. In addition, the software requires an Oracle database for the software to use. If the Oracle
database is already installed and running in-house, then that is no problem, but if not it is a significant hurdle. The
alternative is to let Engage manage the software as an ASP and pay engage a CPM (cost per thousand) price for the
service. Unless you are serving millions of ad impressions per month, the ASP model makes tremendous economic
sense.

• DoubleClick (along with many similarly positioned companies) is essentially an ASP that offers advertising software plus
an advertising sales force. What is so interesting about this ASP approach is that the ASP actually pays the customer!

• OpenSite is a leading supplier for auction software. You can purchase its software and operate it with a database, or
access the software using an ASP model.

Nearly any piece of expensive software, including giant applications like SAP, PeopleSoft and Oracle, now comes in an ASP version
to allow these companies to reach smaller customers affordably.

Introduction to Website Designing & Development - 31 -


Application Service Provider (ASP)
- How it works? -

- Things to Ask a Prospective ASP -

ASP’s today offer nearly any service a company might need. Many of these services (like e-mail, Web hosting, ad serving, invoicing
and bill delivery, payroll, etc.) are mission critical. It is therefore important to make sure that the ASPs you choose will handle your
information and relationship in a mission-critical way. Here are a set of questions you should ask any ASP:

• How do customers access the software?


Is it through a browser or an application? If it is through a browser, how does the user experience feel?

• How are customer service issues resolved?


If you (or employees) have questions and/or problems with the software, what happens? Does the ASP provide training?

• How secure is the data?


You want to find out about internal security policies with ASP employees, passwords and access reports to protect your
employees, firewall and other safeguards against external attack, and things like tape backups to handle hardware
failures.

• How secure is the connection between the ASP and the user?
Data flows between the ASP and the user whenever the user accesses it. Is it secured by encryption, a VPN, proprietary
techniques or some other system?

• How is the application served?


Is your data on a dedicated machine or a shared machine? Both techniques are common and you often have a choice
(with dedicated service being more expensive).

• How does the ASP handle redundancy?


If a machine fails or an Internet pipe goes down, what levels of redundancy are in place to keep your servers online?

• How does the ASP handle hardware/software problems?


If a hard disk fails or the application hangs, what are the policies in place around recovery?

• How does the ASP handle a disaster?


If the buildings were to burn down or a hurricane came through, how would the ASP handle the complete loss of the
facility? How long would it be before the ASP restored service?

• Who owns the data?


Obviously, the customer should, but this fact should be stated in the contract.

• How can I get the data out if I choose to select a new ASP two years from now?
This is a tricky question on more complicated applications, and one that bears some thought for mission-critical
applications.

• How can I move data between existing applications and the ASP?
For example, if you have a home-grown ledger system and want to move data back and forth to a billing ASP, how would
that work? Many ASPs have already thought of this and handle it very well.

There are probably many other questions specific to your situation, especially for advanced applications. If the ASP covers all of
these bases well, then it is likely that the ASP can support your business adequately.

Introduction to Website Designing & Development - 32 -


Integrated Development Environment (IDE)

Abbreviated as IDE, a programming environment integrated into a software application that provides a GUI builder, a text or code
editor, a compiler and/or interpreter and a debugger. Visual Studio, Delphi, JBuilder, FrontPage and DreamWeaver are all examples
of IDEs.

An Integrated “Development” Environment (IDE) also known as Integrated “Design” Environment or Integrated “Debugging”
Environment is a software application that provides comprehensive facilities to computer programmers for software development. An
IDE normally consists of:

• A source code editor


• A compiler and/or an interpreter
• Build automation tools
• A debugger

Sometimes a version control system and various tools are integrated to simplify the construction of a GUI. Many modern IDE’s also
have a class browser, an object inspector, and a class hierarchy diagram, for use with object-oriented software development.

OVERVIEW

IDE’s are designed to maximize programmer productivity by providing tightly-knit components with similar user interfaces. This
should mean that the programmer has much less mode switching to do than when using discrete development programs. However,
because an IDE is by its very nature a complicated piece of software, this high productivity only occurs after a lengthy learning
curve.

Typically an IDE is dedicated to a specific programming language, so as to provide a feature set which most closely matches the
programming paradigms of the language. However, some multiple-language IDEs are in use, such as Eclipse, ActiveState Komodo,
recent versions of NetBeans, Microsoft Visual Studio, and WinDev.

IDEs typically present a single program in which all development is done. This program typically provides many features for
authoring, modifying, compiling, deploying and debugging software. The aim is to abstract the configuration necessary to piece
together command line utilities in a cohesive unit, which theoretically reduces the time to learn a language, and increases developer
productivity. It is also thought that the tight integration of development tasks can further increase productivity. For example, code can
be compiled while being written, providing instant feedback on syntax errors. While most modern IDEs are graphical, IDEs in use
before the advent of windowing systems (such as Microsoft Windows or X11) were text-based, using function keys or hotkeys to
perform various tasks (Turbo Pascal is a common example). This contrasts with software development using unrelated tools, such
as vi, GCC or make.

VISUAL PROGRAMMING

There is growing interest in visual programming (not to be confused with Visual Basic or Visual C++). Visual IDEs allow users to
create new applications by moving programming building blocks or code nodes to create flowcharts or structure diagrams which are
then compiled or interpreted. These flowcharts often are based on the Unified Modeling Language.

This interface has been popularized with the Lego Mindstorms system, and is being actively pursued by a number of companies
wishing to capitalize on the power of custom browsers like those found at Mozilla. KTechlab (right) supports flowcode and is a
popular opensource IDE and Simulator for developing software for microcontrollers. Visual programming is also responsible for the
power of distributed programming (cf. LabVIEW software). An early visual programming system, Max, was modelled after analog
synthesizer design and has been used to develop real-time music performance software since the 1980s. Another early example
was Prograph, a dataflow-based system originally developed for the Macintosh. The graphical programming environment "Grape" is
used to program qfix robot kits.

This approach is also used in specialist software such as Openlab, where the end users want the flexibility of a full programming
language, without the traditional learning curve associated with one.

An open source visual programming system is Mindscript, which has extended functionality for cryptology, database interfacing, etc.

LANGUAGE SUPPORT

Some IDEs support multiple-languages, such as Eclipse or NetBeans, both based on Java, or MonoDevelop, based on C#.

Support for alternative languages is often provided by plugins, allowing them to be installed on the same IDE at the same time. For
example, Eclipse and Netbeans have plugins for C/C++, Ada, Python, Ruby, and PHP, among other languages.

Introduction to Website Designing & Development - 33 -


Integrated Development Environment (IDE)

ATTITUDES ACROSS DIFFERENT COMPUTING PLATFORMS

Many Unix programmers argue that traditional command-line POSIX tools constitute an IDE, though one with a different style of
interface and under the Unix environment. Many programmers still use makefiles and their derivatives. Also, many Unix
programmers use Emacs or Vim, which integrate support for many of the standard Unix build tools. Data Display Debugger is
intended to be an advanced graphical front-end for many text-based debugger standard tools.

On the various Microsoft Windows platforms, command-line tools for development are seldom used. Accordingly, there are many
commercial and non-commercial solutions, however each has a different design commonly creating incompatibilities. Most major
compiler vendors for Windows still provide free copies of their command-line tools, including Microsoft (Visual C++, Platform SDK,
Microsoft .NET Framework SDK, nmake utility), Embarcadero Technologies (bcc32 compiler, make utility).

Additionally, the open-sourced GNU tools (gcc, gdb, GNU make) are available on many platforms, including Windows.

IDEs have always been popular on the Apple Macintosh's Mac OS, dating back to Macintosh Programmer's Workshop, Turbo
Pascal, THINK Pascal and THINK C environments in the mid-1980s. Currently Mac OS X programmers can choose between limited
IDEs, including native IDEs like Xcode, older IDEs like CodeWarrior, and open-source tools, such as Eclipse and Netbeans.
ActiveState Komodo is a proprietary IDE supported on the Mac OS.

Some open-source IDEs such as Code::blocks, Eclipse, Lazarus, KDevelop and Netbeans, which themselves are developed using a
cross-platform language (e.g., Free Pascal or Java), run on multiple platforms including Windows, Linux, and Mac OS.

Introduction to Website Designing & Development - 34 -


Comparison of Integrated Development Environments

The following tables list software packages that are nominal IDEs; standalone tools such as source code editors and GUI builders
are not included.

C/C++

Static GUI
Other GUI Integrated Code Class
IDE License Windows Linux Debugger Profiler Autocomplete code Based
platforms builder Toolchain Coverage browser
analysis Design
Anjuta GPL No Yes Yes Yes Unknown Yes Unknown Yes Unknown Yes Yes
C++Builder Proprietary Yes No Yes Yes Yes No No Yes Yes Yes Yes
Mac OS [3]
Code::Blocks GPL Yes Yes Yes Yes Yes Unknown Unknown Yes Unknown Yes Yes
X
Code Mac OS
Proprietary No Yes Yes No Yes No No Yes No No Yes
Crusader IDE X
Mac OS
CodeLite GPL Yes Yes Yes No Yes Unknown Unknown Yes Unknown Unknown Yes
X
Dev-C++ GPL Yes Yes Yes No Unknown Yes Unknown Yes Unknown Yes Yes
Eclipse CDT EPL Yes Yes JVM Yes Yes No Unknown Unknown Yes Unknown No Yes
Geany GPL Yes Yes No No No Unknown Unknown Yes Unknown Unknown Unknown
GNAT Mac OS
Programming GPL Yes Yes X, Yes Unknown Yes Yes No Yes Yes Unknown Yes
Studio Solaris
KDevelop GPL No Yes Yes Yes Yes Yes Unknown Yes Unknown Yes Yes
Yes Yes
LccWin32 Freeware/Proprietary Yes Yes Yes Yes Unknown Yes Yes Yes Unknown
(obsolete) (unstable)
Mac OS
MonoDevelop GPL Yes Yes Yes Yes No Unknown Unknown Unknown Unknown Yes Unknown
X
NetBeans ]
CDDL Yes Yes JVM Yes Yes Yes Yes Unknown Yes Unknown No Yes
C/C++ pack
PellesC Freeware Yes No Yes Yes Yes Unknown Unknown Yes Unknown Unknown Unknown
GPL / LGPL /
Qt Creator Yes Yes OS X Yes Yes Unknown Unknown Unknown Yes Unknown Yes Unknown
Proprietary
Sun Studio Freeware No Yes Solaris Yes Yes Yes Yes Yes Yes Yes No Yes
Rational
Software Proprietary Yes Yes JVM Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown
Architect
Turbo C++
Proprietary Yes No Yes Yes No No No Yes No Yes Yes
Explorer
Turbo C++
Proprietary Yes No Yes Yes Yes No No Yes No Yes Yes
Professional
Ultimate++
BSD Yes Yes Yes Yes Yes No No Yes No Yes Yes
TheIDE
Microsoft
Proprietary Yes No Yes Yes Yes Yes Yes Yes Yes Yes Yes
Visual Studio
Microsoft
Visual Studio Freeware Yes No Yes Yes Yes No No Yes No Yes Yes
Express
wxDev-C++ GPL Yes No Yes Yes Unknown Yes Unknown Yes Unknown Yes Unknown
Mac OS
Xcode Freeware No No Yes Yes Yes Yes Yes Yes* Yes Yes Yes
X

C#

IDE Developer Latest stable release Platform License


Microsoft Visual Studio Microsoft November 2007 Windows Proprietary
MonoDevelop Novell and the Mono community March 2009 Cross-platform GPL
SharpDevelop ICSharpCode Team February 2009 Windows LGPL

JAVA

GUI
IDE License JVM Platforms
builder
Oracle Workshop for
Proprietary Yes Yes
WebLogic
BlueJ GPL2+GNU linking exception Yes Windows, Mac OS X, Linux, Solaris No
Code Crusader IDE Proprietary No Mac OS X, Linux, Solaris No
DrJava Permissive Yes Windows, Mac OS X, Linux, Solaris No
Eclipse JDT EPL Yes Windows, Mac OS X, Linux, Solaris No
Geany GPL No Windows, Mac OS X, Linux, Solaris No
Greenfoot GPL Yes Windows, Mac OS X, Linux, Solaris No
IntelliJ IDEA Apache License 2.0 Yes Windows, Mac OS X, Linux Yes
JBuilder Proprietary Yes Windows, Mac OS X, Linux, Solaris Yes
JCreator Proprietary No Windows No
Proprietary OTN JDeveloper License Windows, Mac OS X, Linux, generic
JDeveloper Yes Yes
(freeware) JVM
jGRASP Proprietary (freeware) Yes Windows, Mac OS X, Linux No
KDevelop GPL No Linux, Solaris Unknown
Monodevelop GPL No Windows, Mac OS X, Linux, Solaris Yes
MyEclipse Proprietary Yes Windows, Mac OS X, Linux Yes
NetBeans CDDL, GPL2 Yes Windows, Mac OS X, Linux, Solaris Yes
Rational Application Windows, Mac OS X, Linux, Solaris,
Proprietary Yes Yes
Developer AIX
Servoy Proprietary Unknown Unknown
Xcode Proprietary (freeware) No Mac OS X No

Introduction to Website Designing & Development - 35 -


Comparison of Integrated Development Environments

JavaScript

Latest stable
IDE Developer Platform License
release
Aptana Studio Aptana, Inc. October 2007 Cross-platform GPL, proprietary
Code Crusader IDE New Planet Software November 2006 Mac OS, Linux Proprietary
IntelliJ IDEA JetBrains November 2008 Windows, Mac OS, Linux Proprietary
NetBeans Sun Microsystems June 2009 Cross-platform CDDL, GPL2
Oracle JDeveloper Oracle Corporation October 2008 Windows, Mac OS, Linux Proprietary - free
Servoy Servoy Developer Team July 2007 Cross-platform Copyright, Servoy License

PERL

Latest stable
IDE Developer Platform License
release
Code Crusader IDE New Planet Software 5.0 / November 2006 Mac OS X, Linux Proprietary
3.5.4-1
KDevelop KDevelop Team Cross-platform GPL
(2009-02-27)
Komodo ActiveState 5.2.1 / September, 2009 Cross-platform Proprietary
Padre Padre Team 0.43 / August, 2009 Cross-platform Perl

PHP

Latest stable
IDE Developer Platform License
release
Aptana Studio with PHP plugin Aptana, Inc. March 2009, 1.2.4 Cross-platform GPL, proprietary
Delphi for PHP Embarcadero Technologies 2.0 / April 14, 2008 Windows Proprietary
Code Crusader IDE New Planet Software November 2006 Mac OS X, Linux Proprietary
Eclipse PDT Eclipse Foundation / Zend 2.1 / June 26, 2009 Cross-platform EPL
Geany Team 0.17 Independent (w/ GTK2 support) GPL
HTML-Kit www.chami.com 292 Windows (all) Proprietary
3.5.5
KDevelop KDevelop Team Linux GPL
(11 August 2009)
Komodo ActiveState 5.1.4 Cross-platform Proprietary
NetBeans www.netbeans.org 6.7 / June 2009 Cross-platform on Netbeans CDDL
PHPEclipse www.phpeclipse.com 1.2.2 / September 2009 Cross-platform on Eclipse CPL
PHPEdit WaterProof SARL 2.6.1 / September 9, 2006 Windows Proprietary
Quanta Plus KDE Web Dev Team 3.5.8 / October 16, 2007 Linux GPL
Zend Studio Zend 6.1 / September 15, 2008 Cross-platform Proprietary
VS.Php jcx.software 2.7 / September 4, 2009 Windows Proprietary

PYTHON

Latest stable
IDE Developer Platform Toolkit License
release
Boa Constructor Team 0.6.1 / July 5, 2007 Independent wxPython GPL
Ed Leafe and Paul
Dabo 0.9.2 / Oct 1, 2009 Independent wxPython MIT License
McNett
PIDA Team 0.5.1 / July 28, 2007 Cross-platform pyGtk GPL
4.3.7.1 / September 5,
Eric Python IDE Detlev Offenbach Independent Qt GPL
2009
Geany Team 0.17 / May 2, 2009 Independent GTK2 GPL
Guido van Rossum et 2.6.1 / December 6,
IDLE Independent Tkinter Open source
al. 2008
Mozilla IDE:Proprietary; Edit:
Komodo ActiveState 4.4 / June 24, 2008 Cross-platform
platform MPL/GPL/LGPL
NetBeans IDE Sun Microsystems 6.7 Early Access Cross-platform - GPL
Eclipse (Cross-
PyDev fabioz 1.5.0 EPL
platform)
PyScripter Kiriakos Vlahos 1.9.9.7 / May 20, 2009 Windows MIT License
Spyder Pierre Raybaut September 05, 2009 Independent MIT License
Stani's Python 0.8.4h / February 14,
Stani Independent wxPython GPL
Editor 2008
0.6.3 / February 02,
wxGlade Alberto Griggio Independent wxPython MIT License
2008
Wing Wingware 3.1.8 / March 23, 2009 Linux/Windows/OS X unknown proprietary

Introduction to Website Designing & Development - 36 -


Comparison of Integrated Development Environments

RUBY

Latest stable
IDE Developer Platform License
release
Aptana Studio with RadRails plugin Aptana, Inc. November 2007, beta Cross-platform GPL, proprietary
IntelliJ IDEA with Ruby Plugin 2.0 JetBrains 8.0 / November, 2008 Cross-platform Proprietary
Komodo ActiveState 4.1.1 / June, 2007 Cross-platform Proprietary
NetBeans Sun Microsystems 6.7 / June, 2009 Cross-platform CDDL
RubyMine JetBrains 1.0 / April, 2009 Windows, Mac OS X, Linux Proprietary

SEE ALSO

For more details on integrated development environments Categories visit:


http://en.wikipedia.org/wiki/Category:Integrated_development_environments

For more details on Computer programming tools visit:


http://en.wikipedia.org/wiki/Category:Computer_programming_tools

Introduction to Website Designing & Development - 37 -


Web-Application / WebApp
- Development Guide -
From the good old days of the <BLINK> tag, to the XML-savvy Web services of today, applied Internet language has come a long
way. And nowhere is this more evident than in the field of Web application development.

As the Internet grew into a major player on the global economic front, so did the number of investors who were interested in its
development. So, you may wonder, how does the Internet continue to play a major role in communications, media and news? The
key words are: Web Application Projects.

Web applications are business strategies and policies implemented on the Web through the use of User, Business and Data
services. These tools are where the future lies. In this article, I'll take you through the essential phases in the life cycle of a Web
application project; explain what options you have, and help you formulate a plan for successful Web application endeavors of your
own. First, though, let's take a brief overview of Web applications.

WHO NEEDS WEB APPLICATIONS AND WHY?

There are many entities that require applications for the Web-one example would be Business-to-Business interaction. Many
companies in the world today demand to do business with each other over secure and private networks; this process is becoming
increasingly popular with a lot of overseas companies who outsource projects to each other. From the simple process of transferring
funds into a bank account, to deploying a large scale Web services network that updates pricing information globally, the adoption of
a Web applications infrastructure is vital for many businesses.

THE WEB APPLICATION MODEL

The Web application model, like many software development models, is constructed upon 3 tiers:

1. User Services,
The “User Service” tier creates a visual gateway for the consumer to interact with the application.
This can range from basic HTML and DHTML to complex COM components and Java applets.

2. Business Services and


The user services then grab business logic and procedures from the “Business Services”.
This tier can range from Web scripting in ASP/PHP/JSP to server side programming such as TCL, CORBA and PERL,
that allows the user to perform complex actions through a Web interface.

3. Data Services.
The final tier is the “Data Service” layer. Data services store, retrieve and update information at a high level. Databases,
file systems, and writeable media are all examples of Data storage and retrieval devices. For Web applications, however,
databases are most practical. Databases allow developers to store, retrieve, add to, and update categorical information in
a systematic and organized fashion.

This model breaks an application into a network of consumers and suppliers of services.

CHOOSING THE RIGHT PROJECT

Choosing the right types of projects to work on is an extremely important part of the Web application development plan.

Assessing your resources, technical skills, and publishing capabilities should be your first goal. Taking the 3 tiers into consideration,
devise a list of all available resources that can be categorically assigned to each tier.

The next consideration should be the cost. Do you have a budget with which to complete this project? How much will it cost you to
design, develop and deliver a complete project with a fair amount of success? These are questions that should be answered before
you sign any deals or contracts.

Let's look at an example. A company called ABC needs to develop a Web application that will display sales information created by
different sales agents. The data is updated daily through a completely automated process from all 3 service tiers. The client tells you
that this entire project must be done in ASP/SQL server and that you should host the application as well.

After assessing all your resources, you and your team come to a conclusion that the company is unable to do data backups on a
daily basis. After further discussion, you realize that this is a very important part of the setup for your client, and you should not risk
taking a chance with the project. It's very likely that you will be more prepared next time around, when a similar project lands on your
desk, so you decline the job and recommend someone else who has the capabilities to do it right now.

Introduction to Website Designing & Development - 38 -


Web-Application / WebApp
- Development Guide -

THE PHASES IN A WEB APPLICATION PROJECT

The Web application development process has 4 phases:

1. Envisioning the nature and direction of the project


2. Devising the plan
3. Development
4. Testing, support and stability

Let's look at each of these in more detail.

1. Envisioning the nature and direction of the project

In this phase, the management and developers assigned to the project come together and establish the goals that the
solution must achieve. This includes recognizing the limitations that are placed on the project, scheduling, and versioning
of the application. By the end of this phase, there should be clear documentation on what the application will achieve.

2. Devising the plan

In this phase, you and your team must determine the "how’s" of the application.

What scripting language is most appropriate, which features must be included, and how long will it take? These are some
of the questions that must be answered through this planning phase. The main tangents at this point are the project plan
and functional specification. The project plan determines a timeframe of events and tasks, while the functional
specification outlines in detail how the application will function and flow.

3. Development

Once the project plan and functional specification are ready, a baseline is set for the development work to begin. The
programmer/s or Web developer/s begins coding, testing and publishing data. This phase establishes the data variables,
entities and coding procedures that will be used throughout the remainder of the project. A milestone document is
prepared by the development team, which is then handed to management for review.

4. Testing, support and stability

The stability phase of the application project mainly focuses on testing and the removal of bugs, discrepancies and
network issues that may otherwise cause the application to fail. It is here that policies and procedures are established for a
successful support system.

KNOWING YOUR OPTIONS AND USING THEM WISELY

Ok, now that you have an understanding of the architecture and procedures behind Web application development, let's look at what
technical options you'll need to consider for the development process itself.

• Windows Web Servers

Microsoft has built a loyal customer base on one important factor - their easy-to-use software. Windows NT/2000/XP Web
servers are very fast and easy to administer. The fact that the operating system is a Windows shell means that
administrators and authors can easily allow the Web server to interact with other software and hardware applications to
transmit and receive data over the Internet.

Popular server side scripting languages used with Windows servers are ASP/ASP. net, Java Server Pages, and PHP.

• UNIX/Linux Web Servers

UNIX has long been known for its reliability. It is a powerful and robust Web server and operating system. UNIX is the
server of choice for many large-scale Websites that need content management systems or receive an extremely high
volume of traffic.

Popular server side scripting languages for UNIX are Java Server Pages, PERL, PHP, and CORBA

Every scripting language has its pros and cons. As I'm not writing a book here, I'll use the ASP model as my language of
illustration. When working with Windows servers, there are several important parameters that the developer needs to
throw into the equation, including security, scalability, and speed and application design. So below I'm going to help you
formulate a successful plan to accomplish all kinds of Web projects.

Introduction to Website Designing & Development - 39 -


Web-Application / WebApp
- Development Guide -

PLANNING FOR A SUCCESSFUL WEB DEVELOPMENT PROJECT

In order to drastically minimize the risk of project failure, I've always approached my application development projects in the
following sequence.

1. Identify business logic and entities

Start by gathering information on everything you have. If you are going to be working with databases, begin by
enumerating how many entities will be used in the business logic. For example, if your program implements sales data, a
sales ticket would be an entity.

Once you've identified all your entities, establish a clear guideline for their relationships. This can be done via
presentations, flowcharts or even reports.

2. Create a functional specification and project plan

This part, in my opinion, is the most important part of the project. Functional specifications (or functional specs) are a map,
or blueprint for how you want a particular Web application to look and work. The spec details what the finished product will
do, user interaction, and its look and feel.

An advantage of writing a functional spec is that it streamlines the development process. It takes discrepancies and
guesswork out of the programming process, because the level of detail that goes into the plan makes it possible to
minimize the misunderstanding that's usually associated with project mishaps. See examples of well written functional
specs at RayComm.com.

Once the functional spec is finished, a project plan must be devised. A project plan is a timeline of tasks and events that
will take place during the project. The project or program manager is normally the person who creates a project plan, and
their primary focus is to detail task notes while being able to accommodate scheduling and resource information. You can
download a sample Excel file for a project plan at Method123.com

3. Bring the application model into play

As discussed earlier, the application model consists of 3 tiers - The User, Business and Data service tiers, each of which
serves a substantial purpose.

Practically speaking, it's always best to start with the data tier, because you've already identified your entities and
understand their relationships. The data tier can be an SQL server database, a text file, or even the powerful and robust
Oracle. Create tables, relationships, jobs, and procedures depending on what platform you have chosen. If the data is a
warehouse (i.e. the data already exists and does not depend on real time interaction), then make sure that new and
additional data can be added securely and in a scalable fashion.

A quick tip: using views [3] in SQL server/Oracle can improve dramatically the productivity and performance of your
application. They increase speed because they are "stored queries" that don't have a physical existence.

The Business services tier, in my opinion, is the heart of the application. It involves the implementation of business logic
into the scripting or programming language.

At this stage, make sure you've already set up your environment for testing and debugging. Always test on at least 2
instances in your application, after all, what may work perfectly for you, may not do so well on other platforms or
machines. ASP, XML, PHP, JSP and CGI are some examples of server side scripting languages used at the business
service level. Whichever language you choose, make sure that it's capable of handling all the business logic presented in
the functional specification.

The last is the user tier, which is absolutely vital for the interactive and strategic elements in the application. It provides the
user with a visual gateway to the business service by placing images, icons, graphics and layout elements in strategic
areas of interest, most commonly, based on management research. If you'll be developing the user tier yourself, be sure to
have studied your competition. The last thing you need is for your application to look exactly the same as someone else's.

4. Develop a support scheme

Being able to support and stabilize your application is very important. Define a procedure call for cases of failure, mishaps
or even downtime. Give your customers the ability to contact you in the case of an emergency relating to the program.

A good example of a support scheme is a ticket tracking system. This system allows users to file cases pertaining to a
support request and the support team, and then makes the case track able. This means that the request is identifiable by
a unique code or number. Although ticket-tracking systems are normally used by hosting companies or large scale ASP's
(Application Service Providers), they still serve a valuable purpose in helping keep the application stable.

Introduction to Website Designing & Development - 40 -


Web-Application / WebApp
- Development Guide -

OVER TO YOU

So there you have it - a framework from which you can begin to plan and develop your own successful Web applications.

Web applications will be around for a long time to come. As we move further on into the future, they will become less manual and
more automated. This will eventually lead to new kinds of research, but for now, we can be happy with the fact that it is this that
drives the Web.

• http://www.raycomm.com/techwhirl/archives/0106/techwhirl-0106-00425.html
• http://www.method123.com/documents/p_plan.xls
• http://asia.cnet.com/builder/architect/db/0,39009328,39072342,00.htm

Introduction to Website Designing & Development - 41 -


Before You Code:
Part A – Reviewing Hosting Plans Features
• Hosting-Server
o Disk-Space
o Monthly Bandwidth
o Customer Support
ƒ 24/7 E-Mail, Toll-Free Phone
ƒ Online Knowledgebase
ƒ Video Tutorials
o Web-Based Control Panel
ƒ Web-Based Admin
ƒ Multilingual
ƒ File Manager
ƒ Website Traffic Stats
ƒ Account / Billing Management
ƒ Domain Management
ƒ E-Mail Account Management
ƒ Log File Access
ƒ Multiple Ftp Accounts
o Online Site-Builder
o Multi-Website Hosting
o Free Domain Names
o Clustered Hosting
o Setup
o Guarantee
• Promotion
o (Advertisement/Marketing)
• Email Feature
o E-Mail Accounts
o Space Per E-Mail Account
o POP3 / SMTP Support
o Web-Mail
o E-Mail Forwarding
o E-Mail Catch-All
o Spam Filtering
o Virus Scanning
o Custom MX Records
• Domain Names
o Domain Pointers
o WHOIS Privacy
o Full DNS Management
o Domain Forwarding
o Sub Domains / A-Records
o Forward To Filenames
o Free Registrar Transfers
• Databases
o MYSQL 5+ Databases
o PHPMYADMIN
• Linux Features
o PHP 4 / PHP 5
o PERL (CGI-BIN)
o Server Side Includes (SSI)
o Custom Error Pages
o MOD-Rewrite
o Secure Shell (SSH)
o Ruby on Rails
o Python
o CRON Job Editor
• Windows Features
o Microsoft FrontPage Extensions
o ASP (CLASSIC)
o ASP.NET Framework
o Microsoft SQL (MS-SQL)
o Microsoft Access
• Security
o Password Protected Folders
o .HTACCESS
o Third-Party SSL Certificates
o Shared SSL Certificates
o Secure FTP Access
• Applications On-Demand
o Photo Gallery
o Hit Counters
o Form Mail
o Discussion Forum
o Blogging
o E-Commerce

Introduction to Website Designing & Development - 42 -


Before You Code:
Part A – Reviewing Hosting Plans Features

• Hosting-Server

o Disk-Space
This is the amount of file storage you'll get with a hosting plan for your website. More disk space means more
room to store large multimedia, audio, video and flash files.

o Monthly Bandwidth
Data Transfer (Bandwidth) is the monthly volume of files that can be transferred to your visitors. The more
visitors you have the more bandwidth will be used. Make sure you have plenty so you won't have to worry when
your website gets busy.

o Customer Support

ƒ 24/7 E-Mail, Toll-Free Phone


Get all the answers free of charge. Available 24/7, help you with unparalleled speed via either phone
(Toll-free) or e-mail.

ƒ Online Knowledgebase
Instant access to searchable document Knowledgebase; Step-by-step instructions on every
imaginable hosting topic help you through tricky subjects (Inclusive of user-friendly Getting Started
Guides).

ƒ Video Tutorials
Watch as experts turn the complicated to simple with these easy-to-understand movie files. You CAN
do it!

o Web-Based Control Panel

ƒ Web-Based Admin
Manage your website. Quickly access account statistics, WebStats, billing histories, profiles, log files
and more; manage website files, domains and FTP accounts.

ƒ Multilingual
Set your default language to English, Hindi, or Other.

ƒ Web-Based File Manager


Web-based file manager allows you to create, edit and delete files on-the-fly anywhere around the
world. Quick updates to your website online.

ƒ Website Traffic Stats


Website Traffic Keep your finger on the pulse of your website with WebStats. Monitor how many
visitors you're getting and when your site is busiest. Check where they're coming from. And see which
websites and search engines are sending traffic your way.

ƒ Account / Billing Management


Save time by accessing your account billing information in one convenient place.

ƒ Domain Management
Quickly configure multiple domains, sub-domains, domain forwarding, A-records, name servers,
locking / unlocking, registrar transfers and more. Simply the most complete, easy to use domain name
management tool around.

ƒ E-Mail Account Management


Easily add and configure e-mail accounts. Set up forwarding, check your settings. E-mail
management has never been so easy.

ƒ Log File Access


Every time someone visits your website, hosting servers automatically track and store, in a log file,
information about how that person is using your site. You can then use your log files with third-party
website traffic analytics tools.

ƒ Multiple Ftp Accounts


You can give other people access to specified directories within your web hosting account. This is
great for sharing / accepting files, and for giving different branches of your organization their own
websites.

o Online Site-Builder
Easily create your own website. With Online Site-Builder, anyone - regardless of experience - can build a
professional website for small businesses, organizations, portfolios, or even an online store. Select a style from
an included library of professional designs and personalize it with your own text, photos, videos and more.
Publish your website with the click of a button.

o Multi-Website Hosting
Host multiple websites, each at their own domain name, including separate e-mail accounts - with a single
account. Great value for small businesses and individuals looking for convenience and savings

Introduction to Website Designing & Development - 43 -


Before You Code:
Part A – Reviewing Hosting Plans Features

o Free Domain Names


Domain names are FREE for as long as you renew your hosting plan. Give your website a unique address and
create multiple pointers for increased traffic. Or use your domains for multiple websites.

o Clustered Hosting
Your website is always up, always fast - no matter how busy it gets. Separate server grids should task to Linux
and Windows HTTP processing, database processing, file storage and e-mail processing. Load balancers
seamlessly direct requests to the appropriate cluster. As traffic increases, more and more servers should
automatically added to each server cluster. Your website should effortlessly handle traffic spikes - even when it's
featured on busy sites.

o Setup
Instant Setup Unlike many other hosting companies, your account set-up should be virtually instantaneous - no
waiting hours for your account to be created.

o Guarantee
All our hosting plans should be backed by an unconditional 30-Day Money-back Guarantee. Whatever the
reason, you shall be allowed to cancel your account within 30 days of new account activation and receive a
refund on your hosting charge.

• Promotion

o (Advertisement/Marketing)
Get targeted traffic to your website instantly. Partner with Google or Ad Company to give you valuable
thousands of people searching for keywords relevant to your website.

• Email Feature

o E-Mail Accounts
E-mail Give all of your employees or family members their own e-mail address, and have lots of spares for you.
You can use any POP3 e-mail client (Outlook, Thunderbird etc.) or Web-Mail with your e-mail accounts.

o Space Per E-Mail Account


Varies as per hosting plan

o POP3 / SMTP Support


Varies as per hosting plan

o Web-Mail
Check your messages from any Internet connection with hosting server Web-Mail. Plus, get integrated online
email features designed to let you use your time more efficiently.

o E-Mail Forwarding
Create e-mail accounts that automatically forward mail to another account. For example, forward e-
mail@yourdomain.com to a Hotmail address, or create a virtual address to avoid spam.

o E-Mail Catch-All
Use this feature to ensure that e-mail gets through to you even if the sender has misspelled your address.

o Spam Filtering
Mail server should be able to block unwanted junk mail so it never reaches your inbox. Auto-learning and user
configurable, Spam Filtering is great for keeping your inbox clean.

o Virus Scanning
Mail server should virus scans all e-mail before it even hits your in-box, lowering risk of infection.

o Custom MX Records
Mail sever should be compatible with all mail filtering services.

• Domain Names

o Domain Pointers
Increase traffic to your website by adding pointers - a second domain name that points to any website you wish.
For example, if your business website is www.indiatea.com, you could set up a domain pointer called
www.teawala.com

o WHOIS Privacy
Protect your identity from prying eyes by keeping your personal information out of the WHOIS database.

o Full DNS Management


Quickly configure multiple domains, sub-domains, domain forwarding, A-records, name servers, locking /
unlocking, registrar transfers and more. Simply the most complete, easy-to-use domain name management tool
around.

Introduction to Website Designing & Development - 44 -


Before You Code:
Part A – Reviewing Hosting Plans Features

o Domain Forwarding
Point your domain to any page or file on the Internet.

o Sub Domains / A-Records


Sub-sect your domain for naming / organization purposes; for example, in the domain name
"products.company.com", 'products' is a sub-domain of the parent domain 'company.com.' A-Record is used to
point a sub-domain name to an external server’s IP address.

o Forward To Filenames
Forward your domain name to any file you specify.

o Free Registrar Transfers


It's free and easy to take advantage of the low domain prices of other web hosting companies. No service fees
should be charged for moving domains from your old registrar to new hosting company. Domain specialists can
assist you in the transfer.

• Databases

o MYSQL 5+ Databases
Ranked No. 1 in the world for database solutions, MySQL is perfect for storing and retrieving information for
your website. With your hosting server you should get an easy-to-use management tool for adding forums, e-
commerce, CMS systems and polls.

o PHPMYADMIN
PhpMyAdmin handles the administration of MySQL. It can create and drop databases, create/drop/alter tables,
and delete/edit/add fields, execute any SQL statement and manage keys on fields.

• Linux Features

o PHP 4 / PHP 5
PHP is a scripting language that lets you create interactive web pages that can communicate with MySQL. With
your hosting-server you should have full control over which version of PHP you are running (4 or 5) through the
web Control Panel.

o PERL (CGI-BIN)
A full Perl / CGI-BIN lets you program and install scripts including message boards, forums, guestbook’s,
surveys, search engines, clocks, countdowns, games and more.

o Server Side Includes (SSI)


Easily make your web pages dynamic without knowing how to program code. SSI lets you embed a number of
special 'commands' into the HTML. When the server reads an SSI document, it looks for these commands and
performs the necessary action.

o Custom Error Pages


When someone is trying to access a missing or moved page on your site the browser will display error pages.
You can create a custom error page where, as an example, you could have a message and a link back to your
homepage.

o MOD-Rewrite
Many applications, including WordPress, utilize ModRewrite to ensure web addresses are easy to read and
search engine friendly.
With Mod-Rewrite you can make:
http://www.yourdomain.com/index.php?id=products
Look like
http://www.yourdomain.com/products/bikes

o Secure Shell (SSH)


Great for Ruby on Rails or advanced web development, SSH allows you to connect to your web space using a
standard UNIX shell, plus download and unzip scripts directly on the server. Web-Server should include SSH in
all standard UNIX command line tools.

o Ruby on Rails
Web Server should give you a complete Rails development environment via secure shell. Combined with their
robust clustered hosting platform you can use Web-Server and Ruby on Rails to power any enterprise-class
website.

o Python
Python is an interactive object oriented programming language. Easy to read code, quick debugging, and a true
object-oriented interpreter make Python an excellent choice for web-based applications and utilities.

o CRON Job Editor


Automate tasks and scripts on the server. For example, you could add a CRON job that automatically copies a
MySQL database to a separate location on your site as a backup.

Introduction to Website Designing & Development - 45 -


Before You Code:
Part A – Reviewing Hosting Plans Features

• Windows Features

o Microsoft FrontPage Extensions


FrontPage is a popular web design utility that allows you to create and maintain websites without the need to
learn HTML or use an FTP program. FrontPage 2002 Server Extension features include editing your website
directly from the server, locking files so that only one author can modify a page at a time and automatically
updating hyperlinks when you rename files.

o ASP (CLASSIC)
ASP (Classic) is the original Microsoft scripting language

o ASP.NET Framework
Web-Server should support ASP.NET Framework supports C#, J# and VBS scripts under ASP.NET 1.x or 2.x.

o Microsoft SQL (MS-SQL)


MS-SQL Create and manage Microsoft SQL databases using the web-server control panel and the preinstalled
SQL Webmin 2.0 application.

o Microsoft Access
May be supported, as per hosting plan

• Security

o Password Protected Folders


Password Protected Folders are great for subscription-based content, limiting access and hosting secure files,
you can password protect any directory within your website. Easily add and manage multiple usernames and
passwords per directory.

o .HTACCESS
Create Apache configuration files to restrict your website to certain IP addresses, domains, or users, and enable
rewrite rules.

o Third-Party SSL Certificates


Secure your website and conduct safe e-commerce over the Internet with an SSL Certificate. Your customers
will see the trusted 'lock' icon in their browsers and know that your site is secured. SSL Certificates range in
features and pricing - from $79.95 - $179.95 per year.

o Shared SSL Certificates


Ensure peace of mind for you and your customers. SSL encrypts the data that is sent between the browser and
the server. Keeping it secure, your hosting-company hosting plan should include a shared SSL address FREE!

o Secure FTP Access


Upload your files over an encrypted connection to ensure that your files and password stay secure. This is
useful if you need to use an un-trusted network (public library, hotel etc.) to make changes to your website.

• Applications On-Demand

o Photo Gallery
Show your images to the world on your website with online Picture software.

o Hit Counters
Create unlimited hit counters and place them anywhere on your website. Choose from many different designs.
These counters are great for letting you and your visitors know how popular your site is.

o Form Mail
Set up a form within your HTML page and have the submitted information e-mailed to you automatically.
FormMail is great for contact / feedback forms, online quotes and guestbook’s.

o Discussion Forum
Get an instant website with this web-based content management tool. E.g. Word-Press

o Blogging
Connect with customers, suppliers, friends and family. Build and edit a professional website or blog instantly.
Your hosting plan should include industry-leading Blogging software e.g. Word-Press. Get articles and pictures
onto your website in seconds.

o E-Commerce
Sell your products online with a secure shopping cart that's simple to set up and use. Build, edit, and maintain
your professional e-store without the need of any programming skills. Accept credit cards and ship products with
integrated tools.

Introduction to Website Designing & Development - 46 -


Before You Code:
Part B – Reviewing Hosting Plans Features
Does your web host offer all the features you need? We puts six developer-friendly web hosts through their paces. Which reigns
supreme?

It’d be great if you and your clients always had exactly the right hardware on hand, with the right version of your favorite environment
installed, and the horsepower to deal with running all of your apps. Of course, out here in the real world, that’s true only some of the
time. That’s why every developer ought to have some options for managed hosting, but which one can you rely on to support your
applications? In this article, we’ll examine some of the best developer-friendly web hosts for your next project.

THE CANDIDATES

We’ve compared six hosting providers known to be relatively developer-friendly. In no particular order, we examined plans from A
Small Orange, DreamHost, Hosting Rails, Media Temple, RailsPlayground, and WebFaction.

We’ve looked for all the usual suspects when evaluating hosts: disk space, monthly cost, contract term, and so on. While choosing
hosts for the study, we tried to stick to ones that suit developers: low resource limits, poor or missing support for simplified
administration panels, and limited control were some of the attributes that led us to exclude a plan from the study.

Just about all the plans in the final lineup had sufficiently generous resource limits so that you’d never need to worry about them;
plenty of databases, users, domains, and mailboxes, with the only constraints being disk space and bandwidth. At this end of the
scale, CPU/RAM usage is more of an issue, with most of these hosts having some sort of policy for such usage.

Another major factor was language support: we expected all of these hosts to support PHP, Python, and Ruby at the least, with Perl
support a nice to have. For deployment of non-PHP applications, FastCGI support was an absolute minimum, with mod_python and
Passenger (mod_rails) desirable.

Finally, we’ve tried a couple of real-world tests by actually running software on these web hosts. We started with the pre-install check
of Joomla, which verifies some sensible values for PHP configuration directives, followed by installing some basic PHP and Django
applications, using whatever installation methods the host provides.

We’ve laid out each plan and feature in a handy table, but of course a good comparison must go deeper than that—let's discuss
each offering in more detail.

Hosting Server Name:


A SMALL ORANGE: SMALL

We chose to look into A Small Orange’s Small plan—though even the Tiny plan would serve quite well for a small app, the Small
plan is a better comparison to the other plans in our lineup.

At A Small Orange, the control panel on offer is cPanel 11, which at first glance has a multitude of options for almost every
conceivable task—emails set-up, MySQL administration, and more. However, the use of a generic control panel solution makes
some issues unclear: for example, to enable shell access with SSH at A Small Orange, one must request it when signing up or file a
support request through an entirely separate system. However, the cPanel system still includes an area for setting up SSH access.

MySQL was an interesting issue here, and indeed on all the cPanel hosts we reviewed—the DB server was always running on the
same machine as the web server. The two other cPanel hosts in this roundup also had this issue, which may only be a minor
problem for testing out software, but could impact your ability to scale up a deployed application without switching servers.

One area where A Small Orange shone was PHP deployment; there were no issues with the Joomla pre-install check, bar the
display_errors directive (ON instead of Joomla’s recommended OFF). This was quite common among the hosts surveyed, but an
ON value for display_errors is only a small issue as long as it’s disabled on a per-application basis.

PHP performance seems excellent. To test PHP performance, we used WordPress to convert an XML file containing over 500 posts
with comments. A Small Orange’s server made quick work of the XML import, and had all posts imported within a minute or two. We
tried a similar test on Media Temple, and the server was still going after ten minutes!

While there is no official support for Django, instructions found on A Small Orange’s wiki were sufficiently detailed to get a FastCGI
deployment up and running. However, the FastCGI approach was quite lengthy and left little room for optimization and tuning;
serving static files over a separate domain could have been more straightforward than it was, and the cPanel system offered little
help.

Introduction to Website Designing & Development - 47 -


Before You Code:
Part B – Reviewing Hosting Plans Features

Hosting Server Name:


DREAMHOST

DreamHost offers just one plan, the price of which varies depending on the length of time you choose to prepay, and which added
extras you purchase.

DreamHost operates on a larger user base than most of the hosts in this study, and has developed a series of in-house systems
based around a custom control panel. In the panel, you’ll find a set of quick access options for the usual suspects: management of
databases, domains, users, and so on, as well as fine-grained control over mail, a handful of reporting systems, and utilities for
everything from crontabs to mailing lists to Subversion repositories. A wide range of one-click installation options is also available,
including the latest version of Joomla.

The Joomla pre-install check worked just fine, with only one little issue—display_errors ON, again. However, it’s possible to use
one’s own PHP configuration on a DreamHost service; see the DreamHost wiki for details. The CakePHP deployment worked as
expected out of the box, without a hitch.

DreamHost has no official support for Django, so the general solution is to run Django under FastCGI. We deployed a standard
Django blog application on a DreamHost service, following the lengthy instructions on the Django wiki page, without any major
setbacks. Serving media files over a separate domain was relatively straightforward, thanks to DreamHost’s flexible domain controls.

For Rails, DreamHost has a very nice Phusion Passenger (mod_rails) setup that you can configure yourself without assistance from
a system administrator. You can enable it on a per-domain basis, and it’s an excellent option for deploying Rails apps.

Hosting Server Name:


HOSTINGRAILS: BEGINNER

We test-drove HostingRails’ Beginner plan, with an extremely tiny price of just $43.08 per year.

HostingRails advertises itself as a Rails-oriented provider, but in reality it’s a perfectly good all-rounder with a fairly straightforward
offering. Their servers run cPanel 10 and are loaded with more than enough Apache modules, Ruby gems, and PHP extensions.
Server management is a simple affair; your shell details are provided in the welcome email, and all your domains work more or less
out of the box.

Running the Joomla pre-install check resulted in the same error as RailsPlayground—the web server was unable to write to its
configuration file without it being world-readable. Similarly, CakePHP’s tmp and tmp/cache folders had to be made world-writable
before Cake could write out its databases, caches, and other temporary data. Joomla also noted that display_errors was ON.
Overall, however, the PHP experience was perfectly satisfactory, with no major issues. URL rewriting also worked out of the box.

Our Django test was a different experience, however. The wiki guide first directed us to install our own copy of Python in our home
directory, suggesting the installed version of Python (2.4.3 on our server) was insufficient for the latest version of Django. After
compiling Python, we then had to install the Python MySQL DB module to establish MySQL connections from Django’s database
adaptor. A few quick changes pointed the system at our custom Python install; we then had to duplicate the django-admin.py file and
point it at our custom Python as well. Finally, we set up the dynamic FastCGI configuration.

While Django deployment could have been a lot better, HostingRails’ mod_rails functionality is well ahead of the pack, as we
expected! Deployment instructions for Rails at HostingRails’ wiki were extremely straightforward and relatively quick, although
manual intervention from a support technician is required for part of it.

Hosting Server Name:


MEDIA TEMPLE: (GS) GRID SERVICE

The (gs) Grid Service offering from Media Temple was a standout in this study, and in more than just the price tag—although at
$240 per year, it isn’t exactly ideal for a spare test bed. Media Temple’s server cluster infrastructure is marketed as an extremely
reliable system for hosting sites that may experience an unexpected burst of traffic; that is, experiencing short periods of a
considerably above-average load, such as being featured on Slashdot or Digg.

Media Temple’s Django and Rails deployment solution, called Containers, were a highlight in this review. Starting at $20 per month,
a container is essentially a mini virtual private server for your Django, Rails, or MySQL setup. A Django Container, for example,
dedicates a certain amount of RAM for your Django applications, and provides easy management of your Django version and
installed eggs for each container. (A container is essentially a lighttpd server in front of FastCGI threads, all preconfigured.)

The Media Temple control panel is extremely well designed and offers a reasonable level of control over systems. In particular, the
panel offers considerable documentation, and even comes with a guide outlining usernames, access domains, and other service
details. While the panel itself lacks the same level of control as other reviewed offerings, it’s extremely usable for deployment. At the
time of writing only Drupal, WordPress, and Zen Cart were available as one-click install options.

Worthy of mention is the Media Temple Knowledge Base, an amazing resource with unmatched depth among web host guides. It
even includes video tutorials suitable for end users, such as email program configuration.

The Joomla install result was identical to that on DreamHost; all required settings met, and once again we found that display_errors
were set to ON. Our CakePHP deployment went off without a hitch, but it’s the Django/Rails Container system that makes this
offering worth every dollar: we had our sample Django application open for business within minutes, as opposed to the better part of
an hour for A Small Orange and DreamHost. A single container managed multiple applications just fine, and application-level
controls were extremely handy for deployment.

Introduction to Website Designing & Development - 48 -


Before You Code:
Part B – Reviewing Hosting Plans Features

Hosting Server Name:


RAILSPLAYGROUND

RailsPlayground offers a fairly standard range of managed, VPS, and dedicated hosting services—we chose Developer Hosting
Level One. The servers are relatively standardized, running cPanel 10, and the company is well-known in Rails and Django circles
for offering a less painful FastCGI deployment than usual. Interestingly, RailsPlayground offers a DIY lighttpd deployment solution
with FastCGI for a static process, for which the support group allocates a dedicated port.

The cPanel setup was near identical to A Small Orange’s, and will make sense to anyone with experience on a previous version of
cPanel; for the rest of us, a collection of introductory videos was helpfully offered at first login. Interestingly, the cPanel offers a
section for installing PEAR packages, an option that may be useful for working with applications that require them, especially open
source projects.

While testing Joomla and CakePHP deployment, we had to manually make folders world-writable for the web server; without this,
Joomla was unable to update its own configuration file, and similarly CakePHP complained about insufficient control over its
temporary folder. Luckily, SSH worked out of the box with the access details in one of the five emails you’ll receive from
RailsPlayground when starting your account. A couple of chmods later and we were ready to roll. Once again, Joomla found that the
display_errors setting was ON, but otherwise Joomla and CakePHP were functioning fine, including URL rewriting for Cake.

Django deployment was a breeze on RailsPlayground—less so than Media Temple’s approach, but relatively straightforward
nonetheless. Serving files over a separate domain was no issue, and the server we worked with had the latest stable version of
Django installed, with django-admin.py ready to go. The RailsPlayground wiki has a helpful guide to Django and Rails deployment
explaining each step.

Hosting Server Name:


WEBFACTION: SHARED 1 PLAN

Last and perhaps not least—we tested WebFaction's Shared 1 plan, an offering which is possibly the most unique in this roundup.

WebFaction, formerly known as python-hosting.com, specializes in web application deployment, with stunning results. The control
panel is a fairly straightforward affair, a custom system that gets the job done—well, until we look at domains and applications.
WebFaction has a unique approach to one-click installers, creating applications under a ~/webapps folder, with everything from Rails
to Drupal to Django available. Once an application is created, a web site can then be configured to mount one or more applications
at particular URLs.

We started out creating a “Static/CGI/PHP” site, and had the Joomla pre-install check ready within a minute. The only warning from
the installer was our old friend, display_errors—ON instead of OFF—with everything else ready to go. Our CakePHP install revealed
some unexpected issues, however: owing to WebFaction’s managed URL rewriting for each application, we were unable to have
mod_rewrite use Cake’s own pretty URLs. Everything else, however, was working fine.

The control panel really shone in our Django deployment, however; the process was so straightforward, there was no need to login
over SSH to get the first project template up and running. A wide variety of Django versions (at the time of writing, 0.96.3, 1.0, 1.0.2,
and trunk) were all available and recommended, with a handful of prior releases marked “INSECURE.” WebFaction even offers a
choice between mod_python and mod_wsgi; we tried the WSGI approach for this review. After creating a Django trunk application,
we could load up the URL immediately and were ready to go.

The deployment was just about on par with Media Temple, and at less than $10 per month (depending on how much you pre-pay),
this is definitely an excellent option for Django development. If you’re interested in frameworks such as CherryPy, Pylons,
Turbogears, or anything else that you might like to run under mod_python, have a look at the WebFaction plans; official support for
all of these is included out of the box.

Introduction to Website Designing & Development - 49 -


Before You Code:
Part B – Reviewing Hosting Plans Features

THE VERDICT

We’ve explored several excellent options for managed hosting in this review, and which one you choose is up to you and what you
need. Here are our picks for common scenarios.

• No-hassle Rails/Django Deployment

For deploying a Rails or Django application with as little fuss as possible, it’s hard to go past Media Temple. Their Grid
Server platform could be more flexible, but the Container system makes pushing your application live a breeze, while still
being compatible with your existing version control.

Runner up: WebFaction’s Django and Rails deployment system is incredible, with a little more flexibility than the Media
Temple option, and at a more agreeable price point. Definitely worth a look.

• PHP Deployment Server

A Small Orange wins this hands down. The cPanel 11 administration panel has more than enough options to keep PHP
under control, and the servers are sufficiently powerful for whatever you plan to throw at them.

Runner up: RailsPlayground: just the right amount of power to get your applications up and running, and support for
enough non-PHP environments to explore. Just watch out for those file permissions!

• General Web Development Test Bed

We’ll have to go with WebFaction for this one, with a multitude of options for trying out PHP, Django, and Rails
applications with no fuss. A purpose-built architecture gives you the flexibility to try out applications to your heart’s content.

Runner up: A Small Orange. With plenty of flexibility, relatively up-to-date libraries and applications, and a stable
environment, you’ll be able to avoid deployment hassles.

Introduction to Website Designing & Development - 50 -


1
Before You Code:
Web Site Basics: Stuff Beginners Need To Know
The idea that “building a web site is easy” has existed since the Web was invented, thanks to applications like Microsoft FrontPage
and Adobe Dreamweaver.

However, as many inexperienced web designers soon discover, creating one-page homage to your canary Boris (May his soul rest
in peace) and building a professional web site are two very different tasks. To build a web site that communicates effectively with its
audience, can be updated by the client, and looks visually pleasing requires a whole range of skills—some of which lie beyond the
comfort zone of most designers, especially if they have come from a print background.

For example, determining what technology is the best fit, what Content Management System to use, where to host the site, how to
ensure cross-browser compatibility and how to ensure the site ranks well in search engines are all important. For the uninitiated,
these hurdles can become very overwhelming, very quickly.

So what works, and what doesn’t? Well, as you might expect, it depends. As with any project, important decisions are shaped by the
goals of the project, the budget, the timeframe, the experience of the team members, and the personal preferences of those
involved.

While it’s true that many technology decisions are often best left to the geeks who speak in 1s and 0s, there are a few universal
truths that apply to all web projects. It’s crucial that any designer tackling a web project understands these fundamentals, regardless
of whether they cut code, push pixels, or dabble in both.

THE CLIENT-SIDE CONTEST

Many web designers have already decided before they embark on a project that it will be built in Flash (or Microsoft’s rich media
offering, Silverlight) without even considering the web standards trio: HTML, CSS, and JavaScript. As real designers they want to
avoid limiting their creativity by browser compatibility woes and a restrictive set of user interface options, so they choose Flash,
believing that they’re making the right decision.

Its understandable why we designers love Flash so much—why wouldn’t we? It’s an enormously powerful medium with which we
can create eye candy and push the boundaries of interactivity and multimedia. Flash also has an enormous install base, so it
conveniently sidesteps the browser-compatibility woes that have plagued CSS-based sites for years. Finally, Flash has that
unmistakable “wow” factor that is useful for blowing away clients.

Unfortunately, Flash has a few dirty little secrets. Actually, they’re not little—take a look at the following downsides before you decide
to build your next site in Flash:

• Flash sites perform poorly in search engines compared with sites created with HTML. While Google has made advances
over the years in indexing content, Google’s engineers still have a long way to go before the bots that crawl the Web can
understand a Flash file to the degree that can be defined using simple HTML tags.

• Most Flash sites are less accessible to disabled users than their HTML-based counterparts. Sure, there is some basic
keyboard navigation features built into every Flash file, but in many browsers, switching between the Flash object and its
HTML container is problematic, as is navigating Flash objects with input devices other than a mouse or keyboard.

• Flash sites are often less usable than an HTML/CSS equivalent, with key features of the web browser experience going
out the window when a site is built in Flash. These include highlighting text for copy and paste, clicking the Back button to
go back a page, increasing the font size, and allowing for users to open links in new windows. This is regardless of how
beautiful and intuitive the interface is.

• Flash sites are un-viewable by most mobile users. Even the iPhone—a phenomenally successful product for Apple in
Australia and arguably the most advanced handheld device on the market—is unable to view Flash files.

Of course, there are many circumstances when it does make sense to use Flash: animated mastheads, embedded movies, and
interactive interfaces that break away from the document-based model of the Web are all good candidates. However, rarely do those
circumstances involve building a site purely in Flash.

As sites like cssZenGarden.com have proven, a site need not be created with Flash in order to look pretty. Many web designers
resort to Flash because it’s what they know, and the client suffers as a result. Meanwhile, CSS support has improved considerably in
today’s web browsers, and there are now a huge range of excellent JavaScript libraries which make writing JavaScript a much
simpler task than it used to be. There’s no reason to resort to Flash when good old HTML and its companion technologies can do an
equally fine job and avoid the pitfalls listed above.

THE SERVER-SIDE SHOWDOWN

While it’s common that a designer may possess some skills in HTML, CSS, and JavaScript, programming in a server-side language
is usually reserved for the IT nerds of this world (aside from those rare and annoying all-rounders who excel at both left- and right-
brain activities).

Yet, more and more roles demand that designers be comfortable with both graphics and writing code—even if it’s just to update the
template of the Content Management System that powers the site.

Introduction to Website Designing & Development - 51 -


Before You Code:
Web Site Basics: Stuff Beginners Need To Know

Here’s a brief rundown of the most common server-side languages in use on the Web and how they stack up.

• CGI-Perl
The programming language Perl has been around for longer than the World Wide Web itself. The language is an ongoing
open source project, and any hosting provider you use is guaranteed to have it installed. However, unless you have a
good reason for learning Perl, I’d suggest steering clear—it’s notorious for being difficult to learn.

• PHP
Like Perl, PHP is also an open source language. However, unlike Perl, PHP has a reputation for attracting beginners,
largely because it’s very easy to learn and ubiquitous across web hosting providers. The ease of use of PHP is sometimes
viewed as a criticism by developers, though, as it provides newcomers with “enough to rope to hang themselves.”
However, the popularity of PHP is undeniable. It’s also the language of choice for many free content management and
blogging systems (which we’ll explore later in this article). The XAMPP package, a single-click install of PHP and other
technologies that integrate with PHP, is a great package that is available for Windows, Mac and Linux users.

• ASP.NET
For those clients who are uneasy about trusting open source technologies, Microsoft’s ASP.NET might be a good choice.
The Visual Studio development environment is a natural choice for building ASP.NET sites. Visual Studio drastically
simplifies the process of building web sites, but this comes at a cost—it’s both expensive and resource-hungry (although
there’s a free “express edition” available). Unfortunately the code that Visual Studio generates is often inefficient and non-
standards compliant and some web hosting providers lack the facility to host ASP.NET pages.

• Ruby
The Ruby language has been around for over ten years, but its popularity for building web applications is only recent,
fuelled largely by a web application framework called Ruby on Rails (or just Rails, for short). Despite the slightly odd
name, Rails is a well thought-out framework that forces developers to follow best practices in terms of file structure, file-
naming conventions, code reuse, and unit testing. There’s a steep learning curve required in order to master Rails, but
those who persist often become vocal evangelists.

• Flex
Flex refers to a collection of technologies from Adobe for developing Rich Internet Applications—online applications with a
much higher degree of interactivity than a standard browser-based web application. In Flex, user interfaces are defined
using a markup language called MXML, the interactions on the page are described in ActionScript, and the end product
runs as a Flash file. Adobe make the basic Flex Software Developer Kit available to download for free, but if you’re
planning on building sites in Flex on a regular basis, then it’s worth paying for the Flex Builder Pro editor.

As you can see, the choices of technology for a web project are vast. Whether you’re itching to dirty your hands, or just wanting to
understand how those propeller-heads in the basement of your office spend their time, making an effort to appreciate the
fundamental differences between the languages listed above will make you a better web designer—if only because you’ll be able to
better communicate with your technical colleagues.

Dabbling in server-side web development may also improve your client-side coding skills; perhaps if more web development projects
were approached with a software engineering mindset, rather than a print mindset, and then there would be less broken web sites
out there.

CONTENT MANAGEMENT SYSTEMS: CUSTOM OR PACKAGE?

In the previous section, I argued that designers should learn a server-side language. Now I’m going to recommend that you use an
alternative language when building your next web site. It’s confusing; I know—bear with me!

Here’s why you should build your next site using as little custom code as possible: wearing the designer hat and the programmer hat
certainly gives you a competitive advantage in the web world, but the reality is that most web sites are fundamentally content sites.
For these types of sites, a Content Management System (CMS) will suffice.

One of the most difficult challenges in building a web site is ensuring that the client can update it on their own, long after the project
has completed. A CMS is a key in achieving this goal. While there’ll always be clients, who are faster learners than others, it’s also
true that some Content Management Systems are much easier to learn for non-technical people than others.

True, there are occasions when the site for which you’re designing might require purely custom code, but on these occasions it’s
more likely that the development (and design) will be managed in-house rather than by an external agency. If you’re reinventing the
wheel for your client, you should be using a CMS.

There are numerous advantages to using a well-established CMS rather than rolling your own. These include:

• Security
Using a CMS that is being constantly evolved means that with each upgrade comes with improvements in the security of
the product; these updates may fix previously undiscovered security flaws, adapt to changes in how browsers operate, or
add support for upgraded database versions. Writing custom code that’s accessible over the Web without investing any
time in the future testing and updating of that code poses a great risk in the security of your client’s web site being
compromised.

• Familiarity
There may be no perfect CMS, but there are a finite number of them on the market. If by chance your client has used the
same CMS before that you choose for your project, then the learning curve for updating their site will be much lower. This
makes good business sense for them, and makes you look good.

Introduction to Website Designing & Development - 52 -


Before You Code:
Web Site Basics: Stuff Beginners Need To Know

• Maintenance and Support


If the code that powers your client’s web site is completely custom, then your client will be more dependent upon you to
make any future tweaks or changes than if you used an established CMS. While on the surface this may seem like a
cunning way to lock them in for repeat business, such an approach can be harmful to the client-vendor relationship—
especially if there are occasions when you’re unable to accommodate their requests in a timely fashion. It makes much
more sense to use a CMS for which a thriving community of developers exists, so that your client has an alternative
developer to turn to if necessary.

So if building a site from scratch is a no-no, the question then becomes “Which CMS should I use?” This question has caused
heated discussions amongst web developers for years, and again the answer is, “It depends.”

Unfortunately, a comprehensive comparison of every available CMS is beyond the scope of this article. There are a huge number of
factors to consider. Here’s a sample (this list is merely the tip of the iceberg):

• Does the CMS contain the features necessary for this site?
• Are there any legacy systems with which the CMS needs to interface?
• How big is the development community associated with the CMS?
• Is the client comfortable with using an open source solution?
• What plans are there for expanding the site in the future?

An open source CMS is often perfect for a client whose project budget is limited. Tools such as Drupal, Joomla, eZ Publish, and
WordPress are all open source and written in PHP. Each package has its strengths and weaknesses, but all deserve your
consideration.

An excellent place to begin researching open source CMS packages is opensourcecms.com. The site provides demos of over 100
open source CMS with which you can experiment without installing anything on your own local machine.

RANKING IN SEARCH ENGINES

Okay, so you’ve launched your site and you’re publishing interesting and unique content every day. Visitors should come flocking in
droves, right? Well, if people are unable to find your site, then how would they know that it exists?

If your log files are telling you that only two people are visiting your site every day (and you’re one of them), then you may need to
put some effort into optimizing your site for search engines. Search Engine Optimization (SEO) is an umbrella term that covers how
you code your site, what content you publish, how you phrase that content, what URL structure you use, and how well you rank in
search engines for various phrases.

The world of SEO continues to be tarnished by stories of online marketing consultants who game Google with unconventional
techniques; these trick the Google algorithm into listing their web site higher in the results pages than it probably deserves to be.

The truth, however, is that SEO is an important aspect of any commercial web site, and there are many legitimate techniques that
you can, and should, utilize, to ensure that people are able to find your site through a search engine. While it would be impossible to
describe how to develop a comprehensive SEO strategy within these pages, if you follow my advice at the start of this article to use
HTML instead of Flash whenever appropriate, you’ll be well on your way.

One common misconception is that a web site’s ranking in a search engine is tied to its PageRank. PageRank is a trademarked term
used by Google to determine how much authority a web site has. Fundamentally, the way it works is this: the more links to a web
site, the more important Google considers that site to be and, therefore, the higher its PageRank.

Realistically, though, the algorithm that determines a web site’s PageRank is a closely guarded secret, and the algorithm itself is
constantly changing as the Web grows. Additionally, a web site’s PageRank is only one factor that influences its position in Google’s
search results pages. Finally, it’s important to remember that Google is but one of many search engines. Google may dominate the
current climate, but this may change in the future. Focusing on Google alone would be a short-sighted strategy.

In the end, a site’s PageRank value (or its ranking using any other metric, for that matter) is meaningless if the site ranks well in
results pages for Google and other search engines for the phrases that matter to your client. The key to achieving (and maintaining)
success is to continually monitor your site’s traffic using an analytics package like Google Analytics. The insight that this data can
provide on how visitors use your site and what keywords they type to find it will be invaluable in shaping the site’s SEO strategy.

A WEB SITE IS A SOFTWARE PRODUCT, NOT A PIECE OF PAPER

Accessing the Web has never been easier for end users interested in publishing photos, chatting with friends, and dumping random
thoughts for the world to savor, but building a professional web site is as difficult as it has always been.

It’s therefore critical that web designers take the initiative to understand what goes on “under the hood,” or risk their beautiful
mockups failing to reach their full potential because of the technology that implements them. By understanding when to choose
Flash or HTML, the pros and cons of the various server-side languages, how to select a CMS, and what factors affect a page’s
ranking in a search engine, designers will be able to offer their clients a more informed service—and a more successful web site.

Introduction to Website Designing & Development - 53 -


Before You Code:
Database Websites from Scratch
Much has been written about building and maintaining data-driven Websites. These sites are typically seen to involve three tiers.
The term 'three tier' refers to the metaphorical layers within a data driven Website:

1. Content
'Content' refers to all the text in the site - not the navigational links or images, but the raw textual information, such as
news articles or product descriptions.

2. Program Logic
'Program logic' refers to the code that handles user requests for pages and displays them according to certain rules, such
as: if the request comes from a Linux machine -- show this page.

3. Presentation
'Presentation' refers to the code that handles the formatting of your content and displays it in an appropriate format, like
HTML or XHTML.

My site, for example, is stored on a MySQL database. Page requests are handled by the PHP programming language and the
presentation is handled by templates that contain HTML.

BENEFITS OF A DATA-DRIVEN SOLUTION

• Separating the content from the site's presentation allows you to display that content in different ways (such as through
wireless devices), or to display browser-specific templates (see below).

• Templates allow you to change the appearance of an entire site in minutes. If you decide that a link needs to be added, or
you make alterations to your copyright text, you can update one file (rather than hundreds) and affect the whole site
instantly.

• Maintenance and editing can be performed by anyone who can fill out an online form -- you don't need editorial staff to
know HTML or, in fact, any code at all. If you need to update product descriptions, for example, you can use a simple form
that can be designed specifically for that purpose.

You may notice that I haven't made any mention of queries or ecommerce database functions here -- they're a little beyond the
scope of this article.

WHO NEEDS A DATABASE?

If your site's content will be changed or added to more than once or twice a month, then you should consider using a database to
store the content, and building an online administration program to manage it. The solution requires a little more work at the outset,
but it will save you time and money in the long run.

If you intend to maintain a very small and fairly static site (such as an online business card) then stick to the traditional static
approach -- this should be adequate for your needs.

If you want to build a data driven site, or just find a little more technical information on the topics we've touched upon, try these
resources:

• www.mysql.com
• www.php.net
• www.phpbuilder.com
• www.devshed.com
• http://www.webmasterbase.com/subcats/2

Ok, so now you've decided that you need a dynamic, flexible site structure and that a database is for you. So what next?

WHAT YOU NEED

If you're going to build a dynamic site then you're going to need a few things, namely:

• A Relational Database Management System (or RDBMS),


• A programming language that will help you manipulate your data and
• A template system to abstract presentation from code.

I'll assume that you know HTML already and that you have some experience of site building which will leave us with these three
important choices.

Introduction to Website Designing & Development - 54 -


Before You Code:
Database Websites from Scratch

WHICH RDBMS?

For most of today's small to medium-sized sites, MySQL is the answer. Why? Because:

• It's very powerful


• It's very fast
• It's very simple
• It has an almost fanatical online community from which you can draw knowledge and support
• It's free!

WHICH PROGRAMMING LANGUAGE?

On the basis that we've chosen MySQL as our database the answer here is a forgone conclusion: PHP. Although there are many
other ways to interact with MySQL, the combination of PHP and MySQL is very well documented and thousands of sites rely on this
excellent marriage of technologies to efficiently manage their data. Some of PHP's benefits include:

• Its simplicity
• Its power
• Its community support
• It's free!

WHICH TEMPLATE SYSTEM?

There are two schools of thought as to which template system is best: PHPLib or FastTemplate. Experienced programmers are
divided and both factions are passionate in their debate. I've chosen PHPLib because unlike FastTemplate, which was ported from
an original Perl script, PHPLib has been exclusively designed for PHP from the ground up.

So our decisions have been made: PHP, MySQL and PHPLib templates.

WHERE TO NOW?

If you don't know HTML, leave this article now and come back in a couple of weeks when you've got the hang of coding HTML
pages by hand. And if you rely on WYSIWYG editors such as Dreamweaver then the same applies: if you're not comfortable editing
code by hand then you need to learn. It's not hard, trust me.

The easiest way to learn the languages you'll need in order to database your site is by taking one subject at a time. I've found that
it's best done in this order:

• Learn PHP - Programming Language


• Learn MySQL – Database System
• Learn to use the PHPLib template system – HTML / Templates

PHP

Official home of PHP: http://www.php.net/

Downloads
• For source and binary packages
http://www.php.net/downloads.php

• PHP Triad for Windows -- complete server environment


http://www.phpgeek.com/phptriad.php

• RPM packages for Linux boxes


http://www.rpmfind.net/

• Or check your distributor's download page

Of course, there are many other ways to download PHP, but these are the easiest solutions for most people.

Introduction to Website Designing & Development - 55 -


Before You Code:
Database Websites from Scratch

SETTING UP PHP

If you decide not to use a 'ready-to-go' setup, the PHP manual supplies the best resources for installation on all systems.

The PHP manual is your best bet. Or you can try Kevin Yank's tutorials, which are part of his new book, including:

• Setting up on Windows
http://www.webmasterbase.com/article.php?pid=29&aid=525

• Setting up on Linux
http://www.webmasterbase.com/article.php?pid=97&aid=525

• Common PHP Installation Problems


http://www.onlamp.com/pub/a/php/2001/04/26/php_admin.html

There are hundreds of tutorials to choose from on the Web. Simply run a search on Google and pick something relevant to your
needs.

PHP BEGINNERS' TUTORIALS

If you want to get started quickly, the best way is to try a couple of beginners’ tutorials and then move on to the manual and other
online subject-specific tutorials.

• The PHP manual's beginner tutorial


http://www.php.net/tut.php

• Your First PHP Script (SitePoint article)


http://www.webmasterbase.com/article.php?pid=153&aid=525

• Zend.com's tutorials
http://www.zend.com/zend/tut/

Of course, there is a range of others but I think these three are probably the best sources for absolute beginners.

GENERAL PHP TUTORIALS AND SOURCES OF KNOWLEDGE

• The manual
http://www.php.net/manual/en/

• Zend.com's developer section


http://www.zend.com/developers.php

• PHPBuilder.com
http://phpbuilder.com/

• Devshed.com's PHP section


http://www.devshed.com/Server_Side/PHP/

• O'Reilly's PHP tutorials


http://www.onlamp.com/php/

Again I have to say that there are dozens of online PHP resources but the ones listed above represent the best of what's out there.

PHP COMMUNITY FORUMS

These sites are the best places to talk to other developers and get help with stuff that you can't find, or can't understand through the
manual.

• The PHPBuilder forums


http://phpbuilder.com/forum/

• SitePoint's PHP and MySQL forum


http://www.sitepointforums.com/forumdisplay.php?s=&forumid=34

• Devshed's PHP forum


http://forums.devshed.com/forumdisplay.php?s=&forumid=5

And there you have it! Bookmark this page, go have some fun, and when you're confidently embedding PHP into you HTML pages,
come back and make a start on the next section.

Introduction to Website Designing & Development - 56 -


Before You Code:
Database Websites from Scratch

MySQL
Official home of MySQL: http://www.mysql.com/

This section will be noticeably shorter than the last, as a lot of the resources listed above are also excellent repositories of
information on MySQL. Those that are of particular note I'll repeat but as PHP goes hand in hand with MySQL you should really
check out almost all of the previously-mentioned sites.

DOWNLOADING MySQL

• MySQL.com
http://www.mysql.com/downloads/index.html

• PHP Triad for Windows -- Complete server environment


http://www.phpgeek.com/phptriad.php

• RPM packages for Linux boxes


http://www.rpmfind.net/

• Or check your distributor's download page.

SETTING UP MySQL

Most of the links to PHP resources above also cover MySQL installation as part of the deal. However, here are a couple of MySQL-
specific sites:

• MySQL.com - installation on Linux


http://www.mysql.com/doc/L/i/Linux-RPM.html

• MySQL.com - installation on Windows


http://www.mysql.com/doc/W/i/Windows_installation.html

MySQL BEGINNERS' TUTORIALS

As above, a couple of the more notable or specific resources include:

• MySQL.com's beginners' tutorial


http://www.mysql.com/doc/T/u/Tutorial.html

• Beginning MySQL Tutorial


http://www.devshed.com/Server_Side/MySQL/Intro/

• Building a Database-Driven Web Site Using PHP and MySQL


http://www.webmasterbase.com/article.php?aid=228&pid=0

MySQL GENERAL TUTORIALS AND SOURCES OF KNOWLEDGE

• The official MySQL documentation


http://www.mysql.com/documentation/index.html

• Devshed's MySQL section


http://www.devshed.com/Server_Side/MySQL/

• O'Reilly's MySQL articles list


http://www.onlamp.com/onlamp/general/mysql.csp

MySQL COMMUNITY FORUMS

Worthwhile resources include:

• Database talk -- PHPBuilders database forum


http://phpbuilder.com/forum/list.php3?num=5

• SitePoint's PHP and MySQL forum


http://www.sitepointforums.com/forumdisplay.php?s=&forumid=34

• Devshed's MySQL forum


http://forums.devshed.com/forumdisplay.php?s=&forumid=4

Well, what are you waiting for? Go learn the MySQL stuff and when you can use and manipulate simple databases with PHP, come
back and get stuck into the next section!

Introduction to Website Designing & Development - 57 -


Before You Code:
Database Websites from Scratch

THE PHPLib TEMPLATE SYSTEM

Official home of PHPLib: http://phplib.sourceforge.net/

Hopefully, by this point you're happily embedding PHP code that pulls data from MySQL directly into your HTML pages. If you find it
fun and exciting to do this then great! And if you've noticed that it can get a little messy sometimes with all that mixed up HTML and
PHP code then you're going to love PHPLib templates.

The PHPLib template system is actually part of a much larger collection of useful tools for PHP developers, that all come under the
heading of PHPLib. For the purpose of this article I'll simply deal with the template class that can be used as a standalone class, and
which you can require() at the top of your pages.

DOWNLOADING PHPLib

This is nice and simple as a class is just a series of functions (or methods) and thus is simply a text file. You'll need to download the
entire PHPLib, though, to extract that file. Download it here. http://sourceforge.net/project/showfiles.php?group_id=31885

Once you've downloaded the package, unzip it and grab the template.inc file from the php directory.

SETTING UP PHPLib

Well, there's nothing really to set up, just include() or require() it at the top of your pages.

PHPLib TUTORIALS

Bearing in mind that a class is just a set of functions you can use like any other pre-built or user-defined functions in PHP, there are
only a few tutorials available. The two listed below are both great, and provide an excellent starting point.

• Templates, The PHPLIB Way


http://www.phpbuilder.com/columns/david20000512.php3

• PHPLib Templates
http://www.devshed.com/Server_Side/PHP/PHPLib/

PHPLib COMMUNITY FORUMS

Your best bet here is to post questions on PHPbuilder.com (http://www.phpbuilder.com/forum/), as there are quite a few hardcore
template fans that are always happy to lend a hand on this particular forum. Just remember to put a clear subject heading on your
post. Something like 'PHPLib template query' should do the trick.

Well, that's all folks, I hope you found this article useful and that you will enjoy designing your dynamic pages using PHP, MySQL
and the PHPLib template class.

Introduction to Website Designing & Development - 58 -


Definition of “Framework”

A framework is just an application with a lot of hooks; you can design a framework in an entirely ad-hoc fashion by starting with an
app that does one thing and trying to generalize in various directions. You can stop at almost any moment and call it "a framework".
But a good library requires much more -- there, you need to start with requirements, abstractions and attempt at a minimal API that
addresses the maximal set of requirements. Frameworks have no requirement to be minimal in size while maximal in features.

A framework is a series of programs and protocols that make development easier. Take for example .net . .net isn't a programming
language, it is made of different programs (Virtual C++, Virtual Basic, Virtual Pascal, etc), but if you develop within the .net
framework you have more resources available to you (the strengths of each language plus the protocols that unify each language in
a logical manner).

Framework (noun)
1. A skeletal structure designed to support or enclose something.
2. A frame or structure composed of parts fitted and joined together.
3. The construction or sale of frames.
4. Work done in, on, or with a frame.
5. A supporting structure around which something can be built
6. A system of rules, ideas or beliefs that is used to plan or decide something
7. A basic conceptional structure (as of ideas) <the framework of the United States Constitution>
8. The larger branches of a tree that determine its shape
9. Underlying set of ideas: a set of ideas, principles, agreements, or rules that provides the basis or outline for something
intended to be more fully developed at a later stage
10. The general background to, or context for, a particular action or event
11. A structure of connected horizontal and vertical bars with spaces between them, especially one that forms the skeleton of
another structure

Introduction to Website Designing & Development - 59 -


What is “Application” Framework?

In computer programming, an application framework or application development framework consists of a software framework used
by software developers to implement the standard structure of an application for a specific development environment (such as an
operating system or a web application).

Application frameworks became popular with the rise of graphical user interfaces (GUIs), since these tended to promote a standard
structure for applications. Programmers find it much simpler to create automatic GUI creation tools when using a standard
framework, since this defines the underlying code structure of the application in advance. Developers usually use object-oriented
programming techniques to implement frameworks such that the unique parts of an application can simply inherit from pre-existing
classes in the framework.

EXAMPLES

• Apple Computer developed one of the first commercial application frameworks, MacApp, for the Macintosh. Originally
written in an extended (object-oriented) version of Pascal, it later appeared rewritten in C++. Other popular frameworks for
the Mac include Metrowerks' PowerPlant and MacZoop (both based on Carbon). Cocoa for Mac OS X offers a different
approach to an application framework.

• Free software frameworks exist as part of the Mozilla, OpenOffice.org, GNOME and KDE projects.

• Qt (pronounced like "cute") offers a cross-platform application framework. Using Qt, one can develop applications and
user interfaces once, and deploy them across many desktop and embedded operating systems without rewriting the
source code.

• Microsoft created a similar product for Windows called the Microsoft Foundation Classes or MFC.

• A number of frameworks will create identical applications for Linux, Macintosh, and Windows from the same source code,
such as the widget toolkits wxWidgets or FOX toolkit.

• Oracle Application Development Framework (Oracle ADF) aids in producing Java-oriented systems.

Introduction to Website Designing & Development - 60 -


What is “Software” Framework?

A software framework, in computer programming, is an abstraction in which common code providing generic functionality can be
selectively overridden or specialized by user code providing specific functionality. Frameworks are a special case of software
libraries in that they are reusable abstractions of code wrapped in a well-defined API, yet they contain some key distinguishing
features that separate them from normal libraries.

Software frameworks have these distinguishing features that separate them from libraries or normal user applications:

1. Inversion of control
In a framework, unlike in libraries or normal user applications, the overall program's flow of control is not dictated by the
caller, but by the framework.

2. Default behavior
A framework has a default behavior. This default behavior must actually be some useful behavior and not a series of no-
ops.

3. Extensibility
A framework can be extended by the user usually by selective overriding or specialized by user code providing specific
functionality

4. Non-Modifiable framework code


The framework code, in general, is not allowed to be modified. Users can extend the framework, but not modify its code.

RATIONALE

The designers of software frameworks aim to facilitate software development by allowing designers and programmers to devote their
time to meeting software requirements rather than dealing with the more standard low-level details of providing a working system,
thereby reducing overall development time. For example, a team using a web application framework to develop a banking web site
can focus on the operations of account withdrawals rather than the mechanics of request handling and state management.

CRITICISM

It can be argued that frameworks add to "code bloat" and that due to competing and complementary frameworks and the complexity
of their APIs, the intended reduction in overall development time may not be achieved due to the need to spend additional time
learning to use the framework. Of course once the framework is learned future projects might be quicker and easier to complete. The
most effective frameworks turn out to be those that evolve from re-factoring the common code of the enterprise, as opposed to using
a generic "one-size-fits-all" framework developed by third-parties for general purposes

EXAMPLES

Software frameworks typically contain a considerable housekeeping and utility code in order to help bootstrap user applications, but
generally focus on specific problem domains, such as:
• Artistic drawing, music composition, and mechanical CAD
• Compilers for different programming languages and target machines.
• Financial modeling applications.
• Earth system modeling applications.
• Decision support systems.
• Media playback and authoring.
• Web applications.
• Middleware.

ARCHITECTURE

According to Pree, software frameworks consist of frozen spots and hot spots. Frozen spots define the overall architecture of a
software system, that is to say its basic components and the relationships between them. These remain unchanged (frozen) in any
instantiation of the application framework. Hot spots represent those parts where the programmers using the framework add their
own code to add the functionality specific to their own project.

Software frameworks define the places in the architecture where application programmers may make adaptations for specific
functionality—the hot spots.

In an object-oriented environment, a framework consists of abstract and concrete classes. Instantiation of such a framework consists
of composing and sub-classing the existing classes.

When developing a concrete software system with a software framework, developers utilize the hot spots according to the specific
needs and requirements of the system. Software frameworks rely on the Hollywood Principle: "Don't call us, we'll call you." This
means that the user-defined classes (for example, new subclasses), receive messages from the predefined framework classes.
Developers usually handle this by implementing super-class abstract methods.

Introduction to Website Designing & Development - 61 -


What is “Software” Framework?

LIST OF GENERAL-PURPOSE FRAMEWORKS

• ActionScript Foundry is an open source Flex framework written in ActionScript 3 and Java.

• BFC is a RAD framework for developing database-centric distributed computing applications in a .NET environment.

• CodeIgniter is an open source application framework for PHP Platform.

• Component-based Scalable Logical Architecture (CSLA) is a standard way to create robust object oriented programs
using business objects, implemented using .NET.

• CNI (Compiled Native Interface) is a software framework for the GNU GCJ compiler which allows Java code to call and be
called by native applications (programs specific to a hardware and operating system platform) and libraries written in C++.

• Google Web Toolkit (GWT) is an open source Java software development framework.

• Java Native Interface (JNI) allows Java code running in the Java virtual machine (VM) to call and be called by native
applications (programs specific to a hardware and operating system platform) and libraries written in other languages,
such as C, C++ and assembly.

• Leonardi is an open source application framework for GUI applications.

• MARF is an open source general purpose Java pattern recognition framework.

• Rails is a Free Software application framework for the Ruby Platform.

• Spring is an open source application framework for the Java platform.

• JSF is an open source application framework for the Java platform, which uses component based and event-driven
approach for rapid application development.

• Symfony is an open source application framework for PHP Platform.

• Twisted is an open source event-driven application framework written in Python for developing Internet applications.

• Zend Framework is a powerful and extensible application framework, with a loosely-coupled component library for PHP
Platform.

• Jelix is a powerful, simple and new application framework written in PHP Platform for web-related and generic internet
applications.

Introduction to Website Designing & Development - 62 -


What is “Web-Application” Framework?

A web application framework is a software framework that is designed to support the development of dynamic websites, Web
applications and Web services. The framework aims to alleviate the overhead associated with common activities performed in Web
development. For example, many frameworks provide libraries for database access, templating frameworks and session
management, and often promote code reuse.

HISTORY

As the design of the World Wide Web was not inherently dynamic, early hypertext consisted of hand-coded HTML that was
published on web servers. Any modifications to published pages needed to be performed by the pages' author. To provide a
dynamic web page that reflected user inputs, the Common Gateway Interface (CGI) standard was introduced for interfacing external
applications with web servers. CGI could adversely affect server load, though, since each request had to start a separate process.

Programmers wanted tighter integration with the web server to enable high traffic web applications. The Apache HTTP Server, for
example, supports modules that can extend the web server with arbitrary code executions (such as mod perl) or forward specific
requests to a web server that can handle dynamic content (such as mod jk). Some web servers (such as Apache Tomcat) were
specifically designed to handle dynamic content by executing code written in some languages, such as Java.

Around the same time, new languages were being developed specifically for use in the web, such as ColdFusion, PHP and Active
Server Pages.

While the vast majority of languages available to programmers to use in creating dynamic web pages have libraries to help with
common tasks, web applications often require specific libraries that are useful in web applications, such as creating HTML (for
example, JavaServer Faces).

Eventually, mature, "full stack" frameworks appeared, that often gathered multiple libraries useful for web development into a single
cohesive software stack for web developers to use. Examples of this include JavaEE (Servlets), WebObjects, OpenACS, Ruby on
Rails, and Zend Framework.

ARCHITECTURES

• Model view controller (MVC)


Many frameworks follow the Model View Controller (MVC) architectural pattern to separate the data model with business
rules from user interface.

• Push-based vs. Pull-based


Most MVC frameworks follow a push-based architecture. These frameworks use actions that do the required processing,
and then "push" the data to the view layer to render the results. Struts, Django, Ruby on Rails and Spring MVC are good
examples of this architecture. An alternative to this is pull-based architecture, sometimes also called "component-based".
These frameworks start with the view layer, which can then "pull" results from multiple controllers as needed. In this
architecture, multiple controllers can be involved with a single view. Struts2, Tapestry, JBoss Seam, Wicket and Stripes
are examples of pull-based architectures.

• Content Management Systems


Some self-described content management systems have begun to expand into higher layer web application frameworks.
For instance, Drupal's structure provides a minimal core whose function is extended through modules that provide
functions generally associated with web application frameworks. WebGUI, Joomla, XOOPS, Plone and TYPO3 have
similar functionality. Historically these projects have been termed content management systems. However, it is debatable
whether "management of content" is the primary value of such systems, especially when some, like SilverStripe, provide
an object-oriented MVC framework. Add-on modules now enable these systems to function as full fledged applications
beyond the scope of content management. They may provide functional APIs, functional frameworks, coding standards,
and many of the functions traditionally associated with Web application frameworks.

FEATURES
• Security
Some web application frameworks come with authentication and authorization frameworks, that enable the web server to
identify the users of the application, and restrict access to functions based on some defined criteria. Django is one
example that provides role-based access to pages, and provides a web-based interface for creating users and assigning
them roles.

• Database access and mapping


Many web application frameworks create a unified API to a database backend, enabling web applications to work with a
variety of databases with no code changes, and allowing programmers to work with higher-level concepts. For higher
performance, database connections should be pooled as e.g. AOLserver does. Additionally, some object-oriented
frameworks contain mapping tools to provide Object-Relational Mapping, which will map objects to tuples.

Other features web application frameworks may provide include transactional support and database migration tools.

Introduction to Website Designing & Development - 63 -


What is “Web-Application” Framework?

• URL mapping
A framework's URL mapping facility is the mechanism by which the framework interprets URLs. Some frameworks, such
as Django, match the provided URL against pre-determined patterns using regular expressions, while some others use
URL Rewriting to translate the provided URL into one that the underlying engine will recognize. Another technique is that
of graph traversal such as used by Zope, where a URL is decomposed in steps that traverse an object graph (of models
and views).

A URL mapping system that uses pattern matching or URL rewriting allows more "friendly" URLs to be used, increasing
the simplicity of the site and allowing for better indexing by search engines. For example, a URL that ends with
"/page.cgi?cat=science&topic=physics" could be changed to simply "/page/science/physics". This makes the URL easier
to read and provides search engines with better information about the structural layout of the site. A graph traversal
approach also tends to result in the creation of friendly URLs. A shorter URL such as "/page/science" tends to exist by
default as that is simply a shorter form of the longer traversal to "/page/science/physics".

• Web template system


Dynamic web pages usually consist of a static part (HTML) and a dynamic part, which is code that generates HTML. The
code that generates the HTML can do this based on variables in a template, or on code. The text to be generated can
come from a database, thereby making it possible to dramatically reduce the number of pages in a site.

Consider the example of a real estate agent with 500 houses for sale. In a static web site, the agent would have to create
500 pages in order to make the information available. In a dynamic website, the agent would simply connect the dynamic
page to a database table of 500 records.

In a template, variables from the programming language can be inserted without using code, thereby losing the
requirement of programming knowledge to make updates to the pages in a web site. Syntax is made available to
distinguish between HTML and variables. E.g. in JSP the <c:out> tag is used to output variables, and in Smarty,
{$variable} is used.

Many template engines do support limited logic tags, like IF and FOREACH. These are to be used only for decisions that
need to be made for the presentation layer, in order to keep a clean separation from the business logic layer, or the
M(odel) in the MVC pattern.

• Caching
Web caching is the caching of web documents in order to reduce bandwidth usage, server load, and perceived "lag". A
web cache stores copies of documents passing through it; subsequent requests may be satisfied from the cache if certain
conditions are met. Some application frameworks provide mechanisms for caching documents and bypassing various
stages of the page's preparation, such as database access or template interpretation.

• Ajax
Ajax, shorthand for "Asynchronous JavaScript and XML", is a web development technique for creating interactive web
applications. The intent is to make web pages feel more responsive by exchanging small amounts of data with the server
behind the scenes, so that the entire web page does not have to be reloaded each time the user requests a change. This
is intended to increase the web page's interactivity, speed, and usability.

Due to the complexity of Ajax programming in JavaScript, there are numerous Ajax frameworks that exclusively deal with
Ajax support. Some Ajax frameworks are even embedded as a part of larger frameworks. For example, the Prototype
JavaScript Framework is included in Ruby on Rails.

With the increased interest in developing "Web 2.0" Rich Media Applications, the complexity of programming directly in
Ajax and JavaScript has become so apparent that compiler technology has stepped in, to allow developers to code in
high-level languages such as Java, Python and Ruby. The first of these compilers was Google Web Toolkit, with ports to
Python and Ruby in the form of Pyjamas and RubyJS following some time after. These compilers and their associated
widget set libraries make the development of Rich Media Ajax Applications much more akin to that of developing Desktop
applications.

• Automatic configuration
Some frameworks minimize web application configuration through the use of introspection and/or following known
conventions. For example, many Java frameworks use Hibernate as a persistence layer, which can generate a database
schema at runtime capable of persisting the necessary information. This allows the application designer to design
business objects without needing to explicitly define a database schema. Frameworks such as Ruby on Rails can also
work in reverse, that is, define properties of model objects at runtime based on database schemas.

• Web services
Some frameworks provide tools for creating and providing web services. These utilities may offer similar tools as the rest
of the web application.

Introduction to Website Designing & Development - 64 -


What is “Web-Application” Framework?

TECHNOLOGIES

Languages
Many languages have an associated web application framework. However, certain languages either have a critical mass of
developers to give a higher level of support to frameworks, or provide features that prove conducive to the development of web
application frameworks.

• Java
There are numerous Java frameworks either in development or in use. Many of these frameworks are built on top of, or
borrow elements from the Java EE platform or Eclipse etc.

Some of them:
o Spring Framework
o Apache Struts
o Apache Struts 2
o Google Guice
o Induction
o Stripes
o Tapestry
o Hivemind
o ManyDesigns Portofino
o JBoss Seam
o Vaadin
o Play Framework

As an alternative to Java language frameworks, there is Grails (previously known as Groovy on Rails) — Groovy
framework, built on top of Java Platform.

• C# and VB.NET
C# and VB.NET are the most popular languages used to create web applications using Microsoft's ASP.NET platform.
(ASP.NET is built on the Common Language Runtime, allowing programmers to use any supported .NET language.)
ASP.NET has an integrated AJAX framework, ASP.NET AJAX.

• ColdFusion
ColdFusion has several active frameworks, including:

o cfwheels
o ColdBox
o Fusebox
o Mach-II
o Model-Glue
o onTap

• Perl
Perl has many web application frameworks available of which the most prominent are Catalyst, CGI::App, Mojolicious.

• PHP
The most prominent PHP frameworks are Symfony, Cakephp and Zend Framework. These attack the programming
problem from the "bottom-up. Software projects like Drupal, Joomla, MODx, SilverStripe, or TYPO3 have begun to morph
from web CMSs to web application frameworks.

• Python
There are numerous frameworks:
Python has, for example CubicWeb, web2py, Django, Karrigell, Pylons, Quixote, TurboGears and Zope. There are many
other options available as well.

• Ruby
Ruby has Ruby on Rails, Merb and Sinatra among others.

• Lua
Lua has Kepler and Orbit.

• Non-code based
The most common examples of coding without programming are: WorkXpress

• TCL
OpenACS is an open source web application framework designed for developing high traffic web applications in TCL.

• Smalltalk
Seaside is an open source web application framework for developing web applications in Smalltalk. Although the main
development of Seaside happens in Pharo there exist ports to all major Smalltalk dialects.

AIDA/Web is another open source web framework and application server based on many open source and commercial
dialects of Smalltalk.

Introduction to Website Designing & Development - 65 -


What is “Web-Application” Framework?

• JavaScript
Helma is an open source web application framework / publishing system written in Java which uses JavaScript as
programming language.

• Operating systems
With very few exceptions, web application frameworks are based upon platform independent languages that run on a
variety of platforms. While some frameworks may recommend particular configurations, most can run on Windows, Linux,
Mac and other Unix-based platforms.

Introduction to Website Designing & Development - 66 -


What is “Enterprise Architecture” Framework?

An Enterprise Architecture Framework (EA Framework) is a framework for an Enterprise Architecture which defines how to organize
the structure and views associated with an Enterprise Architecture.

OVERVIEW

The three components of the enterprise architecture framework are:

1. Views
Provide the mechanisms for communicating information about the relationships that are important in the architecture

2. Methods
Provide the discipline to gather and organize the data and construct the views in a way that helps insure integrity,
accuracy and completeness

3. Training/Experience:
Support the application of method and use of tools

Because the discipline of Enterprise engineering and Enterprise Architecture is so broad, and because enterprises can be large and
complex, the models associated with the discipline also tend to be large and complex. To manage this scale and complexity, an
Architecture Framework provides tools and methods that can bring the task into focus and allow valuable artifacts to be produced
when they are most needed.

Architecture Frameworks are commonly used in Information technology and Information system governance. An organization may
wish to mandate that certain models be produced before a system design can be approved. Similarly, they may wish to specify
certain views be used in the documentation of procured systems - the U.S. Department of Defense stipulates that specific DoDAF
views be provided by equipment suppliers for capital project above a certain value.

HISTORY

Enterprise Architecture started with the Zachman Framework in 1987. Another early implementation of an Enterprise Architecture
framework was the "Technical Architecture Framework for Information Management" (TAFIM). The first draft of TAFIM was
completed in 1991 with the TAFIM Technical Reference Model (TAFIM TRM). This technical reference model wanted to use open
systems and new technologies available in the commercial market, to develop a DoD-wide application. The TOGAF TRM was
originally derived from the Technical Architecture Framework for Information Management (TAFIM), which in turn was derived from
the IEEE model 1003.0[4] or POSIX Open System Environment: a standard "to construct an information processing system,
including consumers, system integrators, application developers, system providers, and procurement agencies".

In recent years, it has become apparent that a key benefit to be gained from Enterprise architecture is the ability to support decision
making in changing businesses. Because Enterprise Architecture brings together business models (e.g. process models,
organizational charts, etc.) and technical models (e.g. systems architectures, data models, state diagrams, etc.) it is possible to trace
the impact of organizational change on the systems, and also the business impact of changes to the systems.

As this benefit has emerged, many frameworks such as DoDAF, MODAF, or AGATE have adopted a standard meta model which
defines the critical architectural elements and the dependencies between them. Applications based on these models can then query
the underlying architectural information, providing a simple and strong mechanism for tracing strategies to organizational and
technological impacts.

Introduction to Website Designing & Development - 67 -


What is “Enterprise Architecture” Framework?

EA FRAMEWORK TOPICS

• Framework of building codes

Person who have ever remodeled their home, know how important building codes, blueprints, and city or county
inspections are to successfully complete the project. The architect operates within a "framework" of building codes,
preparing blueprints for each phase of the project, from the structural changes to the size and layout of the rooms.
Detailed drawings specify plumbing, electrical, and building construction information for the entire structure. Enterprise
Architecture works in a similar manner.

An architecture framework for Information Technology (IT) affects every aspect of the enterprise. An Enterprise
Architecture framework is similar to building codes that ensure the building is soundly constructed. The IT governance
bodies and procedures serve as the city and county inspectors for building improvement projects. Frameworks contain
models and standards that will be used to develop IT architecture descriptions. The architecture description is the
blueprint.

• Architecture domain

In the context of the creation of enterprise architecture it is common, according to Péter Bernus (2005), to recognise three
or four types of architecture, each corresponding to its particular architecture domain. Examples of such domains are:
o Business architecture,
o Information systems architecture, often subdivided into
o Data architecture, and
o Application architecture, and
o Technical architecture.

Architectural domains are a structuring criterion for a collection of architecture products. They should not be confused with
the application domain of the framework as such.

• Layers of the Enterprise Architecture

Contemporary federal guidance suggests thinking about “layers” of the enterprise architecture:

o Business processes and activities


o Applications such as custom or off-the-shelf software tools
o Data that must be collected, organized, safeguarded, and distributed
o Technology such as computer systems and telephone networks

The Architecture Domains follow a pattern of decomposition as one goes from top to the bottom of the framework. The
ownership can be divided into 4 broad categories:
o Planner's view,
o Owner's view,
o Designer's view and
o Developer's view in this order.

All the views are mostly hierarchical in nature. For business view the planner and owner's level is typically called the value
chains (which are descriptive by nature). The designer's view of business is also known as the analytical view and there
are various standards for modeling this view. One mostly commonly used modeling standard is the Business Process
Modeling Notation (BPMN). The designer's view typically represents the execution level which uses standards like
Business Process Execution Language (BPEL).

The Application and Technology Domains (which are not to be confused with business domains) are characterized by
domain capabilities and domain services. The capabilities are supported by the services. The application services are also
referred in Service-oriented architecture (SOA). The technical services are typically supported by software products.

Introduction to Website Designing & Development - 68 -


What is “Enterprise Architecture” Framework?

The data view starts with the data classes which can be decomposed into data subjects which can be further decomposed
into data entities. The basic data model type which is most commonly used is called ERD (Entity Relationship Diagrams,
see Entity-relationship model). The Class, subject and entity forms a hierarchical view of data. Enterprises do have
millions of instances of data entities.

• View model

A view model is a framework, which defines the set of views or approaches to be used in systems analysis or the
construction of enterprise architecture.

Since the early 1990’s there have been a number of efforts to define standard approaches for describing and analyzing
system architectures. Many of the recent Enterprise Architecture frameworks have some kind of set of views defined, but
these sets are not always called "view models".

Introduction to Website Designing & Development - 69 -


List of Content Management Frameworks
(C.M.F)

A content management framework (CMF) is an application programming interface for creating a customized content management
system (CMS). The relationship between a CMF and a CMS can be illustrated by the following analogy:

In other words, unlike a typical CMS, it is geared more towards configurability and customization. Picture a range of measurement
where one end of the scale is labeled “specific” and the other end “abstract”. On the “specific” end of the spectrum, you would have
something whose form is very specialized because it’s meant for a specific purpose—like, say, a hammer. On the other end of the
spectrum, you would have something much more abstracted, that is available to be configured any way you like, for a variety of
purposes—like some wood and a chunk of steel. You could make a hammer, or any number of other things with the wood and steel.
Of course, while chunks of wood and steel are more “configurable” than a hammer, they aren’t terribly useful because few people
have the specialized knowledge to work with such raw materials

Below is a list of systems that claim to be CMF’s

Content Management Framework (CMF) Technologies


Name
Advanced LogicalDOC Java
Alfresco Java
Apache Jackrabbit Java
Apache Lenya Java, Apache Cocoon
Apache Sling Java, JSP, ECMAScript
Apple PHP5 and MySQL
ArcaCMF PHP5 and MySQL
AxKit Perl
BEdita PHP5, MySQL, CakePHP, JQuery, Smarty
Brix Content Management Framework Java, Apache Jackrabbit and Apache Wicket
Catalyst Perl
CherryPy Python
CodeIgniter PHP and MySQL
Cuyahoga ASP.NET and MySQL, PostgreSQL, MS SQL (based on NHibernate)
Day Communiqué WCM JSP - based on Apache Sling
dbXwebApp PHP Content Management + Framework PHP and MySQL
Dialogs PHP and MySQL
Diem (content management framework) An open source MVC Content Management Framework for symfony and jQuery
Drupal PHP and MySQL/PostgreSQL
Ekklesia 360 CMS PHP and MySQL
Elixon Platform A modular minimalistic framework using PHP and SQLite with support for AJAX based XUL
front ends.
Exponent CMS An MVC framework using PHP and MySQL
eZ Publish PHP4, PHP5, MySQL, PostgreSQL, Oracle, MS SQL Server
Insight CMS by Endis A MySQL and .NET Framework
Jakarta Slide (Retired. Look at Jackrabbit as an Java
alternative.)
Jaws PHP and PostgreSQL, MySQL, Oracle, Firebird, InterBase, Microsoft SQL Server, SQLite
Joomla! PHP and MySQL
Jumper 2.0 PHP and MySQL
Mambo PHP and MySQL
Maypole Perl
Micro CMS PHP and MySQL
Midgard GLib, D-Bus, PHP, Python and MySQL
MODx CMS PHP 4.1.x-5 and MySQL 3.2x-5
Monk CMS PHP and MySQL
nethead cms Perl and MySQL,PostgreSQL, Oracle
onion.net .NET Framework, XML Schema, XML, XSL and Microsoft SQL Server
OpenACS AOLserver and PostgreSQL or Oracle
phpXCore PHP and MySQL
Pier Smalltalk and Seaside
Plone Python
Quick.Cms.Lite PHP and Flat-file database
RIFE Java
Sana Sites .NET Framework and Microsoft SQL Server
SAPID CMF PHP 4/5, works with MySQL
Seagull PHP 4/5, works with MySQL, Oracle or PostgreSQL
SilverStripe PHP 5, works with MySQL, PostgreSQL
Symphony CMS PHP 5 and MySQL, with XML and XSLT
TangoCMS PHP5 and MySQL
TYPO3 PHP and MySQL
Umbraco .NET Framework, works with MSSQL, VistaDB, with XSLT or .NET UserControls
Windows Sharepoint Services .NET Framework, works with Microsoft SQL Server or Windows Internal Database
Xaraya PHP and MySQL
XOOPS PHP and MySQL
Zena Ruby on Rails and MySQL

Introduction to Website Designing & Development - 70 -


List of Content Management Systems
(C.M.S)
This is a list of notable content management systems that are used to organize and facilitate collaborative content creation. Many of
them are built on top of separate content management frameworks.

COMMERCIAL SOFTWARE
This section lists commercial software that includes software, hosting, and support with a single vendor.

SaaS (SOFTWARE AS A SERVICE)

Name Licensed Version Last stable


Platform
(Commercial Software) Available version
LogicalDOC Cloud Java Yes 4.6
Contensis .NET Yes 5.1
Forbrains wcms Web Yes 5.4
uCoz n/a n/a No
OU Campus Java Yes 8.9

.NET

Name Latest stable


Platform Supported databases
(Commercial Software) release
EPiServer .NET SQL Server, Oracle, SQL Express 5.2
Contensis .NET SQL Server, SQL Express 5.1
Immediacy .NET SQL Server 6.0
Ingeniux Content Management System
.NET XML 6.0
(CMS)
Jadu .NET SQL Server 1.8
SQL Server SQL Express, Oracle, My SQL,
Sitecore .NET 6 (released in 2008)
SQLite

ASP.NET

Name Latest stable Latest release


Platform Supported databases Licenses
(Commercial Software) release date
Microsoft Office SQL Server (2000 or 2005),
ASP.NET 3.0 (12.0.0.6327) Proprietary software
SharePoint Server SQL Express
Telligent Community ASP.NET SQL Server 5.0 2009-06-26
Ektron ASP.NET SQL Server 7.6
Now 4.1, soon 2009-12
Kentico CMS ASP.NET SQL Server Proprietary software
5.0 (expected)
GNU General Public
Sense/Net 6.0 ASP.NET SQL Server 6.0 Beta 4 2009-07-24
License
Oracle, SQL Server,
Sitefinity CMS ASP.NET 3.7 SP1 Proprietary software 2009-09-14
MySQL
Composite ASP.NET SQL Server 3.0 Proprietary software
Oracle, SQL Server,
enVision ASP.NET 6.2 Proprietary software 2009-07-07
MySQL

JAVA

Name Supported Latest stable


Platform
(Commercial Software) databases release
Oracle, MySQL, Microsoft SQL Server
BACKBASE Portal Java 4.0
uses JSR-170-compliant content repository
Blue Light CMS Java Oracle, MySQL 1.1
Cascade Server Java Oracle, MySQL, SQL Server 5.7
CoreMedia CMS Java Oracle, SQL Server , DB2, PostgreSQL 2008
Oracle, SQL Server , DB2
Crown SiteBuilder Java 6.1
uses EMC Document content repository
no database required
Day Communiqué WCM Java supports Oracle, SQL Server , DB2,MySQL 5.2.2
uses JSR-170-compliant content repository
FatWire Content Server Java Oracle, SQL Server, DB2 7.5
Gentics Content.Node Java Oracle, SQL Server, MySQL 4.1
Jalios JCMS Java Built-in: Apache Derby, Oracle, MySQL, PostgreSQL, SQL Server 6.1
LogicalDOC Java Oracle, SQL Server, PostgreSQL 4.6
OU Campus Java includes Sybase Adaptive Server Enterprise database 8.9
TerminalFour Site Manager Java, J2EE Oracle, MySQL, SQL Server 6.0
Traction TeamPage Java Built-in 4.1
Vignette J2EE Oracle, SQL Server, DB2....etc 7.6

Introduction to Website Designing & Development - 71 -


List of Content Management Systems
(C.M.S)

JAVA BUNDLE

Latest
Name Supported
Platform stable
(Commercial Software) databases
release
J2EE or Lotus Oracle, SQL Server, DB2, Lotus
Lotus Web Content Management 6.1
Domino Domino
Refresh Software - SR2 (Component Content
Java, J2EE, XML Oracle, SQL Server v7.2
Management)

PHP

Name Supported Latest stable


Platform
(Commercial Software) databases release
Accrisoft Freedom PHP MySQL 6.2
Amaxus PHP MySQL or Microsoft SQL Server 4.3
Brunner CMS PHP MySQL 4.0.1.111
ExpressionEngine PHP MySQL 1.6.8
Jumper 2.0 PHP MySQL 2.0.1.3
Site Foundry PHP MySQL 2.3
BlueHighway PHP MySQL 2.2

FREEWARE AND OPEN SOURCE SOFTWARE

(This section lists freeware and open-source software to be installed and managed on your supplied web server.)

ASP.NET

Name Latest stable Latest release


Platform Supported databases Licenses
(Freeware & Open Source ) release date
9.0 (released in
AxCMS.net ASP.NET SQL Server SQL Express freeware
2009)
DotNetNuke ASP.NET SQL Server 5.1.4 BSD 2008-12-24
SQL Server, MySQL, PostgreSQL,
mojoPortal ASP.NET 2.3.0.8 CPL 2009-06-17
SQLite, Firebird
Umbraco ASP.NET SQL Server, MySQL 4.0.2.1 MIT 2009-06-02
Windows SharePoint SQL Server (2000 or 2005), SQL Express,
ASP.NET 3.0 freeware 2006-11-13
Services Windows Internal

JAVA

Name Latest Latest


ORM-
(Freeware & Platform RDBMS Other Database stable Licenses release
Open Source ) DBMS
release date
MySQL, Oracle, SQL GPL &
LogicalDOC Java PostgreSQL 4.6 2009-10-12
Server, Informix Commercial
Java MySQL, Oracle,
jAPS PostgreSQL 2.0.6 GPL 2009-07-17
AGILE HSQLDB
HSQL, MySQL, Oracle,
OpenCms Java PostgreSQL 7.5.1 LGPL 2009-10-01
SQL Server, DB2
HSQLDB, MySQL,
Oracle, SQL Server,
, ]
Liferay Java Apache Derby, DB2, PostgreSQL SAP Sybase 5.2 MIT 2009-02-03
Informix, InterBase,
JDataStore
Mulgara
(MPTSTore RDF Apache
Fedora Java MySQL, Oracle PostgreSQL 3.1
Semantic License
Triplestore)
dotCMS Java MySQL, Oracle, MSSQL PostgreSQL 1.7 GNU GPL v2 2009-03-03
MySQL, Oracle, SQL
Nuxeo EP Java PostgreSQL 5.2 LGPL 2009-03-24
Server, Ingres
MySQL, Oracle, SQL GPL &
Alfresco Java PostgreSQL 3.2r 2009-03-31
Server, Informix Commercial
GPL &
Magnolia Java JCR 4.1 2009-06-15
Commercial
Apache
Hippo Java JCR 7.0.1 2009-01-26
License
Calenco Java JCR 1.0 AGPL 2009-03-15

Introduction to Website Designing & Development - 72 -


List of Content Management Systems
(C.M.S)

JAVA PACKAGES / BUNDLE

Name Supported Latest stable Latest release


Platform Licenses
(Freeware & Open Source ) databases release date
Apache Lenya Java, XML, Apache Cocoon 2.0 Apache License
Daisy Java, XML, Apache Cocoon MySQL 2.1 Apache License 2008-03-09

PERL

Name Supported Latest stable Latest


(Freeware & Open Platform Licenses
Source ) databases release release date
blosxom Perl Flat-file database 2.0 MIT
Bricolage Perl MySQL, PostgreSQL 1.10.7 BSD 2009-03-12
Perl with either mod Perl-style-
MojoMojo Any, via the DBIx::Class ORM 0.999029 2009-05-10
perl or FastCGI license
Perl, mod perl, MySQL, Microsoft SQL Server,
Movable Type 4.23 GPL 2008-12-03
FastCGI Oracle, PostgreSQL, SQLite
TWiki Perl Plain files (under version control) 4.3.2 GPL 2009-09-02
Scoop Perl on mod perl MySQL 1.1.8 GPL
Slash Perl on mod perl MySQL GPL
WebGUI Perl on mod perl MySQL 7.6.31 GPL

FILE / FLAT FILE

Name Latest stable Latest


(Freeware & Open Platform Supported databases Licenses
Source ) release release date
CMSimple PHP Flat-file database 3.2 Affero 2008-06-20
Dokuwiki PHP Flat-file database 2009-02-14 GPL 2009-02-14
Flat-file database, MySQL,
Lanius CMS PHP 0.5.2 GPL 2009-10-22
PostgresSQL and others via ADOdb
phpCMS PHP Flat-file database 1.2.2 GPL 2006-01-19
phpWiki PHP Flat-file database, MySQL, PostgreSQL GPL 2007-07-14
pluck PHP Flat-file database 4.6.3 GPL 2009-06-06
PmWiki PHP Flat-file database, MySQL, SQLite 2.2.7 GPL 2009-11-07
Creative Commons
Quick.Cms.Lite PHP Flat-file database 2.0 2008-05-13
Attribution 2.5
PivotX PHP Flat-file database

PYTHON

Name Supported Latest stable Latest release


(Freeware & Open Platform Licenses
Source ) databases release date
PostgreSQL, MySQL, SQLite 3 and
Django-cms Python/Django 2.0 BSD 2009-11-12
Oracle
MoinMoin Python Flat-file database 1.8.5 GPL 2009-9-11
Nuxeo CPS Python/Zope ZODB 3.4.3 GPL
MySQL, PostgreSQL, SQLite, Oracle,
Plone Python/Zope 3.3.1 GPL 2009-09-09
ZODB, via Zope
PyLucid Python/Django MySQL, PostgreSQL, SQLite 0.8.0 GPL 2008-02-14

RUBY ON RAILS

Supported Latest stable Latest release


Name Platform Licenses
databases release date
Radiant Ruby on Rails MySQL, PostgreSQL, SQLite 0.8.1 MIT 2009-09-05
Typo Ruby on Rails MySQL, PostgreSQL, SQLite 5.3 MIT 2009-03-27
Refinery Ruby on Rails MySQL, PostgreSQL, SQLite 0.9.5.5 MIT 2009-11-08

OTHERS

Latest stable Latest


Name Platform Supported databases Licenses
release release date
PHP with MySQL, PostgreSQL, SQLite (ADOdb) and
Xaraya 1.1.3 GPL 2008-01-03
XHTML/XML/XSLT SQL Server (Creole)
XOOPS PHP + Smarty MySQL 2.3.2b GPL 2008-09-22
Serendipity PHP + Smarty MySQL, PostgreSQL,MySQLi, SQLite 1.4.1 BSD 2009-01-16
Zikula PHP + Smarty MySQL, Oracle PostGres, SQL Server 1.0.2 LGPL 2008-08-10
OpenACS Tcl AOLserver PostgreSQL/Oracle 5.1.5 GPL 2008-03-22
Introduction to Website Designing & Development - 73 -
List of Content Management Systems
(C.M.S)

PHP

Latest Latest
Name Supported
Platform stable Licenses release
(Freeware & Open Source ) databases
release date
AdaptCMS Lite PHP MySQL 1.4 GPL 2009-01-13
ATutor PHP MySQL 1.6.3 GPL 2009-07-23
b2evolution PHP MySQL 3.3.1 GPL 2009-08-08
BEdita PHP MySQL 3.0 RC AGPL 2009-06-17
BLOG:CMS PHP MySQL 4.2.1 GPL 2008-01-15
CivicSpace PHP MySQL 0.8.3 GPL 2005-05-01
CMS Made Simple PHP MySQL 1.6.5 GPL 2009-09-05
Concrete5 PHP MySQL 5.3.3.1 MIT 2009-10-08
Dotclear PHP MySQL, PostgreSQL 2.1.5 GPL 2009-02-05
Drupal PHP MySQL, PostgreSQL 6.14 GPL 2009-07-01
DynPG PHP MySQL 4.0.0 GPL 2009-10-13
eFront PHP MySQL 3.5.5 CPAL 2009-09-30
e107 PHP MySQL 0.716 CPAL 2009-09-05
Exponent CMS PHP MySQL 0.96.6 GA GPL 2009-02-13
MySQL, PostgreSQL, Oracle,
eZ Publish PHP5 4.2.0 GPL 2009-09-29
Microsoft SQL Server
Frog CMS PHP5 MySQL, SQLite 0.9.5 GPL 2009-04-26
Gamboo Web Suite PHP5 MySQL 3.0 unknown 2009-08-10
GCMS PHP MySQL 1.2b GPL 2008-09
ImpressCMS PHP MySQL 1.1.3 GPL 2009-10-07
PostgreSQL, MySQL, Oracle,
Jaws PHP Firebird, InterBase, Microsoft 0.8.9 LGPL, GPL 2009-01-30
SQL Server, SQLite
Joomla! PHP MySQL 1.5.15 GPL 2009-11-04
MySQL, PostgreSQL (Currently
Habari PHP 0.6.2 Apache License 2009-05-22
not supported), SQLite
KnowledgeTree
Document Management PHP MySQL 3.6.1 GPL & Commercial 2009-10-06
System
Lyceum PHP MySQL 1.0.2 GPL 2008-06-04
Mambo PHP MySQL 4.6.5 GPL 2008-06-01
MediaWiki PHP MySQL, PostgreSQL, DB2 1.15.1 GPL 2009-07-13
Merlintalk PHP MySQL 2.6 GPL 2008-06-26
MiaCMS PHP MySQL 4.6.5 GPL 2008-09-11
PHP (Midgard
Midgard CMS MySQL 8.09.5 LGPL 2009-04-27
framework)
MODx PHP MySQL 1.0.0 GPL 2009-07-31
GPL or warranted
MySource Matrix (Squiz) PHP PostgreSQL, MySQL, Oracle 3.20.1 2009-03-23
version from Squiz
Nucleus CMS PHP MySQL 3.40 GPL 2009-02-15
OneCMS PHP MySQL 2.5 GPL 2008-01-15
Opus PHP MySQL 2.27 GPL 2008-07-06
PHP-Fusion PHP MySQL 7.00.05 AGPL 2009-01-13
PHP-Nuke PHP MySQL 8.1 GPL 2009-05-22
PHPSlash PHP 0.8.1.1 GPL 2006-01-15
phpWebSite PHP MySQL, PostgreSQL 1.6.3 LGPL 2009-06-17
Pixie (CMS) PHP MySQL 1.0.2 GPL 2009-03-24
RavenNuke™ CMS PHP MySQL 2.4.0 GPL 2009-10-12
SilverStripe PHP MySQL 2.3.3 BSD 2009-08-03
SPIP PHP MySQL, PostgreSQL, SQLite 2.0.3 GPL 2009-01-10
TangoCMS PHP MySQL 2.3.2 GNU/GPL 2 2009-08-04
Textpattern PHP MySQL 4.2.0 GPL 2009-08-28
TikiWiki CMS/Groupware PHP MySQL 4.0 LGPL 2009-11-15
Tribiq CMS PHP MySQL 5.0.9 GPL 2008-10-01
TYPO3 PHP MySQL, Oracle, PostgreSQL 4.2.10 GPL 2009-10-22
TYPOlight PHP 5.2.0+ MySQL 4.1+ 2.7.2 LGPL 2009-06-25
whCMS PHP MySQL 0.103 GPL 2008-08-10
WordPress PHP MySQL 2.8.6 GPL 2009-11-13
Website Baker PHP MySQL 2.8.0 GPL 2009-08-15
Xaraya PHP MySQL, PostgreSQL 1.1.5 GPL 2008-11-25

Introduction to Website Designing & Development - 74 -


List of Web-application Frameworks
Basic information about each framework

PERL

Current Stable
Project License
Version
Catalyst 5.80007 Artistic / GPL
Interchange 5.6.1 GPL
Mason Artistic / GPL
Maypole Artistic / GPL

PHP

Current Stable
Project License
Version
Atomik Framework 0.9 MIT
PRADO 3.1.6 revised BSD
CakePHP 1.2.5 MIT
CodeIgniter 1.7.2 BSD-style
F3::PHP Fat-Free Framework 0.3.1 Creative Commons
Joomla 1.5.15 GPL
Helix 1.0 GPL
Horde 3.2 LGPL
eZ Components 2008.2.1 BSD
FUSE 1.2 MIT
Kohana 3.0.1 BSD
KumbiaPHP 0.5 BSD / GPL
LISA 0.2.1 GPL
Mambo 4.6.5 GPL
PEAR 1.4.0 PHP / Various
PHP For Applications 3.2.2 LGPL
PHP ActiveRecord 3.2.2 MIT
PHP Work 1.2 MIT
Qcodo 0.4.2 MIT
QCubed 1.1 MIT
Seagull 0.6.6 BSD
SilverStripe (Sapphire) 2.3.2 BSD
SPIP 2.0.9 GPL
Symfony 1.2.9 MIT
TYPO3 4.3.0 GPL
Yii 1.0.10 BSD
Zend Framework 1.9.5 BSD

PYTHON

Current Stable
Project License
Version
CherryPy 3.1 BSD
CubicWeb 3.3.3 LGPL
Django 1.1 BSD
Grok 0.14 ZPL
Pyjamas 0.6 Apache
Pylons 0.9.7 BSD
TurboGears 2.0.1 MIT / LGPL
web2py 1.66.2 GPLv2 with a commercial exception
werkzeug 0.5.1 BSD
Zope 2 2.10 ZPL
Zope 3 3.3 ZPL

RUBY

Current Stable
Project License
Version
Camping 1.5 MIT
Merb 1.0 RC2 MIT
Nitro 0.41 BSD
Ruby on Rails 2.3.4 MIT / Ruby
Sinatra 0.10.1 MIT

Introduction to Website Designing & Development - 75 -


List of Web-application Frameworks
Basic information about each framework

JAVA

Current Stable
Project License
Version
Apache Click 2.1.0 Apache
Apache Cocoon 2.2.0 Apache
Apache Struts 2.1.8 Apache
Apache Wicket 1.4.1 Apache
AppFuse 2.0.2 Apache
Aranea 1.0.10 Apache
Eclipse RAP 1.2.0 Eclipse Public License
Google Web Toolkit 1.7 Apache
Hamlets 1.4 BSD
ItsNat AGPL / Proprietary
IT Mill Toolkit 5.4.0 Apache
JavaServer Faces 1.2
JBoss Seam 2.2.0 GA LGPL
ManyDesigns Portofino 3.0 GPL
OpenLaszlo 4.1 Common Public License
OpenXava 3.1 LGPL
pirkar 1.0.4
RIFE 1.6.2 Apache
Shale 1.0.4 Apache
Sling Apache 2.0
SmartClient LGPL
Sofia 2.3 GPL
Spring 2.5.6 Apache
Stripes 1.5.1 LGPL
Tapestry 4.1.6/5.1.0.5 Apache
ThinWire 1.2 GPL
Vaadin 6.1.4 Apache
WebObjects 5.4.3 Proprietary
WebWork 2.2.6 Apache
ZK 5.0 RC LGPL
ztemplates 0.9.9.6 Apache

OTHER

Current Stable
Project Language License
Version
AIDA/Web 5.6 Smalltalk MIT
ASP.NET MVC 1.0 ASP.NET Ms-PL
Axiom Stack 3.2.9 JavaScript, Java AGPL / Proprietary
BFC 7.40 ASP.NET Proprietary
ColdFusion on
0.9.4 Coldfusion Apache License
Wheels
ColdSpring ColdFusion
Proprietary; Free to use for non-commercial and commercial
Csla 3.7.0 C#, VB.NET
applications.
CppCMS 0.0.4 C++ LGPL
DotNetNuke 4.8.0 ASP.NET BSD
Flex 3.0 ActionScript, MXML MPL
Fusebox 5.1 ColdFusion Apache
Grails 1.1 Groovy (JVM) Apache
Helma 1.6.3 Javascript Helma License version 2.0
Kepler 1.1 Lua MIT
Lift 1.0 Scala (JVM) Apache
Mach-II 1.6 CFML Apache
Midgard 8.09 LTS PHP LGPL
Model-Glue 2.0 ColdFusion Apache
MonoRail 1.0 RC3 ASP.NET Apache
Morfik 1.3.1.18 Basic,Pascal,Java,C# Proprietary
Obyx 1.0 RC3 C++ GPL
onTap 3.2 ColdFusion BSD
OpenACS 5.4.3 Tcl GPL
Orbit 2.0.1 Lua MIT
Seaside 2.8 Smalltalk MIT
Sproutcore 1.0 BETA Javascript MIT
Vici MVC 2.0.1 .NET MIT
Wavemaker 4.0.2 JavaScript AGPL
Wt 2.99.5 C++ GPL

Introduction to Website Designing & Development - 76 -


Glossary / Acronym

Introduction to Website Designing & Development - 77 -


References

Web-Application / WebApp - Introduction -


http://en.wikipedia.org/wiki/Web_Application

List of Web-Programming Language Popularity


http://langpop.com/

What Web-Programming languages are people talking about?


http://langpop.com/

Database - Overview -
http://en.wikipedia.org/wiki/Database

Database - Parameters -
http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems

Application Service Provider (ASP) - What is it about?


http://en.wikipedia.org/wiki/Application_Service_Provider

Application Service Provider (ASP) - How it works? -


http://www.howstuffworks.com/asp.htm

Integrated Development Environment (IDE)


http://en.wikipedia.org/wiki/Integrated_development_environment

Comparison of Integrated Development Environments


http://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments

Web-Application / WebApp - Development Guide


http://articles.sitepoint.com/article/development-guide-success

Before You Code: Part A – Reviewing Hosting Plans Features


http://www.netfirms.com/web-hosting/index.php

Before You Code: Part B – Reviewing Hosting Plans Features


http://articles.sitepoint.com/article/developer-friendly-web-hosts

Before You Code: Web Site Basics: Stuff Beginners Need To Know
http://articles.sitepoint.com/article/web-site-basics-beginners

Before You Code: Database Websites from Scratch


http://articles.sitepoint.com/article/databased-websites-scratch

Definition of Framework
http://www.webopedia.com/TERM/F/FCL.html

What is “Application” Framework?


http://en.wikipedia.org/wiki/Application_framework

What is “Software” Framework?


http://en.wikipedia.org/wiki/Software_framework

What is “Web-Application” Framework?


http://en.wikipedia.org/wiki/Web_Application_Framework

What is “Enterprise Architecture” Framework?


http://en.wikipedia.org/wiki/Enterprise_Architecture_Framework

List of Content Management Frameworks (C.M.F)


http://en.wikipedia.org/wiki/Content_Management_Frameworks

List of Content Management Systems (C.M.S)


http://en.wikipedia.org/wiki/List_of_content_management_systems

List of Web-application Frameworks


http://en.wikipedia.org/wiki/List_of_web_application_frameworks

Integrated Development Environments Categories


http://en.wikipedia.org/wiki/Category:Integrated_development_environments

Computer programming tools:


http://en.wikipedia.org/wiki/Category:Computer_programming_tools

Introduction to Website Designing & Development - 78 -


Conclusion

JAVA ASP.NET PHP


Topics Higher Average Lesser
Cost Open Source Higher Cost Open Source
Features Higher Average Limited
O/S Support Cross-Platform Windows Cross-Platform
Job Opportunity Higher Average Lesser
Market User Higher Average Lesser
Programming Similar to C++ Easier to Learn Similar to C++
Database Capacity Higher Higher Limited
Content Mgmt System Higher Average Higher
Security Average Higher Average
IDE NetBeans Visual Studio NerBeans

Considering above features, my choice to go ahead with JAVA Technologies

Introduction to Website Designing & Development - 79 -

You might also like