Web Services Tool for End-to-End Code Generation
If you're a would-be web services developer stymied by a lack of tools or a steep learning curve, one Silicon Valley tools firm is looking to cut 80% of your coding. Iron Speed has developed a framework platform that could auto-generate 80% of your code for GUI, queries, workflow, transaction management and database connectivity. Find out if their approach might help your project.
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.
Software engineers at Iron Speed Inc., 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," Iron Speed founder and chairman Alan 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," 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:
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.
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.
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," he added.
"That's why we take the approach of both an application generator and a code generator, rather than reusable components," Fisher said.
The result: Iron Speed Designer provides auto-generation tools for each of the three (3) tier architecture enables developers to:
(1) create custom web pages with any number of database tables, records, fields or other components;
(2) automate the SQL generation and database connectivity; and
(3) import a custom look-and-feel that can be replicated throughout the entire application as it is regenerated.
In detail, Iron Speed's 3-tier framework provides these functions:
Because the database application is being converted to a web-based paradigm, Iron Speed Designer generates applications with a "page-based" transaction model (using ADO.NET) so all of the changes made to any record or table in the application are submitted when the user clicks "OK."
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 also 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.
Working with MIL (Iron Speed Markup Language)
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 syntax. Using IML is divided into four main groups of tags/functions: Data Display (including FieldLabel, Image, Record, RecordRow, Sort, TableSum and Table View); Filter and Navigation Control; Layout and Display; and Application Wizards (which for now include custom access and security).
Because the IML tags are associated with "pages," developers can identify and manipulate key database-connected components of the shared application (tables, records, fields and filters, multi-table joins, virtual tables, etc.) with only a few tagged instructions.
After 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
To view the complete code, please click