|PicLan-IP for Unidata/NT
September 2, 1998
Revised: September 12, 2002
EasyCo is pleased to offer PicLan-IP for the Unidata MultiValue DataBase Management
System (Unidata DBMS), hosted on Microsoft Windows NT. PicLan-IP is now available
for Unidata/NT version 3.6.4. PicLan-IP brings a new level of performance, versatility,
and simplicity to internet applications that make use of the Unidata DBMS.
Instead of relying on tenuous links to non MultiValue internet services, PicLan-IP
implements these same internet standard functions completely within the MultiValue
environment. The result is a standards-based solution that is efficient,
cost-effective, and elegant.
The Coyote Web Server
PicLan-IP web solutions are quite simply the most elegant, efficient, and reliable
way to deploy your MultiValue application with a web browser interface. Whether
you are deploying within a corporate intranet, or world-wide via the public internet,
PicLan-IP provides a robust solution to your web application needs. PicLan-IP
includes a full-featured, internet standard HTTP/1.0 web server. Instead
of relying on external, non-MultiValue web server modules, PicLan-IP implements
the entire HTTP server engine within the MultiValue environment. There are a number
of reasons why running the Web Server as a MultiValue application makes sense:
The Web Server Implementation StandardEven though the PicLan-IP web server is
implemented completely within the MultiValue environment, it is a full featured
HTTP server that features:
||Requires External Server
||Very fast - all processing
takes place in a single centralized location within a single process model.
||Slow - numerous processes
have to exchange information using slow interfaces like CGI and pipes.
||Easy - all configuration
items are controlled within the MultiValue environment.
||Difficult - Multiple products
must be installed and configured in several run-time environments.
||Excellent - All web functions
are controlled within the MV environment.
||Poor - Web Server functions
are beyond the reach of MV applications.
||Excellent - Use any web browser
are not required.
||Some good, some poor - Some
solutions require Java or Active-X components complicating client configuration
||Excellent - MV applications
control all web logging function in MV format. You control what informaton
is logged and in what format.
||Poor - Web Server logging
functions are controlled by the external web server and are difficult to
manipulate with MV applications
|Excellent - Active Server
Pages with embedded mv/BASIC source code. All processing occurs in
MV code with MV format data structures.
||Poor - Application must map
MV data to ODBC or use cumbersome subroutine based APIs.
||Excellent - Use any HTML
editor. Application error messages can be configured to go to the
browser, monitor console, or log files. Use of mv/BASIC debugger is supported.
||Proprietary or none - MV
interface uses obscure subroutine calls or non-MV data structures.
||Excellent - Application errors
are logged and user-controlled error displays are generated in plain english
to the end-user.
||Poor - Application errors
usually result in generic "no response" messages with little indication
of the source of errors.
||Excellent - Applications
can be updated real-time with live users on-line.
||Poor - server components
may need to be restarted with many type of application changes.
||Excellent - mv/WEB environment
handles persistence transparently with added support for timed item-locks.
||Some good, some poor - Hidden
input fields and cookies may require manual decoding of HTTP headers and
input fields. Unknown support for item-locks.
||Excellent - All server functions
are fully watch-dogged. True 24x7 operation is designed in.
||Poor - Many server functions
reside in environments that require manual intervention upon failure.
Poor implementation for 24x7 applications.
||Low - The PicLan-Ip licensing
cost is all that is required. You do not need to license external servers.
PicLan-IP also runs on MultiValue phantom processes, so no MultiValue user
licenses are consumed.
||Low to High - Depending on
the configuration, you may need to license external web server software
or even purchase additional host computers. Some solutions also consume
MultiValue user licenses depending on their implementation.
The Web Server Programming Interface
||PicLan-IP implements the entire HTTP/1.0 standard.
Web users have no way of knowing they are conversing with a MultiValue host
(unless you tell them).
||PicLan-IP supports up to 50 independent sets of
web content. One MultiValue host can appear to the world as many independent
web sites and applications.
|The PicLan-IP web server supports user-definable
web content including HTML, TXT, GIF, JPEG, EXE, ZIP, WAV, and other types
that you can easily define.
|The PicLan-IP web server implementation is fully
multi-threaded taking full advantage of multi-CPU hardware platforms and
overlapped I/O and CPU processing.
||The PicLan-IP web server makes extensive use of
server-side caching to reduce server overhead when a page is accessed more
than once. Nearly every concievable web element, from HTTP headers to active
server page merge logic, is "compiled" the first time a page is accessed.
This logic allows the web server to use intelligent "machine code generation"
techniques to produce web interfaces that are actually faster than could
be hand coded.
The PicLan-IP web server is programmable through the use of "active server pages".
An active server page is an HTML document that seamlessly blends the capabilities
of HTML and mv/BASIC. You create PicLan-IP active server pages with a standard
HTML editor such as Microsoft Front Page or NetScape Composer. PicLan-IP
"active server pages" can consist of the following elements:
PicLan-IP Web Server active server pages can be used in three different scenarios:
- Standard HTML content including:
- HTML formatting
- Client-side Java applets
- Client-side Active-X applets
web applications. Standard, old-fashioned, web browsers with HTML
functions may be used to enhance the appearance and client-side operation
- Standard mv/BASIC source code at the end of each HTML page
- Full mv/BASIC syntax support including:
- File I/O
- Subroutine calls
- TCL command execution
- ... and everything else
mv/BASIC source code is compiled with the standard system BASIC (or COMPILE)
verb into a generated subroutine for each web page with active content.
This compile step is completely automatic and usually adds less than two
seconds to the page access time. Once a page has been compiled,
it is only compiled again if it is changed. This "demand compile"
behaviour makes web site development an easy single-step automated process.
- Web Server extensions to ease manipultion of:
- HTML input fields
- HTTP header fields
- HTML quoting and other character conversion operations
- Access to web server parameters such as client IP addresses
- Page flow logic to branch application execution from page to page
- mv/BASIC source code for insertion of dynamic elements into static pages
- A virtually unlimited number of insertion points can be included on a
Insertion points are "pre-processed" when a web page's mv/BASIC code is
"compiled". This machine generated code process results in insertion
merging operations that are typically faster than a human programmer could
hand code and that are much faster than run-time insertions that rely on
LOCATE or INDEX statements.
- User-definable insertion point delimiter characters
- Insertion points can be:
- simple mv/BASIC variables
- or any other mv/BASIC expression that evaluates to a string
- HTML quoting can be handled
- Automatically, as data is merged
- Manually by your application code allowing you to dynamically build
||Any web page can include
mv/BASIC source code to generate dynamic web responses.
||You can setup web directories,
or entire IP addresses to call a single default active server page for any
URL. This allows you to easily implement global security and access
control, sense browser configurations, etc. all from a single block of mv/BASIC
||If web processing results
in an HTML error condition (such as page not found), you can specify an
error page that can then present this error to the user with additional
information beyond the simple error code. These error pages are specified
independently for each IP address that the server is servicing.
The PicLan-IP Web Client
The PicLan-IP Web Client is not an application program with a user interface,
but is instead designed to give your mv/BASIC program access to the web. With
the PicLan-IP Web Client, your mv/BASIC programs can perform HTTP operations with
a simple one-subroutine interface. This allows automated mv/BASIC functions
access to a world-wide information base. Some applications for the PicLan-IP Web
Client might include:
The PicLan-IP Web Client can also be uses as a powerful "Remote Proceedure Call"
engine that works both in intranet and public internet environments. With the
PicLan-IP Web Client and a remote PicLan-IP Web Server running, you can easily
setup applications that "remote execute" MultiValue application code. You
can pass parameters and retrieve results. This "loosely coupled" architechure
using HTTP as a protocol is ideal for distributed processing applications where
the performance and/or reliability of the communications link between sites is
less than perfect.
- Lookup UPS tracking numbers on a nightly basis to:
- update your internal files delivery status fields
- file for shipping refunds on packages that are late, even if the customer
does not complain
- general email to your customer letting them know where their order is
- Price stock portfolios using free on-line quote servers
The PicLan-IP Mail Server
The PicLan-IP Mail Server is a standards-based internet mail server. Support
is included for the SMTP and POP3 protocols including full DNS MX record resolution.
This allows the PicLan-IP Mail Server to participate as an on-line internet mail
server with all mail structures stored in the MultiValue environment. Having a
mail server in the MultiValue environment has the advantages of:
- Easier integration with MultiValue applications that need to send and retrieve
mail within application programs.
- Integration of email accounts and passwords within MultiValue applications.
- Hooks to control mail forwarding and mail filtering with mv/BASIC subroutines.
The PicLan-IP TCP/IP Sockets API
The PicLan-IP TCP/IP Sockets API provides an easy client-side interface for applications
to directly communicate with TCP/IP streams. This allows applications programs
to use TCP/IP stream connections to exchange data with other applications or systems.
The PicLan-IP TCP/IP Sockets API is also standardized from system to system, so
an application can more easily be ported between MultiValue host systems.
for Unidata/NT Implementation Details
The PicLan-IP implementation on Unidata/NT takes full advantage of both the Unidata
DBMS environment as well as the Windows NT environment to provide a robust, high-performance
internet application environment. Full PicLan-IP support is implemented including
HTTP web client and server, SMTP/POP3 mail client and server, TELNET client, and
TCP/IP sockets API. PicLan-IP server functions are implemented as event-driven
Unidata/BASIC applications that execute on Unidata phantom processes. PicLan-IP
does not consume any Unidata user licenses, regardless of the number of TCP/IP
connections utilizing PicLan-IP services. PicLan-IP server process "threads"
are user configurable to take advantage of multi-processor hardware configurations
and scale well with system configuration. All network traffic is fully buffered
and event-driven in a helper service written in the native Win32 environment.
This offloads most network control functions from the Unidata/BASIC environment
allowing a very small number of PicLan-IP server processes to service literally
thousands of concurrent TCP/IP connections. Implementation Performance
Final performance tuning of the PicLan-IP Unidata/NT implementation
is still underway. Current benchmarks show a transaction rate of just
over 20 hits/second when running Unidata/NT on a dual-processor Pentium 200
MMX system. This is about 50% saturation of a T-1 line with dynamic content.
Additional performance tuning is in works and final production performance is
likely to be somewhat better than this.
The performance of PicLan-IP running with Unidata/NT is somewhat slower than
other NT MultiValue implementations. This appears to be due to the inherent
nature of UniBasic and it's somewhat slower execution than the Universe, D3,
and mvBase run-time BASIC environments. Regardless, with current hardware,
saturation of a full T-1 internet connection should be possible with multiprocessor
Pentium-II systems. As such, there appears to be no reason to distribute
most applications to multiple systems or to use external web server engines.
Users interested in performance or security options should look at the "PicLan-IP
for NT Security and Performance White Paper". With PicLan-IP, you
can run both your internet and local user solutions from a single centralized
host. If you wish to discuss performance specific issues, including the
results of webstone benchmarks, please contact email@example.com.