ݺߣ

ݺߣShare a Scribd company logo
Референсная архитектура
приложения на ASP.NET MVC

        Андрей Майоров
            BYTE-force
        twitter.com/xorets
MVC
Model-View-Controller
• Разделяет данные и представление
• Модель: активная или пассивная


                  Controller




         View                  Model
Holy war
• Где держать бизнес-логику?
• Можно брать доменные объекты в модель?
Модификации: MVP
• Model-View-Presenter


                  Presenter




           View               Model
Модификации: MVVM
• Model-View-ViewModel



      View        ViewModel   Model
ASP.NET
Олдскульный .ASPX
• <% … %>
• Code behind
• Web controls

• Раздутый HTML на выходе
Олдскульный .ASPX

// Hello World in C#
class HelloWorld
{
       static void Main()
       {
              System.Console.WriteLine("Hello, World!");
       }
}
ASP.NET MVC
Контроллер

public class HomeController : Controller
{
       public ActionResult Index()
       {
              var model = …
              return View(model); // of type ViewResult
       }
}
Маршруты

routes.MapRoute(
      name: "Default",
      url: "{controller}/{action}/{id}",
      defaults: new {
              controller = "Home",
              action = "Index",
              id = UrlParameter.Optional
      } );


/home/index
Передача параметров

public ActionResult Index( int id, string x )
{ …}



