<html> | |
<head> | |
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1"> | |
<title>Websh - Welcome</title> | |
<script language="JavaScript" src="/websh/buttons.js"></script> | |
<link href="websh.css" rel="styleSheet" type="text/css"> | |
<meta name="description" content="Websh - the rapid development environment to build powerful web applications."> | |
<META NAME="keywords" CONTENT="websh, Websh, e-commerce, web application, apache, perl, php, asp, cold fusion"> | |
</head> | |
<body marginwidth="0" marginheight="0" topmargin="0" leftmargin="0" | |
bgcolor="#ffffff" link="#006699" alink="red" vlink="#006699"> | |
<map name="grafik_navi"> | |
<area href="mailto:websh-dev@tcl.apache.org" coords="94,2,154,26" shape="rect"> | |
<area href="/websh/" coords="4,2,64,26" shape="rect"> | |
<area href="/websh/contact.html" coords="184,2,244,26" shape="rect"> | |
</map> | |
<table border="0" cellpadding="0" cellspacing="0" width="100%" height="76"> | |
<tr valign="top"> | |
<td width="500" bgcolor="#006699"><img height="50" width="300" src="/websh/images/grafik_navi_home.gif" alt="" border="0" usemap="#grafik_navi"><img height="50" width="200" src="/websh/images/grafik_index.gif" alt=""></td> | |
<td><img height="50" width="270" src="/websh/images/logo.gif" alt="Websh"></td> | |
<td width="5000" bgcolor="#000000"> </td> | |
</tr> | |
<tr> | |
<td width="500"> | |
<table border="0" cellpadding="0" cellspacing="0" width="500" height="40"> | |
<tr bgcolor="#006699"> | |
<td width="120"><br></td> | |
<td><a href="/websh/docu.html" onmouseover="swap('docu','b_docu_b')" onmouseout="swap('docu','b_docu_a')"><img height="20" width="100" src="/websh/buttons/b_docu_a.gif" name="docu" border="0" alt="documentation"></a></td> | |
<td><a href="/websh/support.html" onmouseover="swap('supp','b_supp_b')" onmouseout="swap('supp','b_supp_a')"><img height="20" width="70" src="/websh/buttons/b_supp_a.gif" name="supp" border="0" alt="support"></a></td> | |
<td><a href="/websh/resources.html" onmouseover="swap('ress','b_ress_b')" onmouseout="swap('ress','b_ress_a')"><img height="20" width="110" src="/websh/buttons/b_ress_a.gif" name="ress" border="0" alt="resources and links"></a></td> | |
<td><a href="/websh/download.html" onmouseover="swap('down','b_down_b')" onmouseout="swap('down','b_down_a')"><img height="20" width="100" src="/websh/buttons/b_down_a.gif" name="down" border="0" alt="download"></a></td> | |
</tr> | |
<tr height="20"> | |
<td width="120" height="20"><img height="20" width="120" src="/websh/buttons/b_prod_c.gif"></td> | |
<td width="100" height="20"><img height="20" width="100" src="/websh/images/title.gif"></td> | |
<td width="70" height="20"><img height="20" width="70" src="/websh/images/title.gif"></td> | |
<td width="110" height="20"><img height="20" width="110" src="/websh/images/title.gif"></td> | |
<td width="100" height="20"><img height="20" width="100" src="/websh/images/title.gif"></td> | |
</tr> | |
</table> | |
</td> | |
<td><img height="40" width="270" src="/websh/images/logo_strich.gif"></td> | |
</tr> | |
</table> | |
<table border="0" cellpadding="0" cellspacing="0" width="770"> | |
<tr height="30"> | |
<td width="10" valign="top"></td> | |
<td width="150" height="30"></td> | |
<td width="455" height="30"> | |
<h1>Websh described</h1> | |
</td> | |
<td width="10" height="30"><br> | |
</td> | |
<td width="145" height="30"> | |
<h1>characteristics</h1> | |
</td> | |
</tr> | |
<tr valign="top"> | |
<td width="10"><img height="1" border="0" width="10" src="/websh/images/stuntFFFFFF001010.gif"></td> | |
<td width="150"> | |
<table border="0" cellpadding="0" cellspacing="0" width="141"> | |
<tr valign="top"> | |
<td width="10"><img height="11" width="10" src="/websh/images/pfeil.gif"></td> | |
<td class=nav> | |
<b>product description</b><br> | |
- <a href="#history">history</a><br> | |
- <a href="#tcl">based on Tcl</a><br> | |
- <a href="#design">design</a><br> | |
<br></td></tr> | |
</table> | |
</td> | |
<td width="455"> | |
<img height="160" width="150" src="images/ausschnitt_product.gif" align="left" alt="graphics"> | |
Websh is a rapid development environment for building | |
powerful, fast, and reliable web applications. Websh is | |
versatile and handles everything from HTML generation to | |
data-base driven one-to-one page customization. We have been | |
using it for years for virtually all our customer projects, | |
which typically are E-commerce shops or electronic banking | |
applications. Websh is extensible and portable, and its | |
comprehensive set of commands is quickly learned. | |
<h2>Open Source Software</h2> | |
Websh is released as open source software. The source code as | |
well as binaries for a selection of platforms are available for | |
download for free. Websh users have full control over and | |
insight into Websh. This is protection of investment. | |
<h2>Apache 2 module</h2> | |
Websh is scalable. Its CGI interface ensures that Websh | |
can be employed virtually everywhere, using off-the-shelf web | |
servers. If performance is key, the Websh Apache 2 module | |
gives you lightening-fast one-to-one content. And the nice | |
thing: for both the CGI environment and for the Apache 2 module, | |
you use exactly the same Websh application. <br><br> | |
</td> | |
<td width="10"></td> | |
<td width="145"> | |
<table border="0" cellpadding="0" cellspacing="0" width="145"> | |
<tr valign="top"> | |
<td width="10"><img height="10" width="10" src="/websh/images/punkt_rot.gif"></td> | |
<td>Open Source | |
</td> | |
</tr> | |
<tr valign="top"> | |
<td width="10"><img height="10" width="10" src="/websh/images/punkt_rot.gif"></td> | |
<td>Apache 2 module | |
</td> | |
</tr> | |
<tr valign="top"> | |
<td width="10"><img height="10" width="10" src="/websh/images/punkt_rot.gif"></td> | |
<td>Tcl Extension | |
</td> | |
</tr> | |
<tr valign="top"> | |
<td width="10"><img height="10" width="10" src="/websh/images/punkt_rot.gif"></td> | |
<td>Thread Safe | |
</td> | |
</tr> | |
<tr valign="top"> | |
<td width="10"><img height="10" width="10" src="/websh/images/punkt_rot.gif"></td> | |
<td>Modular Design | |
</td> | |
</tr> | |
<tr valign="top"> | |
<td width="10"><img height="10" width="10" src="/websh/images/punkt_rot.gif"></td> | |
<td>Extensible | |
</td> | |
</tr> | |
<tr> | |
<td colspan="2" height="30"> | |
<br><h1>key features</h1> | |
</td> | |
</tr> | |
<tr valign="top"> | |
<td width="10"><img height="10" width="10" src="/websh/images/punkt_rot.gif"></td> | |
<td>web transaction state management | |
</td> | |
</tr> | |
<tr valign="top"> | |
<td width="10"><img height="10" width="10" src="/websh/images/punkt_rot.gif"></td> | |
<td>session management | |
</td> | |
</tr> | |
<tr valign="top"> | |
<td width="10"><img height="10" width="10" src="/websh/images/punkt_rot.gif"></td> | |
<td>strong encryption (extensible) | |
</td> | |
</tr> | |
<tr valign="top"> | |
<td width="10"><img height="10" width="10" src="/websh/images/punkt_rot.gif"></td> | |
<td>fast logging facility (extensible) | |
</td> | |
</tr> | |
</table> | |
</td> | |
</tr> | |
<tr valign="top"> | |
<td width="10"><img height="1" border="0" width="10" src="/websh/images/stuntFFFFFF001010.gif"></td> | |
<td width="150"> | |
<table border="0" cellpadding="0" cellspacing="0" width="141"> | |
<tr valign="top"> | |
<td width="10"><a href="product.html"><img height="10" border="0" width="10" src="/websh/images/uppfeil.gif"></a></td> | |
<td></td> | |
</tr> | |
</table> | |
</td> | |
<td width="455"> | |
<h2 class="nomargin"><a name="history">Websh history</a></h2> | |
</td> | |
</tr> | |
<tr valign="top"> | |
<td width="10"></td> | |
<td width="150"></td> | |
<td width="455"> | |
The development of Websh began in 1996. Websh | |
has since been successfully used in virtually all customer | |
projects of Netcetera. Why does a technology-driven company | |
like Netcetera rely on a tool with such a slow release cycle ? | |
Good design pays off.<br><br> | |
While the Internet changes at a rapid pace, the underlying | |
technologies remain stable, and Websh has been built to | |
handle them. The practical experience gained from the | |
day-to-day use of Websh has now been channeled into the | |
current release, Websh 3. <br><br> | |
</td> | |
</tr> | |
<tr valign="top"> | |
<td width="10"><img height="1" border="0" width="10" src="/websh/images/stuntFFFFFF001010.gif"></td> | |
<td width="150"> | |
<table border="0" cellpadding="0" cellspacing="0" width="141"> | |
<tr valign="top"> | |
<td width="10"><a href="product.html"><img height="10" border="0" width="10" src="/websh/images/uppfeil.gif"></a></td> | |
<td></td> | |
</tr> | |
</table> | |
</td> | |
<td width="455"> | |
<h2 class="nomargin"><a name="tcl">Based on Tcl</a></h2> | |
</td> | |
</tr> | |
<tr valign="top"> | |
<tr valign="top"> | |
<td width="10"></td> | |
<td width="150"></td> | |
<td width="455"> | |
Websh is based on the Tool Command Language (Tcl, | |
pronounced "tickle"). Tcl is a fast, comprehensive | |
scripting language as well as a library. The Tcl | |
development started 1987 at the University of California at | |
Berkeley with John K.Ousterhout. Development continues through a large group of volunteers coordinated by the <a href="http://www.tcl.tk/community/coreteam/">Tcl Core Team</a>, who also perform the majority of the work.<br><br> | |
The decision to build Websh on top of Tcl has several | |
advantages which can be summarized as | |
"flexibility". <b>Figure 1</b> gives an overview | |
of the Websh Architecture.<br><br> | |
<img src="images/ws3ov.gif" alt="Websh Architecture"><br> | |
<b>Figure 1</b> - Websh Architecture<br><br><br> | |
Most Web-based applications need to separate items with a | |
high change rate from other, static parts. In other words, | |
<b class=blue>configurability</b> is needed. For | |
example, HTML output must be changeable without the need to | |
recompile the application.<br><br> | |
Using Tcl as an embedded system, such configurable parts can | |
be designed as Tcl code snipplets and configuration files. | |
<br><br><br> | |
Web-based applications demand a high degree of flexibility | |
or <b class=blue>extensibility</b> . In particular, it | |
must be straight-forward to add new functionality. Websh | |
does not manage data base access, for example, but rather | |
relies on proven Tcl extensions for this task. Choosing Tcl | |
for Websh thus ensures the extensibility of Websh | |
itself. | |
<br><br><br> | |
Finally, Web-based applications must be deployable on a wide | |
range of platforms. Tcl has been ported to all important | |
operating systems. Embedding Tcl thus ensures the <b | |
class=blue>portability</b> of Websh. <br><br><br> | |
</td> | |
</tr> | |
<tr valign="top"> | |
<td width="10"><img height="1" border="0" width="10" src="/websh/images/stuntFFFFFF001010.gif"></td> | |
<td width="150"> | |
<table border="0" cellpadding="0" cellspacing="0" width="141"> | |
<tr valign="top"> | |
<td width="10"><a href="product.html"><img height="10" border="0" width="10" src="/websh/images/uppfeil.gif"></a></td> | |
<td></td> | |
</tr> | |
</table> | |
</td> | |
<td width="455"> | |
<h2 class="nomargin"><a name="design">Websh Design</a></h2> | |
</td> | |
</tr> | |
<tr valign="top"> | |
<tr valign="top"> | |
<td width="10"></td> | |
<td width="150"></td> | |
<td width="455"> | |
Websh has a modular design, particularly for thread | |
safety.Each module manages its own data, and locking | |
mechanisms are used where needed. Websh modules are | |
extensible through plug-Ins.<br> | |
<b>Figure 2</b> gives an overview of the Websh | |
modules. In the following, each module is shortly | |
described.<br> <img src="images/ws3arch.gif" alt="Websh 3 | |
Design"><br> | |
<b>Figure 2</b> - Websh 3 modules<br> | |
<h2>request and url management</h2> | |
The Websh application developer does not need to get | |
involved with the details of the HTTP protocol or the | |
parsing of data. Rather, he concentrates on the application | |
logic and leaves the rest to Websh. This module parses | |
input from the browser, e.g. HTML form data, and makes it | |
available to Websh. <br><br> | |
One of the distinctive features of Websh is its state | |
management capability. Web-based applications often need to | |
carry information from one HTTP transaction to the next. As | |
an example, the user will choose his preferred language. | |
Applications for electronic commerce systems, Internet | |
banking and so on also need mechanisms to identify and group | |
transactions into longer transactions which cover more than | |
one single HTTP request and its response. This Websh | |
module introduces state. | |
<h2>session management</h2> | |
Websh provides sessions for transaction data management as | |
well. For example, a Websh application would store the | |
items in a "shopping cart" in a session context. The session | |
management module handles session data, which can be stored | |
on the client side using Netscape cookies; or on the server | |
side using the file system (fs), a data base management | |
system (DBMS), or the Netcetera cache manager (ncm). The | |
module provides a uniform interface to access the session | |
context regardless of the storage used. It is implemented | |
in Tcl and makes extensive use of namespaces. | |
<h2>output management</h2> | |
Websh provides commands to format HTTP-compliant output | |
to be sent back to the client. output can be directed to Tcl | |
channels or to Tcl variables for buffering purposes. The | |
output management module is fully configurable to give the | |
user control over the generated output. | |
<h2>conversion</h2> | |
Need HTML compliant input ? Want to send data via an URL, or | |
in a form field ? This module converts umlauts to their | |
proper HTML entities or their URI encoded equivalent, for | |
example. As do all Websh modules, the conversion module | |
manages its data on its own, thus ensuring thread safety. | |
<h2>security by encryption</h2> | |
The proper handling of sensitive data is crucial for banking | |
or E-commerce applications. Three aspects are important: | |
Data transfer, data storage, and session hijacking. This | |
Websh module provides the commands to encode and decode | |
data, and to manage pass-phrases and encryption methods. | |
<br><br> | |
Websh relies on well-known and well-tested encryption | |
methods, which are made available to Websh by means of | |
plug-ins.<br> | |
<h2>messages on streams</h2> | |
This Websh module implements a simple protocol to facilitate | |
communication over Tcl channels. Particularly, it is used for | |
communication over TCP/IP connections. | |
<h2>logging facility</h2> | |
Web applications need a versatile logging mechanism to | |
report errors and other information. In fact, Websh | |
itself makes heavy use of the logging facility. Logging must | |
be easy to use, fast, and extensible. Typically, Websh | |
applications handle hundreds of requests per second, and the | |
logging facility has been designed with this kind of load in | |
mind. <br><br> | |
The logging module is extensible through plug-Ins. | |
<br><br><br> | |
Find more information in the | |
<a href="whitepaper.html">Websh white paper</a>. | |
</td> | |
</tr> | |
</table> | |
<table border="0" cellpadding="0" cellspacing="0" width="770" height="45"> | |
<tr valign="top"> | |
<td colspan="2"> | |
<hr noshade size="1"> | |
</td> | |
</tr> | |
<tr valign="top"> | |
<td width="10"></td> | |
<td width="760"> | |
<span class="blue">description</span> | <a href="/websh/docu.html">documentation</a> | <a href="/websh/support.html">support</a> | <a href="/websh/resources.html">resources</a> | <a href="/websh/download.html">download</a> | <a href="/websh/credits.html">credits</a> | <a href="/websh/copyright.html">copyright</a> | |
</td></tr> | |
<tr valign="top"> | |
<td colspan="2"> | |
<hr noshade size="1"> | |
</td> | |
</tr> | |
<tr valign="top"> | |
<td width="10"></td> | |
<td width="760"> | |
<span class="klein"><b>© Websh - an <a href="http://tcl.apache.org">Apache Tcl</a> project - part of the <a href="http://www.apache.org/">Apache Software Foundation</a></b></span></td> | |
</tr> | |
</table> | |
</body> | |
</html> | |