V
V
Vadim Ivanenko2015-12-29 01:04:22
.NET
Vadim Ivanenko, 2015-12-29 01:04:22

How to organize the architecture of the Project Management System applications?

For training purposes, we make a project management system like Pivotal or Jira. We use .NET C#, Entity Framework.
Requirements:
- REST API web service
- Client for Windows
- Web client
- Clients for mobile devices (Windows Phone)
- Since the project is educational, there is a simplified version for WPF - working with data without a web server (Spanish MVVM)
Questions :
- What layers should such a system consist of?
What should be in each layer?
Now I understand that there should be a data access layer (DAL). What should be inside it? What interfaces should the DAL ultimately provide?
- Generated models and DbContext(s)?
- Repository(s)?
- If the WPF client works directly with the DAL without a server, what should the repositories look like to use MVVM? Will it be possible to bind to methods?
- What should be followed when creating more than one context and / or repository?
Studying .NET, I see a large number of different types of projects (ASP.NET, MVCx, WCF). I would like to know all this terminology and modern trends in the field of .NET.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
P
Pavel Elizariev, 2015-12-30
@supra7sky

When solving this problem, I recommend that you use a three-layer architecture .
The presentation layer in your case is a windows client and a web client.
The domain layer is the domain objects themselves and the web services.
The data layer is a mapping of the subject area in the database.
I recommend organizing the data layer based on Entity Framework 7 (beta), since the latest version supports dependency injection . It will be just right for a training project, at the same time learn a new technology.
To provide data, I recommend using the Factory pattern and the Repository pattern .
I recommend hooking WPF clients through services anyway, so as not to violate the overall architecture. Visual Studio itself will generate wrapper classes for you to call services. You can already become attached to their methods.
More than one context needs to be created when you have a heterogeneous data source structure. It is better to avoid such a situation when designing a project from scratch. However, in adult projects, sooner or later additional contexts appear.
To replenish the piggy bank of knowledge on the topic of software design, I highly recommend reading Martin Fowler - Enterprise Application Patterns . Almost all of your questions are answered in this book.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question