routes.MapRoute(
      url: "{controller}/{action}/{id}",
      …



/home/index/123?x=red
View
• «Представление», «вьюха»
• Модель → HTML
• Отделено от контроллера
Реализация вьюхи
• Файл /view/home/index.*
• Расширения файлов:
  • ASPX → Web Forms Engine
  • CHTML → Razor
  • ... → Что душа пожелает
Demo
Шаблонный проект
Проблема: 1 метод на 1 URL
•   Огромные контроллеры
•   Нечеткие критерии группировки методов
•   Мало базовых классов
•   Сервисные методы раздувают
    контроллеры
Решение:
Только один action в
   контроллере
Один action на контроллер
• Execute()
• Исключение из правил – NextPage ()
Single responsibility principle


Kаждый объект должен иметь одну
обязанность и эта обязанность должна
быть полностью инкапсулирована в класс.




SOLID
Сложности с именами view

/View
        /Home
              /Execute.chtml
        /News
              /Execute.chtml
        /Products
              /Execute.chtml
              /NextPage.chtml
        /Product
              /Execute.chtml
Свой ViewEngine

/View
        /Home.xslt
        /News.xslt
        /Products.xslt
        /Products_NextPage.xslt
        /Product.xslt
Преимущества
•   Один контроллер – одно действие
•   Контроллеры маленькие
•   Общий функционал → в базовый класс
•   Создаем DSL*
•   Дружит с Dependency Injection*
ControllerBase
                  +Model
                  +FillCommonData()




IndexController                       ListControllerBase

+Execute()




                    NewsController                     ProductsController

                    +Execute()                         +Execute()
Правила
1. Один контроллер – одно действие
Модель
Модель
• Данные для View
• НЕ интерфейс получения/записи данных*




* — холивар варнинг
ViewModel
      vs.
Domain Objects
Типизированная модель
         vs.
    Динамическая
Typed vs. Dynamic

public ActionResult Execute()
{
       var model = new Model();
       …
       return View(model);
}



      dynamic model = new ExpandoObject();
Модель – член класса
Правила
1. Один контроллер – одно действие
2. Модель – член класса
Декларация маршрутов
Явная декларация маршрута

routes.MapRoute( name: "Home", url: "home",
      new { controller = "Home", action = "Execute" });

routes.MapRoute( name: "News", url: "news",
      new { controller = "News", action = "Execute" });




Url.RouteUrl( home ) // Returns “/home”
Правила
1. Один контроллер – одно действие
2. Модель – член класса
3. Задавайте маршруты явно
Demo
Single action controllers
Domain Specific Language
Domain Specific Language

public ActionResult Execute()
{
       CheckAccessRights( “index” );
       Model.news = SelectObjects()
             .OfType( “article” )
             .FilterPublished()
             .Execute();

      return View(Model);
}
ControllerBase
                  +Model
                  +FillCommonData()
                  +CheckAccessRights()
                  +SelectObjects()




IndexController                          ListControllerBase

+Execute()                               +PreparePagingData()




                     NewsController                        ProductsController

                     +Execute()                            +Execute()
Сервисные классы
                                  ControllerBase
                                +Model
                                +FillCommonData()
                                +CheckAccessRights()
                                +SelectObjects()




              IndexController                          ListControllerBase

              +Execute()                               +PreparePagingData()




NewsService

+GetNews()                         NewsController                        ProductsController

                                   +Execute()                            +Execute()
Demo
DSL and helpers
Правила
1.   Один контроллер – одно действие
2.   Модель – член класса
3.   Задавайте маршруты явно
4.   Делайте собственные DSL
Dependency Injection
Dependency inversion principle
Модули верхних уровней не должны
зависеть от модулей нижних уровней.
Модули должны зависеть от абстракций.

Абстракции не должны зависеть от
деталей. Детали должны зависеть от
абстракций.


SOLID
Dependency Inversion

 <<interface>>
 INewsService

 +GetNews()




 NewsServiceImpl   IndexController

 +GetNews()        +Execute()
Dependency Injection
<<interface>>
INewsService

+GetNews()




 NewsServiceImpl               IndexController

 +GetNews()                    +Execute()




                   Assembler

                +Resolve()
Указание зависимостей
• Параметры конструктора
• Свойства с атрибутами
• Правила именования полей и аргументов
Указание зависимостей

public class HomeController : Controller
{
       [Dependency]
       public INewsService NewsService { get; set; }

      public HomeController( IDatabase database ) { … }
      …
}
Настройка DI-контейнера
 • Связь между интерфейсом и реализацией*
 • Контроль за жизнью объекта

<register type="INewsService"
           mapTo="NewsService">
       <lifetime type="singleton"/>
</register>

 * Не обязательно
Demo
Dependency Injection
DI delivers
• Уменьшает связность приложения
• Помогает писать модульные тесты
• Заставляет правильно мыслить
Правила
1.   Один контроллер – одно действие
2.   Модель – член класса
3.   Задавайте маршруты явно
4.   Делайте собственные DSL
5.   Используйте DI
Редактирование
    данных
Обычный процесс
1.   Браузер запрашивает URL
2.   Сервер формирует HTML, шлет на клиент
3.   Браузер показывает HTML
4.   Пользователь редактирует данные. Submit
5.   Браузер шлет данные в POST-запросе
6.   Сервер обновляет базу, goto 2
Проблемы обычного подхода
• Сериализация-десериализация состояния
• Постоянные перезагрузки
• Трафик
Референсная архитектура приложения на ASP.NET MVC
Ajax-редактирование
1.   Браузер запрашивает URL
2.   Сервер формирует HTML, шлет на клиент
3.   Браузер показывает HTML
4.   Пользователь редактирует данные. Submit
5.   Браузер шлет данные в POST-запросе
6.   Сервер обновляет базу
7.   goto 4
JSON

// Браузер шлет серверу
{
      id: 245,
      price: 19.95
}



// Сервер отвечает
{ success: true }
Ajax delivers
• Не надо сериализовать всю страницу
• При ошибке можно повторить
• Трафик меньше на порядки
Правила
1.   Один контроллер – одно действие
2.   Модель – член класса
3.   Задавайте маршруты явно
4.   Делайте собственные DSL
5.   Используйте DI
6.   Используйте Ajax для редактирования
Референсная архитектура приложения на ASP.NET MVC
AngularJS - MVVM

// Model
$scope.id = 245;
$scope.title = “Red button”;
$scope.price = 19.95;



<!-- View -->
Price for {}: <input type=“text” ng-model=“price” />
Спасибо за внимание


   Андрей Майоров
       BYTE-force
  xor@byte-force.com
   twitter.com/xorets

More Related Content

What's hot (20)

Moxy. Из чего состоит и как этим пользоваться
Moxy. Из чего состоит и как этим пользоватьсяMoxy. Из чего состоит и как этим пользоваться
Moxy. Из чего состоит и как этим пользоваться
Yuri Shmakov
CocoaHeads Moscow. Владислав Дугнист. «Dependency Injection с Blood Magic»
CocoaHeads Moscow. Владислав Дугнист. «Dependency Injection с Blood Magic»CocoaHeads Moscow. Владислав Дугнист. «Dependency Injection с Blood Magic»
CocoaHeads Moscow. Владислав Дугнист. «Dependency Injection с Blood Magic»
Mail.ru Group
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
Technopark
Automation Functional Testing in Agile Projects
Automation Functional Testing in Agile ProjectsAutomation Functional Testing in Agile Projects
Automation Functional Testing in Agile Projects
Andrey Rebrov
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
Technopark
Разработка бизнес-приложений на OpenUI5 —Николай Надоричев, MOLGA Consulting
Разработка бизнес-приложений на OpenUI5 —Николай Надоричев, MOLGA ConsultingРазработка бизнес-приложений на OpenUI5 —Николай Надоричев, MOLGA Consulting
Разработка бизнес-приложений на OpenUI5 —Николай Надоричев, MOLGA Consulting
Yandex
Особенности разработки API / Всеволод Шмыров (Яндекс)
Особенности разработки API / Всеволод Шмыров (Яндекс)Особенности разработки API / Всеволод Шмыров (Яндекс)
Особенности разработки API / Всеволод Шмыров (Яндекс)
Ontico
Moxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииMoxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магии
Yuri Shmakov
Alasql.js - SQL база данных на JavaScript / Андрей Гершун (МАГ КОНСАЛТИНГ)
Alasql.js - SQL база данных на JavaScript / Андрей Гершун (МАГ КОНСАЛТИНГ)Alasql.js - SQL база данных на JavaScript / Андрей Гершун (МАГ КОНСАЛТИНГ)
Alasql.js - SQL база данных на JavaScript / Андрей Гершун (МАГ КОНСАЛТИНГ)
Ontico
Артемий Гарин "Выбор лучшего хранилища в Android (cпойлер: Realm)"
Артемий Гарин "Выбор лучшего хранилища в Android (cпойлер: Realm)"Артемий Гарин "Выбор лучшего хранилища в Android (cпойлер: Realm)"
Артемий Гарин "Выбор лучшего хранилища в Android (cпойлер: Realm)"
IT Event
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)
Ontico
2016-08-20 02 Антон Ковалев, Антон Кормаков. Viper. Чистая архитектура для iOS
2016-08-20 02 Антон Ковалев, Антон Кормаков. Viper. Чистая архитектура для iOS2016-08-20 02 Антон Ковалев, Антон Кормаков. Viper. Чистая архитектура для iOS
2016-08-20 02 Антон Ковалев, Антон Кормаков. Viper. Чистая архитектура для iOS
Омские ИТ-субботники
Survive with OOP
Survive with OOPSurvive with OOP
Survive with OOP
Maksym Hopei
Angular 2: Всех переиграл
Angular 2: Всех переигралAngular 2: Всех переиграл
Angular 2: Всех переиграл
Eugene Zharkov
Человекопонятные отчёты
Человекопонятные отчётыЧеловекопонятные отчёты
Человекопонятные отчёты
bearoff
Entity framework
Entity frameworkEntity framework
Entity framework
Scaiper
Andrew Borisenko "Magic of Vue.js""
Andrew Borisenko  "Magic of Vue.js""Andrew Borisenko  "Magic of Vue.js""
Andrew Borisenko "Magic of Vue.js""
OdessaJS Conf
#MBLTdev: Опыт использования MVVM в реальных проектах
#MBLTdev: Опыт использования MVVM в реальных проектах#MBLTdev: Опыт использования MVVM в реальных проектах
#MBLTdev: Опыт использования MVVM в реальных проектах
e-Legion
Выжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим ГопейВыжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим Гопей
EatDog
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Fedor Lavrentyev
Moxy. Из чего состоит и как этим пользоваться
Moxy. Из чего состоит и как этим пользоватьсяMoxy. Из чего состоит и как этим пользоваться
Moxy. Из чего состоит и как этим пользоваться
Yuri Shmakov
CocoaHeads Moscow. Владислав Дугнист. «Dependency Injection с Blood Magic»
CocoaHeads Moscow. Владислав Дугнист. «Dependency Injection с Blood Magic»CocoaHeads Moscow. Владислав Дугнист. «Dependency Injection с Blood Magic»
CocoaHeads Moscow. Владислав Дугнист. «Dependency Injection с Blood Magic»
Mail.ru Group
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
Technopark
Automation Functional Testing in Agile Projects
Automation Functional Testing in Agile ProjectsAutomation Functional Testing in Agile Projects
Automation Functional Testing in Agile Projects
Andrey Rebrov
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
Technopark
Разработка бизнес-приложений на OpenUI5 —Николай Надоричев, MOLGA Consulting
Разработка бизнес-приложений на OpenUI5 —Николай Надоричев, MOLGA ConsultingРазработка бизнес-приложений на OpenUI5 —Николай Надоричев, MOLGA Consulting
Разработка бизнес-приложений на OpenUI5 —Николай Надоричев, MOLGA Consulting
Yandex
Особенности разработки API / Всеволод Шмыров (Яндекс)
Особенности разработки API / Всеволод Шмыров (Яндекс)Особенности разработки API / Всеволод Шмыров (Яндекс)
Особенности разработки API / Всеволод Шмыров (Яндекс)
Ontico
Moxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магииMoxy – реализация MVP под Android. С щепоткой магии
Moxy – реализация MVP под Android. С щепоткой магии
Yuri Shmakov
Alasql.js - SQL база данных на JavaScript / Андрей Гершун (МАГ КОНСАЛТИНГ)
Alasql.js - SQL база данных на JavaScript / Андрей Гершун (МАГ КОНСАЛТИНГ)Alasql.js - SQL база данных на JavaScript / Андрей Гершун (МАГ КОНСАЛТИНГ)
Alasql.js - SQL база данных на JavaScript / Андрей Гершун (МАГ КОНСАЛТИНГ)
Ontico
Артемий Гарин "Выбор лучшего хранилища в Android (cпойлер: Realm)"
Артемий Гарин "Выбор лучшего хранилища в Android (cпойлер: Realm)"Артемий Гарин "Выбор лучшего хранилища в Android (cпойлер: Realm)"
Артемий Гарин "Выбор лучшего хранилища в Android (cпойлер: Realm)"
IT Event
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)
Ontico
2016-08-20 02 Антон Ковалев, Антон Кормаков. Viper. Чистая архитектура для iOS
2016-08-20 02 Антон Ковалев, Антон Кормаков. Viper. Чистая архитектура для iOS2016-08-20 02 Антон Ковалев, Антон Кормаков. Viper. Чистая архитектура для iOS
2016-08-20 02 Антон Ковалев, Антон Кормаков. Viper. Чистая архитектура для iOS
Омские ИТ-субботники
Angular 2: Всех переиграл
Angular 2: Всех переигралAngular 2: Всех переиграл
Angular 2: Всех переиграл
Eugene Zharkov
Человекопонятные отчёты
Человекопонятные отчётыЧеловекопонятные отчёты
Человекопонятные отчёты
bearoff
Entity framework
Entity frameworkEntity framework
Entity framework
Scaiper
Andrew Borisenko "Magic of Vue.js""
Andrew Borisenko  "Magic of Vue.js""Andrew Borisenko  "Magic of Vue.js""
Andrew Borisenko "Magic of Vue.js""
OdessaJS Conf
#MBLTdev: Опыт использования MVVM в реальных проектах
#MBLTdev: Опыт использования MVVM в реальных проектах#MBLTdev: Опыт использования MVVM в реальных проектах
#MBLTdev: Опыт использования MVVM в реальных проектах
e-Legion
Выжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим ГопейВыжить с помощью ООП. Максим Гопей
Выжить с помощью ООП. Максим Гопей
EatDog
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Industrial Programming Java - Lection Pack 01 - Building an application - Lav...
Fedor Lavrentyev

