Tool Auto-Generates Web Services GUIs, Workflow
Engineers at Iron Speed are trying to wring out the time-consuming learning curve out of web services development by auto-generating code for several aspects -- including GUI, queries, workflow, transaction management and even database connectivity. See how the new offering, available for .NET now and Java later this year, goes auto-XML generation a few steps better.
For the growing number of would-be web services developers still stymied by a lack of tools or a steep learning curve, one Silicon Valley tools firm offers an intriguing option: end-to-end auto-generation of code for GUI, queries, workflow, transaction management and database connectivity.
Late last year, software engineers at Iron Speed, in Mountain View, Calif., decided to go traditional XML auto-generation tools one better by putting together an appdev platform that could generate up to 80% of the code needed to build a web service.
"We started out to solve what we thought was a big, gritty problem," Fisher told IDN. "That was being able to access various systems with different interfaces. There's a whole set of APIs and a big learning curve for getting at the data inside. A developer knows what to do with the data -- it's the access problem and the insertion problem that can be hard. If only you could get your hands on that data inside, so you could use it with your current data structure, that would be great."
That was Fisher's vision behind Iron Speed and its first product, a code generator framework dubbed Iron Speed Designer.
Just Point to Your Database
Iron Speed's premise is simple: Many first-generation web services simply tie together already existing databases/applications with other back-end systems or front-end clients. Iron Speed "reads the database tables and schemas from your existing servers, and connects data-connected controls to produce the joins and filters that connect databases to custom front-end clients or multiple backend databases," company founder and chairman Alan Fisher told IDN.
"The natures of the applications have not really changed," Fisher said, "but the constituencies have changed." As more groups want access to special databases, the demand is increasing to "publish" these database applications to allow other groups to access them. So, Fisher said, a small departmental database can become an "in-demand" asset for all sorts of other groups, including internal departments, contractors, suppliers/partners and even customers. And each will have different customizable needs for GUIs, data access (update/read only) and the like.
Iron Speed's product, Iron Speed Designer, is an autocode framework that lets a developer point to an existing database to quickly generate your application with the three-tier architecture most application developers prefer:
To convert an existing database application to become available as a web service, Fisher said, "You may need HTML -- with code behind to write to the server side code. Then, you'll need to make sure to write the application in SQL. And, for every app, you'll have a number of I/O pages, and that could be as many as 300 pages by the time you figure in the add, edit and delete pages, and the customer facing GUI. "
Fisher's approach is to sidestep all unnecessary code. "By and large, the [web services] apps tend to be data-intensive, and grab data from one location to another, so we focus on automating code to handle those elements."
Iron Speed's approach is not simply one of just another start-up, but come from many years of consulting to large enterprises.
For many enterprise developers, especially in Java, "The traditional approach is to sit down to write to one API and then another, or to try to build reusable components," Fisher said, but he was convinced of the necessity for a better way. He arrived at this "better way" by comprehensive analysis of the most common problems he solved when consulting for enterprises seeking to expand availability of their database applications -- whether by integration, web services or other techniques. He then developed his own list of Best Practices.
"Our background is building very large apps, and we noticed there are a lot of the same things that have to be done in [writing] data-centric applications," Fisher explained. "At the end of the day, you're writing SQL, creating a user interface and calling up data from a variety of data stores or applications." The operations you perform tend to be the same; what's different is the actual data and the data structures. That's why we take the approach of both an application generator and a code generator, rather than reusable components."
The result: Iron Speed Designer provides auto-generation tools for each of the three (3) tiers (Presentation, Application and Database) of today's emerging web client/web server/server-database architecture.
Iron Speed Designer was designed to enable developers to:
- Quickly create custom web pages with any number of database tables, records, fields or other components;
- Automate the SQL generation and database connectivity; and
- Easily "import" a custom look-and-feel that can be replicated throughout the entire application as it is regenerated.
This page-specific approach also means that all SQL statements are automatically updated with each regeneration. In addition, all generated SQL is loaded into stored procedures, improving performance by limiting the number of round-trips to the database. Multiple filters and page controls operate "cooperatively," allowing multiple requests in a single SQL statement.
Anatomy of Iron Speed's 3-Tier Code Generation
The Developer Interface: The Iron Speed Designer menu bar illustrates the application generation process: Inputs about your data model and user interface preferences are used to easily build your application. Iron Speed Designer automatically generates a basic application infrastructure that will be customized to your needs in the subsequent steps.
Once a developer selects the tables and database views s/he wishes to use, Iron Speed Designer automatically incorporates primary and foreign key relationships. It includes a complete set of intelligent field types that automatically validate data types like currency, e-mail addresses, percentage, URLs and credit card numbers.
GUI: For each table in a target database, Iron Speed Designer generates the complete set of user interface pages, including all the table view, add/edit/delete pages and reports. Table view pages showing parent and child data relationships are generated for each database table, giving you searchable, sortable reports. Data record editing pages are created so application users and administrators can add, edit and delete data. In addition, each table view can be customized to the customer's look-and-feel with a simple configuration program that resembles little more than a click-box questionnaire.
Database: For each database table, Iron Speed Designer creates individual Add, Edit and View Record pages. A developer selects the display order for individual form fields; edits the display name, and then selects which fields are to be visible to users (Show Label and Show Field). and even which fields are compulsory when end users fill in a form in the application.
Customize Your Application: Iron Speed Designer also provides a mechanism for regenerating an existing application as a web service without reintegrating your code extensions. The platform generates a well-organized class hierarchy. Objects are created for each web page, database table and table join. Validation and utility classes round out the generated code. A modifiable set of "Safe" classes will never be overwritten is generated. These classes usually inherit from .NET base classes.
Add your code extensions using any .NET language, including Visual Basic and C#. "Generated" classes are rewritten whenever you modify the associated page or table and regenerate the application. They inherit from the safe classes where you add your code extensions.
Once developers have this page paradigm for their application, developers can specify the database-connected controls they need by using special data-centric HTML-like tags in their pages. The tags are written in Iron Speed's own IML (Iron Speed Markup Language), which is based on a set of simple XML; with only a few categories, it identifies key database-connected components of the shared application (tables, records, fields and filters, multi-table joins, virtual tables, etc.).
Once IML tags are placed in a page, a series of wizards prompts a developer for workflow information (which database table is available to be shared, read or updated, for example). Also, because these tags are embedded in the pages and not the underlying database, IML enables web designers and other non-SQL developers to generate appropriate SQL statements and surrounding code.
The IML includes XML-like data-sharing instructions in HTML format for running in web pages -- not native XML databases. The IML provides the instructions for building the web workflow, including
- Data mapping
- Table access, multiple table joining -- even across multiple databases
- Creating a web-based GUI for generating SQL stored procedures and data bound controls for queries
Currently, Iron Speed is available for the Microsoft .NET Framework, but Fisher said the core architecture is applicable for the Java/J2EE environment, as well, and anticipated that Iron Speed will be working Java/J2EE this year.
To view the complete code, click here.
The key to Iron Speed's work is to be able to generate code "down to the bare metal" of the target platform. "The code Iron Speed Designer looks like what comes out by hand," Fisher said. For .NET Framework, for instance, Iron Speed's database connected controls derive from .NET's base classes, he stated.
In addition, Iron Speed generates native aspx pages with aspx controls; and generates native stored procedures for both Microsoft SQL and TransACT. It also generates native VB .NET code for validation. "When you get a bunch of code from Iron Speed, it's the same code you would have to write yourself. No funky runtimes, just source code" Fisher said. Iron Speed also runs the Visual Studio compiler to ensure it creates standard classes.
For more on Iron Speed Designer, developers can register for a series of white papers and even a live demo, where they'll see some 15,000 lines of code generated live during the presentation.