2014-12-02 2 views
1

Я начинаю новое приложение в WPF, и я хочу, чтобы у него была хорошая архитектура, чтобы он мог быть обслуживаемым. Я использую Entity Framework и то, что я планировал до сих пор.Архитектура WPF с бизнес-слоем и DAL

• View Layer: один проект (запуск) с начальным представлением и основными меню. Различные проекты для каждого типа вида, например, если у меня есть представления, связанные с книгами, тогда у меня будет проект под названием BooksView со всеми представлениями.

• Бизнес-уровень: один проект для каждого типа бизнес-класса, например BusinessBooks. У каждого из них будет репозиторий с конкретными операциями и любыми помощниками для выполнения вычислений, если это необходимо.

• Данные Асесс Слой: Он содержит папку с именем Entity Framework с DbContext и Т4 генерироваться классов и с классом по имени ContextCreator, который имеет следующий код:

public class ContextCreator : IDisposable 
{ 
    private MesaOperativaDB context; 

    public ContextCreator() 
    { 
     context = new MesaOperativaDB(); 
    } 

    public MesaOperativaDB getContext() 
    { 
     return context; 
    } 

    public void Dispose() 
    { 
     context.Dispose(); 
    } 
} 

Тогда вид будет использовать статическое хранилище любого проекта бизнес-уровня, который необходим, и это хранилище будет использовать класс выше, чтобы получить DbContext и использовать его как это:

public static List<Novedades> GetNovedades() 
    { 
     using (ContextCreator db = new ContextCreator()) 
     { 
      IQueryable<Novedades> novedades = db.getContext().Set<Novedades>().AsQueryable(); 
      return novedades.ToList(); 
     } 
    } 

Является ли такой подход ничего хорошего? Спасибо вам заранее, ребята.

+1

Если это приложение на стороне клиента только тогда, это довольно хорошее разделение проблем – liquidsnake786

ответ

6

Хотя я не совсем уверен в вашей шкале приложений, но мне кажется, что вы начали на правильном пути для разделения проблем.

Но вам может потребоваться переосмыслить, если создание отдельного проекта для каждой категории просмотров не представляет излишней сложности.

Опять же, я не уверен, что вы новичок в WPF, но для слоя «Вид» для лучшей ремонтопригодности, ослабления сцепления и, следовательно, проверки и т. Д., MVVM - лучший выбор для организации вещей на месте. Для получения MVVM на месте вы можете handcode все с нуля или есть хорошие фреймворки, как:

MVVM Lite

Assisticant

Кроме того, если вы планируете в сторону относительно большой (неспециалиста термин !!)/приложения корпоративного класса, и поскольку вы ищете удобное для пользователя гибкое приложение, вы можете использовать PRISM framework from Microsoft. Prism Guidance and downloadable PDFs etc.

После того, как вы закончили работу над частью View, вам нужно сосредоточиться на Validations для своего приложения и будете ли вы выполнять проверки в ViewModel или в объектах домена. В структуре Assisticant есть встроенный в нее хороший механизм проверки подлинности в домене.

Для уровня доступа к данным, поскольку вы решили пойти с EF, из моего понимания до сих пор Unit-Of-Work with Repository pattern значительно помогло бы вам в расширении возможностей, возможности тестирования и т. Д.

Если вы планируете высокую степень контроля над модулем и свободную связь вашего приложения, вам необходимо рассмотреть возможность инверсии управления и зависимостей в зависимости от подходящей структуры.

Here вы можете проверить структуру приложения WPF, чтобы понять, как организовать различные области приложения WPF в многоуровневом подходе.

Надеюсь, что это поможет вам копать дальше.

Смежные вопросы