Лекция - singularis lab · dependency injection . ... • inversion of control –...

Post on 17-Aug-2020

15 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Образец заголовка

• Образец текста

– Второй уровень

• Третий уровень

– Четвертый уровень

» Пятый уровень

Тема: Лекция № 6

1. Слои приложения

2. Паттерн MVP

3. Dependency Injection

Образец заголовка

• Образец текста

– Второй уровень

• Третий уровень

– Четвертый уровень

» Пятый уровень

Что есть хорошая программа?

• Легкая поддержка

• Масштабируемость

• Повторное использование

• …

Образец заголовка

• Образец текста

– Второй уровень

• Третий уровень

– Четвертый уровень

» Пятый уровень

Многослойная архитектура

Наиболее распространенный случай –

трехслойная архитектура:

1. Слой логики представления

2. Слой бизнес-логики

3. Слой данных

Образец заголовка

• Образец текста

– Второй уровень

• Третий уровень

– Четвертый уровень

» Пятый уровень

Слой логики представления

• Интерфейс пользователя (UI)

• Может существовать несколько

реализаций для различных платформ

Образец заголовка

• Образец текста

– Второй уровень

• Третий уровень

– Четвертый уровень

» Пятый уровень

Слой бизнес-логики

• Содержит реализацию функционала

системы.

• Получает запросы от пользователя

(через UI), взаимодействует со слоем

данных.

Образец заголовка

• Образец текста

– Второй уровень

• Третий уровень

– Четвертый уровень

» Пятый уровень

Слой данных

• Хранение данных (БД)

Образец заголовка

• Образец текста

– Второй уровень

• Третий уровень

– Четвертый уровень

» Пятый уровень

MVC

• Model

• View

• Controller

Образец заголовка

• Образец текста

– Второй уровень

• Третий уровень

– Четвертый уровень

» Пятый уровень

MVP

• Model

• View

• Presenter

Образец заголовка

• Образец текста

– Второй уровень

• Третий уровень

– Четвертый уровень

» Пятый уровень

Пример реализации MVP в WinForms

Образец заголовка

• Образец текста

– Второй уровень

• Третий уровень

– Четвертый уровень

» Пятый уровень

Замена уровня представления на WPF

Образец заголовка

• Образец текста

– Второй уровень

• Третий уровень

– Четвертый уровень

» Пятый уровень

DI, IoC

• Inversion of Control (инверсия

управления)

• Dependency Injection (внедрение

зависимостей)

• DI-контейнер

Образец заголовка

• Образец текста

– Второй уровень

• Третий уровень

– Четвертый уровень

» Пятый уровень

IoC

• Inversion of Control – абстрактный

принцип, набор рекомендация для

написания слабо связанного кода.

Образец заголовка

• Образец текста

– Второй уровень

• Третий уровень

– Четвертый уровень

» Пятый уровень

DI

• Dependency Injection – одна из

реализаций IoC-принципа.

Образец заголовка

• Образец текста

– Второй уровень

• Третий уровень

– Четвертый уровень

» Пятый уровень

DI-контейнер

Это библиотека или фреймворк, которая

упрощает и автоматизирует использование

подхода инверсии контроля.

Примеры:

• Unity

• Autofac

• Ninject

Образец заголовка

• Образец текста

– Второй уровень

• Третий уровень

– Четвертый уровень

» Пятый уровень

Порядок работы

1) Создать экземпляр ядра Ninject

IKernel ninjectKernel = new StandardKernel();

2) Конфигурирование ядра

ninjectKernel.Bind<IValueCalculator>().To<ValueCalculator>();

3) Использование

IValueCalculator calc = ninjectKernel.Get<IValueCalculator>();

Образец заголовка

• Образец текста

– Второй уровень

• Третий уровень

– Четвертый уровень

» Пятый уровень

Цепочки зависимостей

public interface IDiscountHelper

{...}

public class DefaultDiscountHelper : IDiscountHelper

{...}

public class ValueCalculator : IValueCalculator

{

private IDiscountHelper discounter;

public ValueCalculator(IDiscountHelper discountParam)

{

discounter = discountParam;

}

}

Образец заголовка

• Образец текста

– Второй уровень

• Третий уровень

– Четвертый уровень

» Пятый уровень

Области действия

• InTransientScope()

• InSingletonScope()

• InThreadScope()

• InRequestScope()

Образец заголовка

• Образец текста

– Второй уровень

• Третий уровень

– Четвертый уровень

» Пятый уровень

OnActivation/OnDeactivation

• Позволяет создавать код, который

будет выполняться после создания и

перед диспозом объекта.

Bind<IClassA>().To<ClassA>()

.OnActivation( x => x.ActivationMethod() )

.OnDeactivation( x =>

x.DeactivationMethod() );

Образец заголовка

• Образец текста

– Второй уровень

• Третий уровень

– Четвертый уровень

» Пятый уровень

Спасибо за внимание!

Образец заголовка

• Образец текста

– Второй уровень

• Третий уровень

– Четвертый уровень

» Пятый уровень

Ссылки

• http://outcoldman.com/ru/archive/2010/02/22/%D0%BF

%D0%B0%D1%82%D1%82%D0%B5%D1%80%D0%B

D%D1%8B-mvc-mvp-%D0%B8-mvvm/

• http://habrahabr.ru/post/131993/

• http://professorweb.ru/my/ASP_NET/mvc/level2/2_3.php

• http://professorweb.ru/my/WPF/documents_WPF/level36

/36_4.php

Образец заголовка

• Образец текста

– Второй уровень

• Третий уровень

– Четвертый уровень

» Пятый уровень

Install-Package Ninject -version 3.0.1.10

Install-Package Ninject.Web.Common -

version 3.0.0.7

Install-Package Ninject.MVC3 -Version

3.0.0.6

top related