Sie sind auf Seite 1von 3


* Create multi-layer architecture for the project (back-end)

o Project.DAL

o Project.Common

o Project.Model.Common

o Project.Model

o Project.Repository.Common

o Project.Repository

o Project.Repository.Tests

o Project.Service.Common

o Project.Service

o Project.Service.Tests

o Project.MVC/WebAPI

o Project.MVC.Tests/WebAPI.Tests

* Create AngularJS (not in case of MVC) application (front-end) that will

connect to back-end

o This should be a separate project or solution

Implementation details

* async/await should be enforced in all layers (async all the way)

* all classes should be abstracted (have interfaces so that they can be

unit tested)

* IoC (Inversion of Control) and DI (Dependency Injection) should be

enforced in all layers (constructor injection preferable)

o Ninject DI container should be used (


* Mapping should be done by using AutoMapper ( <>

* Create DAL project using EF 6 or above with Code First approach (EF Power
Tools can be used)

o <> Part 1 What is Entity Framework

o <> Part 3 Entity Framework Code
First Approach

* Project.Common should be cross-cutting project containing utility classes

* *.Common projects should contain contracts (interfaces) for layers

* Repository project should implement the following

o Generic repository -

o Unit Of Work - <> &

* Service project

o use composition pattern with repositories -inject them through the

constructor - <>

o service methods should only use model contracts (interfaces) as input and
output parameters

* MVC/WebAPI project

o this is DI composition root so you should install Ninject here

o use controllers with async methods

o return proper Http status codes

* AngularJS

o enforce the following folder structure -


o enforce the following naming conventions -


o use UI router for navigation -


Candidate should open a dedicated GitHub repository for the purpose of test
project and occasionally report for code review.