Domain model for an online WYSYWG webpage generator / runtime

Posted by CharlieBrown on Stack Overflow See other posts from Stack Overflow or by CharlieBrown
Published on 2011-01-13T00:48:05Z Indexed on 2011/01/13 0:54 UTC
Read the original article Hit count: 159

Hi all,

I'm using C#, MVC, NHibernate and StructureMap as my IoC container, and need some ideas regarding my domain model.

The application I'm working has two parts: an Authoring part and a Runtime part. The idea is to allow the user to create a webpage in Authoring (mostly a form actually) by choosing from a set of predefined controls. That webpage will be later used as a form in a call center environment (Runtime part), or may be used in an intranet portal, etc. Basically something similar to what a CMS would do. The difference is, of course, that the webpage/form the author generates will be used and fulfilled in runtime, and that authros should be able to freely create the webpage they want without limitations.

I have a draft working model that allows a RunController to iterate over the ScriptPage (my class for the "generated webpage") Controls collection and uses partial views to render each of them. Works kind of fine. Basically I have a common ScriptControl class, and then I can create for example a TextInputControl or a DropDownControl by inheriting from that base class.

I can also figure out the Authoring part of the app, although that will surely be fun in itself for sure. :)

The biggest problem I have now is persistance. In order to be flexible, I want to be able to add more controls, and template controls (think of an Address composite control) in sepparate DLLs, so I think having a relational model that handles very possible control is not the way to go.

My current thinking is using a kind of ObjectStore: binary-serializing the ScriptPage object that contains the List collection and deserializing at Runtime, but I'm not sure how good will it work with NHibernate and how good the performance will be. Serializing a small "page" with 10 controls results in 7964 bytes, for example.

Any ideas out there?

Thanks in advance, excuse the length. ;)

© Stack Overflow or respective owner

Related posts about c#

Related posts about nhibernate