Viewers also liked (20)

Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"
Andrew Mayorov
Alexander Serbul - Development and administration through testing - cloud ser...
Alexander Serbul - Development and administration through testing - cloud ser...Alexander Serbul - Development and administration through testing - cloud ser...
Alexander Serbul - Development and administration through testing - cloud ser...
Andrew Mayorov
Victor Kuzmin - How to organize service development for several mobile platforms
Victor Kuzmin - How to organize service development for several mobile platformsVictor Kuzmin - How to organize service development for several mobile platforms
Victor Kuzmin - How to organize service development for several mobile platforms
Andrew Mayorov
Roman Zdebskiy - Client vs. Browser
Roman Zdebskiy - Client vs. BrowserRoman Zdebskiy - Client vs. Browser
Roman Zdebskiy - Client vs. Browser
Andrew Mayorov
Roman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows AzureRoman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows Azure
Andrew Mayorov
Alexander Dolgarev "Comparizon of AMQP and Zero MQ"
Alexander Dolgarev  "Comparizon of AMQP and Zero MQ"Alexander Dolgarev  "Comparizon of AMQP and Zero MQ"
Alexander Dolgarev "Comparizon of AMQP and Zero MQ"
Andrew Mayorov
Как сделать интернет-сайт на SharePoint и не передумать на полпути
Как сделать интернет-сайт на SharePoint и не передумать на полпутиКак сделать интернет-сайт на SharePoint и не передумать на полпути
Как сделать интернет-сайт на SharePoint и не передумать на полпути
Andrew Mayorov
Dmitry Zavalishin. Successful it-project - where can it fail
Dmitry Zavalishin. Successful it-project - where can it failDmitry Zavalishin. Successful it-project - where can it fail
Dmitry Zavalishin. Successful it-project - where can it fail
Andrew Mayorov
Alexander Burt - Inside of 2D-graphics
Alexander Burt - Inside of 2D-graphicsAlexander Burt - Inside of 2D-graphics
Alexander Burt - Inside of 2D-graphics
Andrew Mayorov
Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.
Andrew Mayorov
Проектирование архитектуры приложений
Проектирование архитектуры приложенийПроектирование архитектуры приложений
Проектирование архитектуры приложений
Andrew Mayorov
Sign Me Up
Sign Me UpSign Me Up
Sign Me Up
Andrew Mayorov
Производительность и энергопотребление мобильных приложений на примере Window...
Производительность и энергопотребление мобильных приложений на примере Window...Производительность и энергопотребление мобильных приложений на примере Window...
Производительность и энергопотребление мобильных приложений на примере Window...
Andrew Mayorov
Vsevolod Leonov "Delphi XE2. Visual tools for cross-platform development"
Vsevolod Leonov "Delphi XE2. Visual tools for cross-platform development"Vsevolod Leonov "Delphi XE2. Visual tools for cross-platform development"
Vsevolod Leonov "Delphi XE2. Visual tools for cross-platform development"
Andrew Mayorov
Построение индекса по иерархии записей в реляционной БД
Построение индекса по иерархии записей в реляционной БДПостроение индекса по иерархии записей в реляционной БД
Построение индекса по иерархии записей в реляционной БД
Andrew Mayorov
(Eng) How Social Media Worked In #24godyny project (Updated)
(Eng) How Social Media Worked In #24godyny project (Updated)(Eng) How Social Media Worked In #24godyny project (Updated)
(Eng) How Social Media Worked In #24godyny project (Updated)
Internews Ukraine
Asad C.V
Asad C.VAsad C.V
Asad C.V
Aune Asad
Xslt
XsltXslt
Xslt
Andrew Mayorov
Banana Shelf Life Testing
Banana Shelf Life TestingBanana Shelf Life Testing
Banana Shelf Life Testing
shubhamchandra
об удобстве иерархических структур данных
об удобстве иерархических структур данныхоб удобстве иерархических структур данных
об удобстве иерархических структур данных
Andrew Mayorov
Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"
Andrew Mayorov
Alexander Serbul - Development and administration through testing - cloud ser...
Alexander Serbul - Development and administration through testing - cloud ser...Alexander Serbul - Development and administration through testing - cloud ser...
Alexander Serbul - Development and administration through testing - cloud ser...
Andrew Mayorov
Victor Kuzmin - How to organize service development for several mobile platforms
Victor Kuzmin - How to organize service development for several mobile platformsVictor Kuzmin - How to organize service development for several mobile platforms
Victor Kuzmin - How to organize service development for several mobile platforms
Andrew Mayorov
Roman Zdebskiy - Client vs. Browser
Roman Zdebskiy - Client vs. BrowserRoman Zdebskiy - Client vs. Browser
Roman Zdebskiy - Client vs. Browser
Andrew Mayorov
Roman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows AzureRoman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows Azure
Andrew Mayorov
Alexander Dolgarev "Comparizon of AMQP and Zero MQ"
Alexander Dolgarev  "Comparizon of AMQP and Zero MQ"Alexander Dolgarev  "Comparizon of AMQP and Zero MQ"
Alexander Dolgarev "Comparizon of AMQP and Zero MQ"
Andrew Mayorov
Как сделать интернет-сайт на SharePoint и не передумать на полпути
Как сделать интернет-сайт на SharePoint и не передумать на полпутиКак сделать интернет-сайт на SharePoint и не передумать на полпути
Как сделать интернет-сайт на SharePoint и не передумать на полпути
Andrew Mayorov
Dmitry Zavalishin. Successful it-project - where can it fail
Dmitry Zavalishin. Successful it-project - where can it failDmitry Zavalishin. Successful it-project - where can it fail
Dmitry Zavalishin. Successful it-project - where can it fail
Andrew Mayorov
Alexander Burt - Inside of 2D-graphics
Alexander Burt - Inside of 2D-graphicsAlexander Burt - Inside of 2D-graphics
Alexander Burt - Inside of 2D-graphics
Andrew Mayorov
Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.
Andrew Mayorov
Проектирование архитектуры приложений
Проектирование архитектуры приложенийПроектирование архитектуры приложений
Проектирование архитектуры приложений
Andrew Mayorov
Производительность и энергопотребление мобильных приложений на примере Window...
Производительность и энергопотребление мобильных приложений на примере Window...Производительность и энергопотребление мобильных приложений на примере Window...
Производительность и энергопотребление мобильных приложений на примере Window...
Andrew Mayorov
Vsevolod Leonov "Delphi XE2. Visual tools for cross-platform development"
Vsevolod Leonov "Delphi XE2. Visual tools for cross-platform development"Vsevolod Leonov "Delphi XE2. Visual tools for cross-platform development"
Vsevolod Leonov "Delphi XE2. Visual tools for cross-platform development"
Andrew Mayorov
Построение индекса по иерархии записей в реляционной БД
Построение индекса по иерархии записей в реляционной БДПостроение индекса по иерархии записей в реляционной БД
Построение индекса по иерархии записей в реляционной БД
Andrew Mayorov
(Eng) How Social Media Worked In #24godyny project (Updated)
(Eng) How Social Media Worked In #24godyny project (Updated)(Eng) How Social Media Worked In #24godyny project (Updated)
(Eng) How Social Media Worked In #24godyny project (Updated)
Internews Ukraine
об удобстве иерархических структур данных
об удобстве иерархических структур данныхоб удобстве иерархических структур данных
об удобстве иерархических структур данных
Andrew Mayorov

