Catharsis 1.2 - Anniversary release

*The best practice gathering web-application framework.
Strongly OOP, multi-tier Architecture, ASP.NET MVC 1.0, NHibernate 2.1*

for download select Release tag http://www.codeplex.com/Catharsis/Release/ProjectReleases.aspx

Needed Prerequisites:
  • Catharsis 1.2 msi (Guidance installation package):
  1. VS 2008 - support for C# and VB.NET (LinqToXML); .NET 3.5 SP1
  2. Guidance Automation Extensions

Catharsis_show.png
  • Catharsis 1.2 source code:
all above &
  1. Guidance Automation Toolkit for VS 2008

Optional:
  1. ASP.NET MVC 1.0
  2. NHibernate (XSD in VS install folder to support IntelliSense)

New features 1.2

- Serializable session - all items (entities and search objects) are Serializable (ready for web-farming)
- Prototype desing pattern in action (every IEntityFacade<T> provides CreateNew<T>() - you are managing entity incubator on one place)
- Performance increase - lazy loading for Facades, Models, Daos - only when needed (Lazy Locator design pattern for Getters)
- Native support for MultiOption list in smart binder
- Pre-created skeleton for Unit Tests (use them!)
- CodeLists abilities extended (using smallint and tinyint as ID)
- User friendly List view allows opening detail/edit in a new window. Row count per page adjustable for every entity on search screen.
- application automated Recovery when SQL server restarts
- AOP for logging tracks the session size!
- More efficient and simplified ApplicationRole provider (same for external providers via CommonRoleProvider)
- DAO Methods for extending search criteria moved to extensions

New features 1.0.1

- powerful WebControls for large reuse and quick development
- powerful ToDisplay() (e.g. decimal is by default "N2", int "N0" date is "d" ...)
- smart Binders - able to convert formated strings to decimals, dates ...
- improved static locking

New features 1.0

Guidance supports
- Persistent - standard entity (Subject, Chair, Contract) it could be Tracked
- CodeList - few values not so changing (ContentType for files)
- ICodeList - light object with Code, Name and IsVisible property (it will be mostly used)
Lazy columns imitation: search.PropertyList will select only demanded columns
Improved Encoding to avoid cross site scripting
Messages now Logs everything. Messages are more powerful
Log4Net is by default switched on and use in a new solution

Catharsis 0.9.5

Based on Microsoft .NET 3.5 SP1 & ASP.NET MVC (RC1)
NHibernate 2.0.1

