Quite often it happens that as part of a project we need to develop some maintenance screens for the administrator. Typical scenarios are: user management, assignment of roles and permissions or modification of system dictionaries. They are usually not high-priority features of an app, however, from the long-term perspective UI is required. Trying to be the most competitive supplier, we ask ourselves regularly: “How can we meet the requirements without too much of bespoke development around CRUD screens, which is neither efficient nor interesting?”
We revisited the topic recently in September, when few of our developers had some free time between projects. From the latest proposals, we built the list of requirements that potential Rapid Development tool would need to have in order to speed up our delivery. The list included elements like:
- Auto-generation of UI and services’ code from data model with an ability to easily integrate it with existing code or refresh the code whenever the model changes;
- Different controls should be used for different field types and it should be possible to adapt the generated code to custom needs;
- Built-in support for validation and control over visibility of attributes in the UI (ideally through some form of aspects like annotations on data model);
- Filtering, sorting and paging of data should be handled OOTB;
- Optionally UI should be responsive and have an option to override styling;
- Security should be built-in and customizable;
- There should be a possibility to add audit trail support easily;
- Ideally the tool should support creation of SPA, be open source with access to its source code;
- Have a live community support, good knowledge base and be still evolving (we don’t want obsolete software);
- Easy and intuitive to use, while generating manageable code (we don’t like spaghetti code).
In our research we focused on ASP.NET MVC and SQL Server as a lot of our potential customers prefer this technology stack. We shortlisted nine tools, however seven had to be rejected as they did not satisfy our critical list of desirable features.
This is a commercial automation tool written in VB6 (yikes!) from the large “Maker” family of products (PHPMaker, ASPMaker, PayPal Shop Maker, JSPMaker). It is complicated to use, with hundreds of options configurable through its “Win95 look” forms. It generates spaghetti code (with SQL queries hardcoded into ASP.NET Razor pages) and whole tool seems like overkill for our needs.
Scaffolding framework that lets you create data-driven ASP.NET Web applications. However this technology is obsolete as last updates are from 2008.
An ASP.NET CRUD Application Framework developed with MVC 5, WebApi2, and AngularJS. The toolset was promising, but it turned out to be unpopular (1180 downloads) and rather “dead” with last update in Nov 2014. Moreover it is difficult to use, reminds poor version of ASP.NET Boilerplate, uses old versions of libraries and its documentation is meagre.
This is a web’s scaffolding tool for modern web applications. It is just a generation engine, like T4 template engine in Visual Studio and itself comes without templates we could use to solve our needs. Therefore, we crossed it out.
Nintex is a very powerful tool for improved workflow capabilities within SharePoint. As it is strictly dependent on SharePoint we crossed it out as well. 🙁
It used to be a leading ASP.NET code generator in 2013, but is not any more according to the comments here and .NET Rocks interview with Jay Schmelzer (the discussion about LightSwitch starts around 5th minute). Jay (Director of Program Management on the Visual Studio Team) said that direction taken by Microsoft in this product, i.e. generation of the next level of abstraction in UI is not promising. A developer or user of such product wants to shape layout and syntax of the generated C# or HTML code and not be limited by the framework, libraries or types of controls supported by the generator. The scaffolding frameworks are the future as they “only” help you to write the code, but it is still developer’s code, so he/she is free to swap libraries or controls as they wish.
This left us with only two options, either K2 forms or ASP.NET MVC Scaffolding.
This is a fully fledged development platform (a lot more than scaffolding) with its own IDE (see developer experience in this demo). It has good documentation, supports workflows, reporting and analytics, content management and much more. It is really powerful, SharePoint-like tool. Unfortunately, it is expensive (some forums mention fixed price tag of over $10k)! Moreover, it would require a K2 developer skillset as the tool is a dev platform on its own.
Finally, our leader! Although it does not meet all of our needs, it is lightweight, extendable and easy to integrate with an existing solution. Based on well-known T4 templates rather than some “heavy” abstractions. The scaffolding frameworks are also the “generators” of the future according to Microsoft (see above interview with Jay).
The only downside is no out of the box data filtering support (although one can find a filtering component on the nuget). We strongly encourage you to try it on the next occasion! 🙂
For those interested in details of comparison, here is a spreadsheet with scoring of both compared tools (unfortunately, only in Polish).
Tomek S. & Konrad L.