21
Образец заголовка Образец текста – Второй уровень Третий уровень Четвертый уровень » Пятый уровень Тема: Лекция № 6 1. Слои приложения 2. Паттерн MVP 3. Dependency Injection

Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

  • Upload
    others

  • View
    14

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

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

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

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

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

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

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

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

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

2. Паттерн MVP

3. Dependency Injection

Page 2: Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

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

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

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

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

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

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

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

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

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

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

• …

Page 3: Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

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

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

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

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

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

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

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

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

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

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

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

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

Page 4: Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

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

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

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

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

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

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

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

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

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

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

Page 5: Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

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

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

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

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

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

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

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

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

системы.

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

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

данных.

Page 6: Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

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

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

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

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

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

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

Слой данных

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

Page 7: Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

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

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

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

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

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

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

MVC

• Model

• View

• Controller

Page 8: Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

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

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

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

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

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

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

MVP

• Model

• View

• Presenter

Page 9: Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

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

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

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

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

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

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

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

Page 10: Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

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

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

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

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

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

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

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

Page 11: Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

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

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

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

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

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

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

DI, IoC

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

управления)

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

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

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

Page 12: Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

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

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

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

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

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

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

IoC

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

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

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

Page 13: Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

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

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

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

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

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

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

DI

• Dependency Injection – одна из

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

Page 14: Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

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

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

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

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

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

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

DI-контейнер

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

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

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

Примеры:

• Unity

• Autofac

• Ninject

Page 15: Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

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

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

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

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

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

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

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

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

IKernel ninjectKernel = new StandardKernel();

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

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

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

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

Page 16: Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

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

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

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

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

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

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

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

public interface IDiscountHelper

{...}

public class DefaultDiscountHelper : IDiscountHelper

{...}

public class ValueCalculator : IValueCalculator

{

private IDiscountHelper discounter;

public ValueCalculator(IDiscountHelper discountParam)

{

discounter = discountParam;

}

}

Page 17: Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

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

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

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

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

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

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

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

• InTransientScope()

• InSingletonScope()

• InThreadScope()

• InRequestScope()

Page 18: Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

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

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

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

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

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

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

OnActivation/OnDeactivation

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

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

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

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

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

.OnDeactivation( x =>

x.DeactivationMethod() );

Page 19: Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

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

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

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

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

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

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

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

Page 20: Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

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

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

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

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

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

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

Ссылки

• 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

Page 21: Лекция - Singularis Lab · Dependency Injection . ... • Inversion of Control – абстрактный принцип, набор рекомендация для написания

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

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

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

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

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

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

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