Similar to Референсная архитектура приложения на ASP.NET MVC (20)

ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
GetDev.NET
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
Ontico
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiРазработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Softengi
09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки
Roman Brovko
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
JSib
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NETASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
Dev2Dev
MWWM
MWWMMWWM
MWWM
Cleveroad
Модульная структура
Модульная структураМодульная структура
Модульная структура
Denis Tsvettsih
Модульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETМодульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NET
Dev2Dev
Обзор платформы B4
Обзор платформы B4Обзор платформы B4
Обзор платформы B4
Bars Group
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Yulia Tsisyk
C# Web. Занятие 10.
C# Web. Занятие 10.C# Web. Занятие 10.
C# Web. Занятие 10.
Igor Shkulipa
Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко
Solit 2012, Enterprise разработка PHP приложений, Иван ЗахарченкоSolit 2012, Enterprise разработка PHP приложений, Иван Захарченко
Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко
solit
Шаблоны проектирования в Magento
Шаблоны проектирования в MagentoШаблоны проектирования в Magento
Шаблоны проектирования в Magento
Pavel Usachev
ASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton VidishchevASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton Vidishchev
Alex Tumanoff
6 создание распределенных приложений по технологии remoting
6 создание распределенных приложений по технологии remoting6 создание распределенных приложений по технологии remoting
6 создание распределенных приложений по технологии remoting
KewpaN
RESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentationRESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentation
Mikhail Shcherbakov
VIPER architecture
VIPER architectureVIPER architecture
VIPER architecture
Alex Rudyak
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersШкола-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Глеб Тарасов
C# Web. Занятие 11.
C# Web. Занятие 11.C# Web. Занятие 11.
C# Web. Занятие 11.
Igor Shkulipa
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
GetDev.NET
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
Ontico
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiРазработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Разработка Web-приложений на Angular JS. Архитектурные семинары Softengi
Softengi
09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки09 - Web-технологии. MVC фреймворки
09 - Web-технологии. MVC фреймворки
Roman Brovko
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
JSib
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NETASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
ASP.NET MVC за пределами Hello World. Дятлов Александр D2D Just.NET
Dev2Dev
Модульная структура
Модульная структураМодульная структура
Модульная структура
Denis Tsvettsih
Модульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETМодульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NET
Dev2Dev
Обзор платформы B4
Обзор платформы B4Обзор платформы B4
Обзор платформы B4
Bars Group
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»
Yulia Tsisyk
C# Web. Занятие 10.
C# Web. Занятие 10.C# Web. Занятие 10.
C# Web. Занятие 10.
Igor Shkulipa
Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко
Solit 2012, Enterprise разработка PHP приложений, Иван ЗахарченкоSolit 2012, Enterprise разработка PHP приложений, Иван Захарченко
Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко
solit
Шаблоны проектирования в Magento
Шаблоны проектирования в MagentoШаблоны проектирования в Magento
Шаблоны проектирования в Magento
Pavel Usachev
ASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton VidishchevASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton Vidishchev
Alex Tumanoff
6 создание распределенных приложений по технологии remoting
6 создание распределенных приложений по технологии remoting6 создание распределенных приложений по технологии remoting
6 создание распределенных приложений по технологии remoting
KewpaN
RESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentationRESTful API: Best practices, versioning, design documentation
RESTful API: Best practices, versioning, design documentation
Mikhail Shcherbakov
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersШкола-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Глеб Тарасов
C# Web. Занятие 11.
C# Web. Занятие 11.C# Web. Занятие 11.
C# Web. Занятие 11.
Igor Shkulipa

Референсная архитектура приложения на ASP.NET MVC