
|
EveryWare Development Inc. is targeting the rapid application development (RAD) market for multitiered, dynamic Web applications. As the heir apparent to the two-tiered client/server model, RAD is a market already bustling with activity. When corporate MIS shops begin to realize the benefits of this emerging model, they will surely embrace it as the next way to build business applications that run on internal and external private networks as well as on the Web.
Tango consists of two main programs, Tango Development Studio and Tango Application Server. Tango Development Studio is the development environment and Tango Server is an application server that executes application files created with Tango Development Studio. The application server works in conjunction with an HTTP server and standard relational database servers to construct and return HTML to a Web browser.
Tango 3.0 introduces more than 60 new features. The more notable improvements include a revamped visual-development environment and server-side JavaBean, Java class, and JavaScript support. Tango now supports transaction processing. It treats a series of database actions as a single unit. If any single action fails, all the actions are rolled back. The new data source time-out variable makes it possible to specify how long data sources are cached for reuse. Tango automatically closes the data source connection after the specified time period. Tango has a new variable type (array), which has a row-and-column structure, and several new metatags (for example, metatags that support arrays, math and date functions, and the ability to incorporate information from Web pages). The new Mail action makes it possible to construct and send email messages directly from Tango. The new Control Flow actions provide for conditional action executions with If, Else, and ElseIf decision support. You can create loops that execute actions repeatedly while a specific condition is met or for a specified number of iterations. Finally, the Tango Application Server now supports timed application file execution. Tango Server can execute specified URLs at specific times as well as on shutdown and startup.
Through a Web browser, you request a URL that contains the location and name of a Tango file. The URL may also supply optional search arguments that represent the appropriate entry point to the Tango file or parameters passed to it. The Web server recognizes that it is a Tango application file because of the filenameıs extension (.taf in Tango 3.0). The Web server passes the request to Tango Server through a standard CGI or a plug-in for ISAPI or NSAPI if either the Microsoft or Netscape Web servers are in use. Tango Server then processes the request and executes one or more application files previously created with the Tango Development Studio. If the application files contain actions that require access to a database, Tango Server connects via an ODBC or native gateway (Oracle or DB2 native support) to the database. Once the Tango file has reached the end of an execution branch and the results of the database actions are performed successfully, it packages everything into a resulting HTML page, returns it to the Web server and then on to the user. A single Tango file can dynamically create multiple HTML pages.
Figure 1 shows the new Tango Development Studio. A sample application file is opened and displayed in the middle of the screen. Along the right side of the editor is a panel containing a tree list of ODBC and native Oracle databases and a series of reusable HTML code snippets. The palette of controls along the left side of the editor represents the "actions" that Tango can perform. To understand how a Tango program works, you need to grasp the action-based metaphor at the root of it.
A single Tango file is made up of one or more actions. Tango-generated HTML pages are created from the actions in an application file. The HTML pages are built at run time based on customer input and the results retrieved from a database. You can think of the HTML pages that Tango generates as properties or attributes of a Tango action. When an application file is called, Tango Server executes the actions sequentially, from top to bottom, depending on the userıs interaction with the file. When an execution is complete, the HTML results are returned to the userıs browser. EveryWare uses the term discrete action object to refer to the fact that actions hide the details of various layers of logic necessary to complete a specific task. For example, if the action is database related, the SQL is dynamically generated behind the scenes, as is the HTML. You need not be an expert in either SQL or HTML to make use of the actions.
The action palette provides several types of Tango actions. Database functions are handled with the insert, update, delete, begin transaction, end transaction, and search actions. The direct DBMS action is for those who like to write their own SQL statements or have a need for a more advanced query. The database actions generate their own SQL statements.
Control actions control the flow of execution in an application file. The branch action causes a jump to a designated action or group. The if action evaluates an expression and affects the flow of the file based on the result of that expression. The loop action repeats a set of actions either a given number of times or until an expression evaluates to false. The break action terminates processing in the loop, and the return action ends execution of the application file and returns any accumulated HTML to the Web browser.
Tangoıs functionality can be extended through its script and external actions. The script action provides an interface for executing and returning results from JavaScript executed on the server. You can also make use of client-side JavaScript by modifying the HTML returned by various actions. For example, you may want to use client-side JavaScript for field-level validation of database input forms.
External actions extend Tangoıs functionality to server-side Java class and JavaBean calls. If the Tango Application Server is installed on Windows NT, you can call dynamic link libraries (DLLs). On Unix or Windows NT platforms, the external action supports command line execution. This allows you to run any executable file such as a batch file, shell or Perl script, and C application and, if desired, retrieve results. Tango has its roots in the Macintosh world, and when running on that platform it can call out to an Apple Event.
The file action provides a method to read, write, and delete files on the Tango Server machine. For example, you might want to store the values of variables permanently to disk for later retrieval, store data to a file for export to an external system, or import data from an external system (such as daily exports from a mainframe or newswire feeds).
Web-based applications tend to run mostly by themselves. However, companies responsible for such sites probably want to know when certain events take place. For example, the sales department in a software firm is curious when someone downloads an evaluation copy of a program, and the shipping department gets interested when they place an actual order. One way to inform people of these types of events is via an email message. With Tango you can do so by integrating the mail action into an application file. The mail action sends out email using the simple mail transport protocol (SMTP).
In addition to these actions Iıve mentioned, the action palette in Tango contains what EveryWare refers to as Builders. A Builder is similar in nature to a Windows Wizard. Tango provides a New Record Builder and a Search Builder. Figure 1 shows a Tango Application Server file named TCSF.taf open in the middle of the editor. The program is an ad hoc query routine for a relational database. The Search Builder automatically generated the entire program. If you were to run the program it would initially present you with an HTML page that would allow you to enter a value for one or more of three fields and select an operator (5, ?, ., ,, and so on.) to apply the search value. Once the selection criteria are entered and the query is executed, Tango returns the result set, if any, from the database in a tabular HTML form. One of the columns in the table displays URLs instead of a database value like the other columns. When one of the URLs is selected, all the fields for that record are displayed, and the fields can be updated or the record deleted. Figure 2 illustrates what the Search Builder looks like when you configure it for use.
Using Tango, and the Builders in particular, is a point-and-click, drag-and-drop affair. As Figure 2 shows, the Search Builder contains a series of tabbed dialogs, each corresponding to the three-level search routine. The tabbed dialog in Figure 2 is the Record List. You can find Display Columns for the tabular result set by simply selecting one or more columns from the list of data sources along the right side of the editor, drag them over, and drop them in. Then you select each column and fill in the column options. For example, you must supply the title used on the HTML page for the column or how the column is displayed. The "Display As" property for column userid in Figure 2 is set to "Link to Detail." In other words, rather than displaying the actual userid value, Tango will generate a URL that leads to the full details of the record on a different page. Additional "Display As" properties display a link to the URL that is stored in the column, generate a "mailto" link for the email address stored in the column, and display a link to an image whose URL is stored in the column. The other tabbed dialogs in the Builder operate the same way as the Record List dialog. Drag some columns over, drop them in, and set their properties. When the properties are set, you press the "Build actions" button and out pops your ad hoc query routine.
Real-world requirements seldom fit the cookie-cutter model. Is Tango flexible and extensible enough to handle them? I mentioned earlier how you can incorporate server-side Java, JavaScript, command line execution, and DLLs. However, the opportunities to customize the HTML generated by the application server are also extensive. Custom HTML can be added to run before or after the server-generated HTML (or Results HTML, as Tango calls it). The Results HTML itself can be customized, and the templates that the server-generated HTML is based on are modifiable. Tango also ships with an extensive list of HTML metatags, such as array handling and string manipulation, which can be incorporated into your HTML code.
I am impressed with this product. It simplifies the effort of integrating relational databases with Web servers, and it offers surprising scalability given how easy it is to use. For example, the Tango Application Server runs on the Sun Solaris, SGI IRIX, and AIX Unix operating systems as well as Windows NT/95 and the Mac OS. You can deploy multiple application servers if processing loads exceed the capacity of a single machine. Tango Application Server is competitively priced: $5,000 for the Windows NT version and $10,000 for the Unix version. At press time, application servers from Oracle and Kiva, for example, were priced in the $40,000 range.
It would be great if EveryWare either developed its own visual HTML editor for custom HTML activities or worked with the vendors of the more popular ones on the market to integrate them tightly with Tango. If you prefer to code all your HTML by hand rather than drawing it, then this wonıt be an issue. It would also be beneficial if the documentation included a thorough explanation of how to structure a real-world application, once you understand the actions and Tango metatags.
Will Tango be a leader in its market niche? After working in the computer industry for the past 18 years I think I can safely say the following: The technology that is best marketed, or comes from the largest companies, usually ends up being the most widely used, even if it is not the best technology. However, there are still quite a few people in the business who care more about getting a job done than buying name brands ı people who look for the most bang for their buck. They make it possible for smaller companies not only to survive, but to thrive. I have a feeling that Tango will find its own corner of the marketplace and grow. In fact, there are already about 5,000 developers in the world using the product now. At the very least, Tango gives us a feel for how the next wave of business applications will be built.

