Catharsis 4.5, catarsa.com

A versioning of the Catharsis framework was adjusted to follow the .NET version in the Major release number (4.)

VS 2012, .NET 4.5, REST Web API

Web-application framework, multi-tier (5-tier) Architecture (SQL or XML is persitence, DAO as the only access point to get/store data -NHibernate 3.+, Facades as the only Business rule validation place, MVC pattern (Views on the RAZOR only) and UI (HTML, CSS and JQuery).


The Catharsis framework has finally its own portal http://catarsa.com, where you can find the latest release
http://catarsa.com


Catharsis 4.0

ASP.NET MVC 3.0 RC - Razor,
The Web-application framework gathering the best practices and design patterns.
Strongly OOP, multi-tier Architecture, NHibernate 3.0, XML, ADO.NET
VS 2010, .NET 4.0 (Contracts, Covariance, Named and Default parameters)

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

Needed Prerequisites:

 

  • Catharsis 4.0 vsix (Guidance installation package for VS 2010):
  • VS 2010 - C#
  • GAX 2010 (GAT 2010)


Catharsis_show.png

  • Catharsis 4.0 source code:

all above &

  1. GAT 2010


Optional:

  1. ASP.NET MVC 2.0
  2. NHibernate

New features 4.0

- Validation rules declared once on Business tier, reused also on UI for JQuery.validation
- New simplified WebControls supporting any needs (valueTypes, Reference types, culture formatting)
- Built in sample in every new solution! Observe and be inspired.

New features 2.7

- Built in Factory for Service Locator based on conventions (IUserDao - UserDao)
- Built in Factory for DI, (IoC) - instead of Dao and Facade injects the LinFu proxies!
-- proxy, when firstly accessed, calls for the real Dao or Facade
-- improved performance, simplified syntax
- Removed all lock{}, while assuring thread safety!
- Increased performance for Localization
- Increased performance on ListWC rendering
- code clean up

New features 2.0

- Simplified and cleaned up previous stuff
- reduced namespaces
- ADO.NET support
- XML as DataSurce support (e.g. Localization could be placed in XML, the rest is using exisiting StoredProcedures)
- New ID types available (int, decimal, short, Guid, string) across all layers
- Base infrastructure classes split into Read and Full (R/W)
- Removed MS JS, the full power is now based on JQuery
- TryParse extension on any string!

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

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 ...

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 May 8, 2013 at 5:58 PM by Radim, version 68