blob: 650ecf9fb47ddbacb14fc1a77ed781f89c3972bc [file] [log] [blame]
## nca-115-2
## $Id$
putHeader 1
web::putx {
<table border="0" cellpadding="0" cellspacing="0" width="770">
{headRow 4 "Websh described" "characteristics"}
<tr valign="top">
{navbar_prod 0}
<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 width="10"></td>
<td width="145">
<table border="0" cellpadding="0" cellspacing="0" width="145">
{redPointElement "Open Source"}
{redPointElement "Apache 2 module"}
{redPointElement "Tcl Extension"}
{redPointElement "Thread Safe"}
{redPointElement "Modular Design"}
{redPointElement "Extensible"}
<td colspan="2" height="30">
<br><h1>key features</h1>
{redPointElement "web transaction state management"}
{redPointElement "session management"}
{redPointElement "strong encryption (extensible)"}
{redPointElement "fast logging facility (extensible)"}
{uppfeil product.html -text "Websh history" -aName history}
<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>
{uppfeil product.html -text "Based on Tcl" -aName tcl}
<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 &quot;tickle&quot;). 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="">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
&quot;flexibility&quot;. <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>&nbsp; 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.
Web-based applications demand a high degree of flexibility
or <b class=blue>extensibility</b>&nbsp;. 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
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>&nbsp; of Websh. <br><br><br>
{uppfeil product.html -text "Websh Design" -aName design}
<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
<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.
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.
Websh relies on well-known and well-tested encryption
methods, which are made available to Websh by means of
<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.
Find more information in the
{pageLink whitepaper.html -show "Websh white paper"}.
finishPage 1