.NET Web application framework.
The pure multi-tier Architecture based on business Entities and OOP.
Out-of-the-box ready for IIS 6.0, IIS 7.0 (In vista keep in mind the UAC traps!)
Web-application uses '1' CSS definition for ALL browsers: Chrome, FireFox, IE 7, IE 8 and Opera (and also one adjusted for special IE 6 world)
MasterPages and WebControls result in the XHTML 1.1 valid code!
Localization in run-time is powerful then before. Do you have existing database which cannot be changed? Simply change the ILanguageDao and ITranslatorDao mapping – to XML providers.
There are two base types – WebController which implements powerful binding (based on culture for dates, numbers etc.) and Extends the URL helper with new abilities. This could be used for the application parts like, documentation, reporting, multi-entity views etc.
The second is EntityController which implements base CRUD stuff for Entity management. Extending (overriding) its operations and actions will in most cases cover in all your needs. Any special actions (e.g. import the list of entities from xml or .csv) is upon you.
The fundamental design pattern of every piece of code in the Catharsis framework is the use of the “VIRTUAL” keyword. The final code is in your hands. You can override EVERYTHING. ‘Self-genius-complex’, like SEALED or at least ‘not-virtual’ property or method, won’t be ever used in the Catharsis framework.
What ever should be rendered – store in the IModel and pass it to the Web control.
But maybe even more important is the power of the every Controller method: BindModel(object). This operation is able to take any object and bind its properties (of the base value types plus IList<int> and IList<string>) with information coming from Form or QueryString. If there is any parameter named “SecondName” and object has property “SecondName” – this operation will bound it. Do not worry about cultures for dates and numbers!
This is the unique pillar of the Catharsis Architecture. Any business rules of any type (delete checks, property length, null values etc.) are placed inside the IFacade<entity> objects. This separation of concern will guarantee the extremely flexible maintenance, extensibility and reuse. Is there a need for batch operations? Import, Export, Synchronizing, Email notification… Create new Project and reuse the Business layer with all rule checks.
Design pattern Prototype is the central point of the objects creating. Impelemnt the IFacade<entity>.CreateNew() operation and grant that all “default” properties are filled. This layer among other advantages allows appending other persisted entities (e.g. default Country and Currency object for a new Contract)
Authorization, Navigation, URL parameters injection, logging, Extending and many more – this is the power of ‘separation of conern’. Use MVC design pattern and profit from known declared IModel properties, which could be AOP adjusted.
Important: Remove the 'AccessRight' filters from the BaseEntityController and BaseWebController (the .Controllers project) – if you do not want to use the Catharsis built in authorization! Every action will be from that moment accessible without any restriction. Later implement you own Authorization filter – and decorate these two base Controllers in the .Controllers project. Easy! Extremely easy to extend and adjust to your needs.
Database mapped via NHibernate 2.1; XML accessed via powerful Linq to XML.
Every entity IDao<entity> grants the common interface for Get and Set operations like Add(), Update(), Delete(), GetById().
The abstract GetBySearch(searchParameters) operation is the right place for implementing the User demanded filter criteria.
Base test class Sets the Context, Principal, entities Facade and init NHibernate
Adjust the Guidance