By now you know what an O/R Mapper is if you're reading my blog -- but what about a UI Mapper? Maybe it would be more correct to call it an O/UI Mapper, for Object / User Interface Mapper, but since I'm the one making up the term (as far as I know) then I'll just call it a UI Mapper.
So what is a UI Mapper? First, lets briefly review what an O/R Mapper is, so we can compare it. An O/R Mapper lets you map an entity/business class, along with its fields, to/from a database so that you do not have to write (nor generate) any data retrieval/persistence code/sql at all. This lets you focus on your business logic, while having the boring CRUD automatically handled, as well as allowing you to seamlessly target multiple databases if you need that flexibility. All of this is made possible through a set of "mappings", either in xml or through attributes.
OK, so what is a UI Mapper? A UI Mapper lets you map an entity/business class, along with its properties, to/from a user interface so you do not have to write (nor generate) most of the UI. I say most, since you will still want to be able to control the basic "template" of your UI, but you should not have to keep creating the same old boring list and edit screens all the time. This will again let you focus on your business logic, as well as making it possible to target both Web and Windows interfaces, all through yet another set of "mappings", preferably in xml.
So what does a UI Mapper actually do? It should allow you easily “define” list and edit screens. List screens should expose sorting, filtering, and paging, as well as things like alignment and formatting. Edit screens should expose many types of controls, and custom controls, as well as data-types, validation rules, and related entities, along with inserts and read-only views. I don't think that you will be able to use a UI Mapper for every screen, but most applications have 80-90% of their screens being the same boring list and edit screens that are easy to map.
So what do you think about the possibility of a UI Mapper, especially teamed with an O/R Mapper? Or maybe you know of one that already exists, since there are some attempts that I have seen. I've got my own in beta now -- what would you like to see in order to make it truly worthwhile?