Top Banner
Introduction to Website Designing & Development - 1 - SHREE SATGURUVE NAMAH Introduction to Website Designing & Development (Draft Version)
79

26539135 Introduction to Website Development

Oct 15, 2014

Download

Documents

nzanko
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 1 -

SHREE SATGURUVE NAMAH

Introduction to Website Designing & Development

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

Page 2: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 2 -

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

Page 3: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 3 -

Web-Application Management

- An Overview -

DATA PRESENTATION Content Management

(Client-Side Development)

HTML & CSS XML

- HTML - XHTML - CSS - TCP/IP

- XML - SOAP - RSS - DTD - XML DOM - XSL - XSLT - XSL-FO - XPath - XQuery - XLink - XPointer - Schema - XForms - WSDL - RDF - WAP

BROWSER SCRIPTING

MULTIMEDIA

- DHTML - HTML DOM - JavaScript - AJAX - VBScript - E4X - WMLScript

- Flash - Shockwave - SMIL - SVG

GRAPHICS

ANIMATION

Photoshop CorelDraw GIF Animator Xara3D

- Maya - 3D StudioMax - AutoCAD

APPLICATION SERVER Web-Programming Language (Server-Side Development)

- JAVA Platform by Sun - .NET Platform by Microsoft ~ C# by Microsoft ~ VB.NET (Visual Basic.NET) ~ ASP.NET - PhP - JavaScript (JScript) - Perl - CGI - C - C++ - Python - Ruby on Rails (Ruby)

DATABASE SERVER Record/Files Management (Server-Side Development)

- MySQL by Sun Microsystems - Oracle by Oracle Corporation - SQL Server by Microsoft - PostgreSQL by PostgreSQL Global - DB2 by IBM - Access by Microsoft

INTERNET SERVER

CLIENT COMPUTER

- Internet Browser

OFFICE SERVER

- Office LAN

Office Client computer

Office Client computer

Integrated Development Environment (IDE)

- Netbeans by Sun Microsystems - Visual Studio by Microsoft - DreamWeaver by Adobe - FrontPage by Microsoft - JBuilder - Eclipse - Delphi

Page 4: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 4 -

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.

Page 5: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 5 -

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.

Page 6: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 6 -

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.

Page 7: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 7 -

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

Page 8: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 8 -

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

Page 9: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 9 -

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?

Page 10: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 10 -

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

Page 11: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 11 -

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

Page 12: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 12 -

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

Page 13: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 13 -

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

Page 14: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 14 -