Nothing else needed, All other stuff is provided directly by Catharsis framework and Catharsis guidance. The core libraries are named ProjectBase to allow smoother introduction to your organization. Catharsis is Open Source.
  • Catharsis Architecture is fundamentally OOP
  • Contains TreeView - (First) 100% MVC WebControl
  • Provides direct built-in Export to Excel for every entity
  • Navigation is managed in one simple Menu.Config xml file
  • Menu.Config xml file (same for navigation) provides
  • Guidance creates: Complete Web Solution on-one-click
  • Guidance creates: Entity infrastructure at one run (Entity, Data, Business, Model, Controller, View, Test)
  • Guidance creates: Entities can be common (Persistent) or Tracked
  • Guidance creates: Entity's infrastructure without MVC at one run (Entity, Data, Business, Test)
  • Guidance creates: CodeList infrastructure at one run (Entity, Data, Business, Model, Controller, View, Test)
  • Guidance creates: MVC for not-entity handling e.g. Reports, Documentation (Model, Controller, View,)
  • Messages collection introduced (replacing ErrorData) with Error, Warning and Information states
  • Translator provides sorting on translated-phrases, also searching
  • UI Layout improved (TreeView as navigation, Quick actions as Icons)
  • Master page reorganized to parts and their smart but small web controls
  • Strong support for KEY shortcuts (Almost every action can be ran as ShiftAltF = find/search)
  • Paging is essence of performance - every entity is by default displayed as a list - max rows == 20
  • Paging miracle on detail level. User's can navigate to Next or Previous entity
  • CodeLists extended with IsVisible attribute, which is applied on the GetAll() method (source for comboboxes
  • Direct built-in support for Files uploading (any Content-Type) and quick download (based on contentType browser can decide who will open)
  • Every entity Derives from base class: Add, Update, Select, Delete
  • Entity displayed in the List can be sorted by any property (e.g. Subject.Address.City)
  • Override one method ListToExcel() and you can gain direct export to excel for every entity
  • Constants placed in Str class reorganized. Every entity should use Str.Business.Entity constants
  • Base classes moved from project to the ProjectBase
  • Base Models now contains other Models (Composition) e.g. TreeViewModel, ListModel, MasterModel ...
  • Two controllers bases - Entity (for Persistent and Tracked entities) and Web (form MVC like Reports, Documentation)
  • Interfaces for Controllers and Facades extended with setters for DI
  • Object Factory rewritten to Factory provider method to allow simple addon like Spring.NET...

Online documentation:
part I: http://www.codeproject.com/KB/applications/Catharsis.aspx - New solution
part II: http://www.codeproject.com/KB/applications/Catharsis_part2.aspx - Home page observation
part III: http://www.codeproject.com/KB/applications/Catharsis_part3.aspx - Roles and users
part IV: http://www.codeproject.com/KB/applications/Catharsis_part4.aspx - Localization, translation
part V: http://www.codeproject.com/KB/applications/Catharsis_part5.aspx - Enter into Catharsis, new Entity
part VI: http://www.codeproject.com/KB/applications/Catharsis_part6.aspx - Framework Architecture
part VII: http://www.codeproject.com/KB/applications/Catharsis_part7.aspx - Entity layer
part VIII: http://www.codeproject.com/KB/applications/Catharsis_part8.aspx - Data layer
part IX: http://www.codeproject.com/KB/applications/Catharsis_part9.aspx - Business layer

part XIII: http://www.codeproject.com/KB/applications/Catharsis_part13.aspx - Tracking, PAX design pattern
part XIV: http://www.codeproject.com/KB/applications/Catharsis_part14.aspx - Dependency Injection


Catharsis provides complete Guidance, which can help you:
1) create solution (all needed libraries)
2) create all needed classes for every Entity object

Catharsis has real multi tier structure
  1. Entity: Layer with business objects (person, position, contract, supplier)
  2. Common: Interface gathering layer. Every upper tier has its interfaces published here.
Also Factories are stored here (DaoFactory, FacadeFactory, ModelFactory, ControllerFactory)
Same applies to Providers - Role, Membership, ResourceManager, GlobalizationManager ...
  1. Data: Every entity has its Dao (data access object). And data layer with these daos is the only gate, which can access the storage (DB) -> Almost everything is done by NHibernate :)
  2. Business: The key middle tier with Business rules, access rights, checking, AOP filters ... all of them are applied here.
  3. Model: Containers for data exchange for MVC pattern.
  4. Controllers: These powerful objects has only one purpose! correctly fill Models and therefore communicate with Business layer.
  5. UI-Web Vies which are responsible for displaying the data stored in Models, and process user requests.

Every layer is based on inheritance and encapsulation. Base classes cover must of the needed methods.
Implementation is therefore very simple ...

Catharsis also provides Tracking. To use this ability only derive your classes from Tracked object, which implements PAX design pattern
(http://www.codeproject.com/KB/applications/Catharsis_part13.aspx)

Localization is based on DB storage (not .resx) which allows changes in runtime
and also easy way for translator to access data.
User can switch the UI translations by browser setting or by clicking on available language.

Role management has one big - very big - difference from ASP.NET RoleProvider. It is based on 'CurrentRole'.
Every user has to select one role from his role-set.
And only selected 'CurrentRole' is then compared against access rights.
Business logic and access is therefore based on Roles - Unique roles - not on the mishmash for users with more roles.

Enjoy Catharsis
Radim Köhler
Last edited Jun 10 at 6:02 AM by Radim, version 50

 

Want to leave feedback?
Please use Discussions or Reviews instead.

Archived page comments (5)

Updating...
© 2006-2009 Microsoft | About CodePlex | Privacy Statement | Terms of Use | Code of Conduct | Version 2009.6.1.15196