| ## nca-115-2 |
| ## $Id$ |
| |
| startHtmlPage |
| startHtmlBody |
| 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> |
| <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"} |
| <tr> |
| <td colspan="2" height="30"> |
| <br><h1>key features</h1> |
| </td> |
| </tr> |
| {redPointElement "web transaction state management"} |
| {redPointElement "session management"} |
| {redPointElement "strong encryption (extensible)"} |
| {redPointElement "fast logging facility (extensible)"} |
| </table> |
| </td> |
| </tr> |
| {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> |
| </td> |
| </tr> |
| {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 "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> |
| {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 |
| 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 |
| {pageLink whitepaper.html -show "Websh white paper"}. |
| |
| </td> |
| </tr> |
| </table> |
| } |
| |
| finishPage 1 |