` 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

Page 15: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 15 -

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

Page 16: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 16 -

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)

Page 17: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 17 -

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.

Page 18: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 18 -

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.

Page 19: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 19 -

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.

Page 20: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 20 -

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.

Page 21: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 21 -

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.

Page 22: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 22 -

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

Page 23: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 23 -

Database

- Parameters - INFORMATION ABOUT DATABASE SIZE LIMITS Maximum

Database Size

Maximum Table Size

Maximum Row Size

Maximum Column Per Row

Maximum BLOB or CLOB Size

Maximum Character Size

Maximum Number Size

Minimum Date Value

Maximum Date Value

Maximum Column Name Size

Oracle Unlimited (4 GB * block size per tablespace)

4 GB * block size (with BIGFILE tablespace)

8KB 1000 Unlimited 4000 B 126 bits -4712 9999 30

MySql Unlimited

MyISAM storage limits: 256TB; Innodb storage limits: 64TB

64 KB 4096 4 GB (longtext, longblob)

64 KB (text) 64 bits 1000 9999 64

SQL Server 524,258 TB (32,767 files * 16 TB max file size)

524,258 TB Unlimited 30000 2 GB 2 GB 126 bits 0001 9999 128

PostgreSQL Unlimited 32 TB 1.6 TB 250-1600 depending on type

1 GB (text, bytea) - stored inline or 2 GB (stored in pg_largeobject)

1 GB Unlimited -4713 5874897 63

MS- Access 2 GB 2 GB 16 MB 255

64 KB (memo field), 1 GB ("OLE Object" field)

255 B (text field) 32 bits 0100 9999 ?

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

DATABASE PRODUCTS GENERAL INFORMATION

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

Maintainer First Public Release Date

Latest stable version

Software License

Oracle Oracle Corporation November 1979 11g Release 2 (September 2009) Proprietary

MySql Sun Microsystems November 1995 5.1.40 (6 October 2009)

GPL or proprietary

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

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

MS- Access Microsoft Corporation 1992 12 (2007) Proprietary

Visual Foxpro Microsoft Corporation 9 (2005) Proprietary

Page 24: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 24 -

Database

- Parameters - DATABASE FUNDAMENTAL FEATURES (Fundamental RDBMS features are implemented natively) ACID Referential

Integrity Transactions Unicode Interface

Oracle Yes Yes Yes Yes GUI & SQLMySql Yes Yes Yes Partial SQL SQL Server Yes Yes Yes Yes GUI & SQLPostgreSQL Yes Yes Yes Yes SQL MS- Access No Yes Yes Yes GUI & SQLVisual 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

MySql MyISAM tables only

MEMORY, Cluster (NDB), InnoDB, tables only No No No No No No

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 joins

Outer joins

Inner selects

Merge joins

Blobs and

Clobs

Common Table Expressions

Windowing Functions

Oracle Yes Yes Yes, via MINUS Yes Yes Yes Yes Yes

Yes. Recursive CTEs introduced in 11gR2 supersedes similar

construct called CONNECT BY

Yes

MySql Yes No No Yes Yes Yes Yes Yes No No

SQL Server Yes (2005 and

beyond)

Yes (2005 and beyond)

Yes Yes Yes Yes Yes Yes Yes Yes

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

Page 25: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 25 -

Database

- Parameters - DATA TYPES

Type system

Integer Floating point Decimal String Binary Date/Time Boolean Other

Oracle

Static + Dynamic (through ANYDATA)

NUMBER BINARY_FLOAT, BINARY_DOUBLE NUMBER

CHAR, VARCHAR2, CLOB, NCLOB, NVARCHAR2, NCHAR

BLOB, RAW, LONGRAW

DATE, TIMESTAMP (with/without TIMEZONE), INTERVAL

N/A SPATIAL, IMAGE, AUDIO, VIDEO, DICOM, XMLType

MySql Static

TINYINT (8-bit), SMALLINT (16-bit), MEDIUMINT (24-bit), INT (32-bit), BIGINT (64-bit)

FLOAT (32-bit), DOUBLE (aka REAL) (64-bit)

DECIMAL CHAR, VARCHAR, TEXT

BLOB DATETIME, DATE, TIMESTAMP, YEAR

BOOLEAN (aka BOOL) = synonym for TINYINT

ENUM, SET

SQL Server Static TINYINT, SMALLINT, INT, BIGINT

FLOAT, REAL

NUMERIC, DECIMAL, SMALLMONEY, MONEY

CHAR, VARCHAR, TEXT, NCHAR, NVARCHAR, NTEXT

BINARY, VARBINARY, IMAGE

DATE, DATETIMEOFFSET, DATETIME2, SMALLDATETIME, DATETIME, TIME

BIT

CURSOR, TIMESTAMP, HIERARCHYID, UNIQUEIDENTIFIER, SQL_VARIANT, XML, TABLE

PostgreSQL Static

SMALLINT (16-bit), INTEGER (32-bit), BIGINT (64-bit)

REAL (32-bit), DOUBLE PRECISION (64-bit)

DECIMAL, NUMERIC

CHAR, VARCHAR, TEXT

BYTEA DATE, TIME, TIMESTAMP, INTERVAL

BOOLEAN

POINT, LINE, LSEG, BOX, PATH, POLYGON, CIRCLE, CIDR, INET, MACADDR, 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

(2000 and beyond) Yes Yes Yes Yes Yes

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

(Range + Hash)List Shadow Native Replication API

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

Page 26: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 26 -

Database

- Parameters - DATABASE ACCESS CONTROL Information about access control functionalities (work in progress). Native

network encryption

Brute-force protection

Enterprise directory compatibility

Password complexity rules

Patch access

Run unprivileged

Audit Resource limit

Separation of duties (between administrator, operator, backup, ... like RBAC)

Security Certification

Oracle Yes Yes Yes Yes ? ? Yes Yes ? Yes

MySql Yes (SSL with 4.0)

No No No Partial (no security page)

Yes ? ? ? No

SQL Server

Yes ? Yes (Microsoft Active Directory)

Yes Yes Yes Yes (From 2008)

Yes Yes Yes

PostgreSQL Yes No Yes No Yes Yes No Yes No Yes MS- Access Visual FoxPro

Page 27: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 27 -

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

Page 28: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 28 -

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.

Page 29: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 29 -

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.

Page 30: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 30 -

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.

Page 31: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 31 -

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.

Page 32: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 32 -

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.

Page 33: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 33 -

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.

Page 34: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 34 -

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.

Page 35: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 35 -

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++ IDE License Windows Linux Other

platforms Debugger GUI builder

Integrated Toolchain Profiler Code

Coverage Autocomplete Static code

analysis

GUI Based Design

Class browser

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

Code::Blocks GPL Yes Yes Mac OS X Yes Yes Yes Unknown Unknown Yes Unknown Yes [3] Yes

Code Crusader IDE Proprietary No Yes Mac OS

X Yes No Yes No No Yes No No Yes

CodeLite GPL Yes Yes Mac OS X Yes No Yes Unknown Unknown Yes Unknown Unknown Yes

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 Programming Studio

GPL Yes Yes Mac OS

X, Solaris

Yes Unknown Yes Yes No Yes Yes Unknown Yes

KDevelop GPL No Yes Yes Yes Yes Yes Unknown Yes Unknown Yes Yes

LccWin32 Freeware/Proprietary Yes Yes (obsolete) Yes Yes

(unstable) Yes Yes Unknown Yes Yes Yes Unknown

MonoDevelop GPL Yes Yes Mac OS X Yes Yes No Unknown Unknown Unknown Unknown Yes Unknown

NetBeans C/C++ pack CDDL Yes Yes JVM Yes Yes Yes] Yes Unknown Yes Unknown No Yes

PellesC Freeware Yes No Yes Yes Yes Unknown Unknown Yes Unknown Unknown Unknown

Qt Creator GPL / LGPL / Proprietary Yes Yes OS X Yes Yes Unknown Unknown Unknown Yes Unknown Yes Unknown

Sun Studio Freeware No Yes Solaris Yes Yes Yes Yes Yes Yes Yes No Yes Rational Software Architect

Proprietary Yes Yes JVM Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown Unknown

Turbo C++ Explorer Proprietary Yes No Yes Yes No No No Yes No Yes Yes

Turbo C++ Professional Proprietary Yes No Yes Yes Yes No No Yes No Yes Yes

Ultimate++ TheIDE BSD Yes Yes Yes Yes Yes No No Yes No Yes Yes

Microsoft Visual Studio Proprietary Yes No Yes Yes Yes Yes Yes Yes Yes Yes Yes

Microsoft Visual Studio Express

Freeware Yes No Yes Yes Yes No No Yes No Yes Yes

wxDev-C++ GPL Yes No Yes Yes Unknown Yes Unknown Yes Unknown Yes Unknown

Xcode Freeware No No Mac OS X Yes Yes Yes Yes Yes Yes* Yes Yes Yes

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

IDE License JVM Platforms GUI builder

Oracle Workshop for WebLogic Proprietary Yes Yes

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

JDeveloper Proprietary OTN JDeveloper License (freeware) Yes Windows, Mac OS X, Linux, generic

JVM Yes

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 Developer Proprietary Yes Windows, Mac OS X, Linux, Solaris,

AIX Yes

Servoy Proprietary Unknown Unknown Xcode Proprietary (freeware) No Mac OS X No

Page 36: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 36 -

Comparison of Integrated Development Environments

JavaScript IDE Developer Latest stable

release Platform License

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 IDE Developer Latest stable

release Platform License

Code Crusader IDE New Planet Software 5.0 / November 2006 Mac OS X, Linux Proprietary

KDevelop KDevelop Team 3.5.4-1

(2009-02-27) Cross-platform GPL

Komodo ActiveState 5.2.1 / September, 2009 Cross-platform Proprietary Padre Padre Team 0.43 / August, 2009 Cross-platform Perl PHP IDE Developer Latest stable

release Platform License

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

KDevelop KDevelop Team 3.5.5

(11 August 2009) Linux GPL

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 IDE Developer Latest stable

release Platform Toolkit License

Boa Constructor Team 0.6.1 / July 5, 2007 Independent wxPython GPL

Dabo Ed Leafe and Paul McNett 0.9.2 / Oct 1, 2009 Independent wxPython MIT License

PIDA Team 0.5.1 / July 28, 2007 Cross-platform pyGtk GPL

Eric Python IDE Detlev Offenbach 4.3.7.1 / September 5, 2009 Independent Qt GPL

Geany Team 0.17 / May 2, 2009 Independent GTK2 GPL

IDLE Guido van Rossum et al.

2.6.1 / December 6, 2008 Independent Tkinter Open source

Komodo ActiveState 4.4 / June 24, 2008 Cross-platform Mozilla platform

IDE:Proprietary; Edit: MPL/GPL/LGPL

NetBeans IDE Sun Microsystems 6.7 Early Access Cross-platform - GPL

PyDev fabioz 1.5.0 Eclipse (Cross-platform) EPL

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 Editor Stani 0.8.4h / February 14,

2008 Independent wxPython GPL

wxGlade Alberto Griggio 0.6.3 / February 02, 2008 Independent wxPython MIT License

Wing Wingware 3.1.8 / March 23, 2009 Linux/Windows/OS X unknown proprietary

Page 37: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 37 -

Comparison of Integrated Development Environments

RUBY IDE Developer Latest stable

release Platform License

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

Page 38: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 38 -

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.

Page 39: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 39 -

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.

Page 40: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 40 -

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.

Page 41: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 41 -

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

Page 42: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 42 -

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

Page 43: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 43 -

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

Page 44: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 44 -

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 [email protected] 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.

Page 45: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 45 -

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.

Page 46: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 46 -

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.

Page 47: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 47 -

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.

Page 48: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 48 -

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.

Page 49: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 49 -

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.

Page 50: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 50 -

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.

Page 51: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 51 -

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.

Page 52: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 52 -

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.

Page 53: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 53 -

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.

Page 54: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 54 -

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.

Page 55: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 55 -

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.

Page 56: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 56 -

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.

Page 57: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 57 -

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!

Page 58: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 58 -

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.

Page 59: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 59 -

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

Page 60: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 60 -

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.

Page 61: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 61 -

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.

Page 62: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 62 -

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.

Page 63: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 63 -

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.

Page 64: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 64 -

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.

Page 65: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 65 -

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.

Page 66: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 66 -

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.

Page 67: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 67 -

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.

Page 68: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 68 -

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.

Page 69: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 69 -

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".

.

Page 70: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 70 -

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) Name

Technologies

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 alternative.)

Java

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

Page 71: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 71 -

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 (Commercial Software) Platform Licensed Version

Available Last stable

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 (Commercial Software) Platform Supported databases Latest stable

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 (CMS) .NET XML 6.0

Jadu .NET SQL Server 1.8

Sitecore .NET SQL Server SQL Express, Oracle, My SQL, SQLite 6 (released in 2008)

ASP.NET

Name (Commercial Software) Platform Supported databases Latest stable

release Licenses Latest release date

Microsoft Office SharePoint Server ASP.NET SQL Server (2000 or 2005),

SQL Express 3.0 (12.0.0.6327) Proprietary software

Telligent Community ASP.NET SQL Server 5.0 2009-06-26 Ektron ASP.NET SQL Server 7.6

Kentico CMS ASP.NET SQL Server Now 4.1, soon 5.0 Proprietary software 2009-12

(expected)

Sense/Net 6.0 ASP.NET SQL Server 6.0 Beta 4 GNU General Public License 2009-07-24

Sitefinity CMS ASP.NET Oracle, SQL Server, MySQL 3.7 SP1 Proprietary software 2009-09-14

Composite ASP.NET SQL Server 3.0 Proprietary software

enVision ASP.NET Oracle, SQL Server, MySQL 6.2 Proprietary software 2009-07-07

JAVA

Name (Commercial Software) Platform Supported

databases Latest stable

release

BACKBASE Portal Java Oracle, MySQL, Microsoft SQL Server uses JSR-170-compliant content repository 4.0

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

Crown SiteBuilder Java Oracle, SQL Server , DB2 uses EMC Document content repository 6.1

Day Communiqué WCM Java no database required supports Oracle, SQL Server , DB2,MySQL uses JSR-170-compliant content repository

5.2.2

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

Page 72: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 72 -

List of Content Management Systems

(C.M.S) JAVA BUNDLE

Name (Commercial Software) Platform Supported

databases

Latest stable

release

Lotus Web Content Management J2EE or Lotus Domino

Oracle, SQL Server, DB2, Lotus Domino 6.1

Refresh Software - SR2 (Component Content Management) Java, J2EE, XML Oracle, SQL Server v7.2

PHP

Name (Commercial Software) Platform Supported

databases Latest stable

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 (Freeware & Open Source ) Platform Supported databases Latest stable

release Licenses Latest release date

AxCMS.net ASP.NET SQL Server SQL Express 9.0 (released in 2009) freeware

DotNetNuke ASP.NET SQL Server 5.1.4 BSD 2008-12-24

mojoPortal ASP.NET SQL Server, MySQL, PostgreSQL, SQLite, Firebird 2.3.0.8 CPL 2009-06-17

Umbraco ASP.NET SQL Server, MySQL 4.0.2.1 MIT 2009-06-02 Windows SharePoint Services ASP.NET SQL Server (2000 or 2005), SQL Express,

Windows Internal 3.0 freeware 2006-11-13

JAVA

Name (Freeware &

Open Source ) Platform RDBMS ORM-

DBMS Other Database Latest stable

release Licenses

Latest release

date

LogicalDOC Java MySQL, Oracle, SQL Server, Informix PostgreSQL 4.6 GPL &

Commercial 2009-10-12

jAPS Java AGILE

MySQL, Oracle, HSQLDB PostgreSQL 2.0.6 GPL 2009-07-17

OpenCms Java HSQL, MySQL, Oracle, SQL Server, DB2 PostgreSQL 7.5.1 LGPL 2009-10-01

Liferay Java

HSQLDB, MySQL, Oracle, SQL Server, Apache Derby, DB2, Informix, InterBase, JDataStore

PostgreSQL SAP, Sybase] 5.2 MIT 2009-02-03

Fedora Java MySQL, Oracle PostgreSQL

Mulgara (MPTSTore RDF Semantic Triplestore)

3.1 Apache License

dotCMS Java MySQL, Oracle, MSSQL PostgreSQL 1.7 GNU GPL v2 2009-03-03

Nuxeo EP Java MySQL, Oracle, SQL Server, Ingres PostgreSQL 5.2 LGPL 2009-03-24

Alfresco Java MySQL, Oracle, SQL Server, Informix PostgreSQL 3.2r GPL &

Commercial 2009-03-31

Magnolia Java JCR 4.1 GPL & Commercial

2009-06-15

Hippo Java JCR 7.0.1 Apache License

2009-01-26

Calenco Java JCR 1.0 AGPL 2009-03-15

Page 73: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 73 -

List of Content Management Systems

(C.M.S) JAVA PACKAGES / BUNDLE

Name (Freeware & Open Source ) Platform Supported

databasesLatest stable

release Licenses Latest 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 (Freeware & Open

Source ) Platform Supported

databases Latest stable

release Licenses Latest release date

blosxom Perl Flat-file database 2.0 MIT Bricolage Perl MySQL, PostgreSQL 1.10.7 BSD 2009-03-12

MojoMojo Perl with either mod perl or FastCGI Any, via the DBIx::Class ORM 0.999029 Perl-style-

license 2009-05-10

Movable Type Perl, mod perl, FastCGI

MySQL, Microsoft SQL Server, Oracle, PostgreSQL, SQLite 4.23 GPL 2008-12-03

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 (Freeware & Open

Source ) Platform Supported databases Latest stable

release Licenses Latest 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

Lanius CMS PHP Flat-file database, MySQL, PostgresSQL and others via ADOdb 0.5.2 GPL 2009-10-22

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

Quick.Cms.Lite PHP Flat-file database 2.0 Creative Commons Attribution 2.5 2008-05-13

PivotX PHP Flat-file database PYTHON

Name (Freeware & Open

Source ) Platform Supported

databases Latest stable

release Licenses Latest release date

Django-cms Python/Django PostgreSQL, MySQL, SQLite 3 and Oracle 2.0 BSD 2009-11-12

MoinMoin Python Flat-file database 1.8.5 GPL 2009-9-11 Nuxeo CPS Python/Zope ZODB 3.4.3 GPL

Plone Python/Zope MySQL, PostgreSQL, SQLite, Oracle, ZODB, via Zope 3.3.1 GPL 2009-09-09

PyLucid Python/Django MySQL, PostgreSQL, SQLite 0.8.0 GPL 2008-02-14 RUBY ON RAILS

Name Platform Supported databases

Latest stable release Licenses Latest 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

Name Platform Supported databases Latest stable release Licenses Latest

release date

Xaraya PHP with XHTML/XML/XSLT

MySQL, PostgreSQL, SQLite (ADOdb) and SQL Server (Creole) 1.1.3 GPL 2008-01-03

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

Page 74: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 74 -

List of Content Management Systems

(C.M.S) PHP

Name (Freeware & Open Source ) Platform Supported

databases

Latest stable

release Licenses

Latest 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

eZ Publish PHP5 MySQL, PostgreSQL, Oracle, Microsoft SQL Server 4.2.0 GPL 2009-09-29

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

Jaws PHP PostgreSQL, MySQL, Oracle, Firebird, InterBase, Microsoft SQL Server, SQLite

0.8.9 LGPL, GPL 2009-01-30

Joomla! PHP MySQL 1.5.15 GPL 2009-11-04

Habari PHP MySQL, PostgreSQL (Currently not supported), SQLite 0.6.2 Apache License 2009-05-22

KnowledgeTree Document Management System

PHP MySQL 3.6.1 GPL & Commercial 2009-10-06

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

Midgard CMS PHP (Midgard framework) MySQL 8.09.5 LGPL 2009-04-27

MODx PHP MySQL 1.0.0 GPL 2009-07-31

MySource Matrix (Squiz) PHP PostgreSQL, MySQL, Oracle 3.20.1 GPL or warranted version from Squiz

2009-03-23

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

Page 75: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 75 -

List of Web-application Frameworks

Basic information about each framework PERL

Project Current Stable Version License

Catalyst 5.80007 Artistic / GPLInterchange 5.6.1 GPL Mason Artistic / GPLMaypole Artistic / GPL PHP

Project Current Stable Version License

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 CommonsJoomla 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

Project Current Stable Version License

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 exceptionwerkzeug 0.5.1 BSD Zope 2 2.10 ZPL Zope 3 3.3 ZPL RUBY

Project Current Stable Version License

Camping 1.5 MIT Merb 1.0 RC2 MIT Nitro 0.41 BSD Ruby on Rails 2.3.4 MIT / RubySinatra 0.10.1 MIT

Page 76: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 76 -

List of Web-application Frameworks

Basic information about each framework JAVA

Project Current Stable Version License

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 LicenseOpenXava 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

Project Current Stable Version Language License

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 Wheels 0.9.4 Coldfusion Apache License

ColdSpring ColdFusion

Csla 3.7.0 C#, VB.NET Proprietary; Free to use for non-commercial and commercial 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

Page 77: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 77 -

Glossary / Acronym

Page 78: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 78 -

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

Page 79: 26539135 Introduction to Website Development

I n t r o d u c t i o n t o W e b s i t e D e s i g n i n g & D e v e l o p m e n t - 79 -

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-PlatformJob 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