Architecture

This page describes Eneta portal architecture and technical design. This document is draft and is targeted to portal development team. As lower layers are not fully in place yet this document is subject to frequent changes. Official documentation will be published with official releases.

Packets

Eneta portal contains the following packages:

  • EnetaMvc.ApplicationServices – services that are used by client applications. This layer should hide domain logic and operations for client applications.
  • EnetaMvc.Azure.Deployment – deployment package for Windows Azure environment.
  • EnetaMvc.Azure.Services – Windows Azure implementation of application services.
  • EnetaMvc.Core – contains business classes and interfaces for repositories and internal services.
  • EnetaMvc.Data.NHibernate – contains NHibernate based repository implementations.
  • EnetaMvc.Data.Schema.MSSQL2008 – SQL Server database project for database schema and objects.
  • EnetaMvc.FeedAggregator – feed aggregator service that imports data from registered and approved blogs.
  • EnetaMvc.Infrastructure – contains low level classes used by other packages.
  • EnetaMvc.Validation – contains validation logic for classes that have complex validation rules.
  • EnetaMvc.Web – ASP.NET MVC based web application.

Dependencies between packages

This is how packages that offer main functionality are dependent on each other. Windows Azure specific details will be documented later.

web-app-general

Some details of current implementation

  • domain classes are hidden from applications,
  • communication between domain and clients goes through applications services layer and DTO-s defined there,
  • as we have classes with complex validation rules we validate all objects in application service layer,
  • application service layer offers interface based services that are used in client applications,
  • all errors are reported back from application services layer to callers (this way we can report all non-exceptional errors without using exceptions),
  • application services layer uses repositories defined in DAL and implemented in NHibernate library,
  • we are using structuremap and XML-based mappings for mappings between interfaces and implementation classes,
  • all common classes and interfaces that are used by different layers are defined in infrastructure library,
  • in MVC application we are using thin controllers and fat models.

Last edited Jan 26, 2012 at 11:22 AM by gpeipman, version 5

Comments

No comments yet.