uigen.exe
uigen.exe
is a command line tool for generating a re-motion web application from domain object classes, as found in one or more domain object assemblys.
As the PhoneBook tutorial explains, a domain object class essentially is a set of properties (and attributes). Here is the sample Person
class from the PhoneBook tutorial:
public class Person : BindableDomainObject { [StringProperty(MaximumLength=60)] public virtual string FirstName { get; set; } [StringProperty(MaximumLength=60, IsNullable=false)] public virtual string Surname { get; set; } public virtual Location Location { get; set; } [DBBidirectionalRelation("Person", SortExpression="CountryCode, AreaCode, Number, Extension")] public virtual ObjectList<PhoneNumber> PhoneNumbers { get; set; } }
For managing such a person object in a web application, uigen.exe
generates two types of forms:
- a data entry form for editing a single
Person
object (anEditPersonForm.aspx
) - a page for listing all
Person
objects in the database (aSearchResultPersonForm.aspx
)
Here are illustrations for each.
The EditPersonForm
in the browser
The SearchResultPersonForm
in the browser
uigen.exe
saves you a lot of work, but there is still room for improvement in the generated application. As you can see in the pictures:
- The extra
DisplayName
must be removed manually - Lack of features (how to add some of those is explained in the PhoneBook tutorial)
- No globalization – the "en" are placeholders, because
uigen.exe
what strings you want for property identifiers likePhoneNumber
uigen.exe is based on templates
re-motion web applications share a lot of code. For this reason, templates are expanded for each file in the resulting web application project (like
PhoneBook.Web
). The resulting project is mirrored by the original template project, i.e. a directory tree with one template for each generated target file. The following tech-note is dedicated to the subject of how this mechanism works and how templates are expanded, and the elements of the (home-grown) template language: What uigen.exe does.