25
Метапрограммирование интерфейсов в ASP.NET MVC Алексей Волков Сонда Технолоджи aivolkov.ru Вторая конференция .NET разработчиков

Метапрограммирование интерфейсов в ASP.NET MVC

Embed Size (px)

DESCRIPTION

Вторая конференция .NET разработчиков. Метапрограммирование интерфейсов в ASP.NET MVC. Алексей Волков Сонда Технолоджи aivolkov.ru. Дублирование кода. http://www.flickr.com/photos/popilop/331357312/. Дублирование кода. Дублирование кода. Дублирование кода. - PowerPoint PPT Presentation

Citation preview

Page 1: Метапрограммирование  интерфейсов в  ASP.NET MVC

Метапрограммирование интерфейсов в ASP.NET MVC

Алексей ВолковСонда Технолоджи

aivolkov.ru

Вторая конференция .NET разработчиков

Page 2: Метапрограммирование  интерфейсов в  ASP.NET MVC

Дублирование кода

http://www.flickr.com/photos/popilop/331357312/

Page 3: Метапрограммирование  интерфейсов в  ASP.NET MVC

Дублирование кода

Page 4: Метапрограммирование  интерфейсов в  ASP.NET MVC

Дублирование кода

Page 5: Метапрограммирование  интерфейсов в  ASP.NET MVC

Дублирование кода

Page 6: Метапрограммирование  интерфейсов в  ASP.NET MVC

http://en.wikipedia.org/wiki/File:2000_core-repository02_hg.jpg

Page 7: Метапрограммирование  интерфейсов в  ASP.NET MVC

Template Helpers+ Shared Views

Page 8: Метапрограммирование  интерфейсов в  ASP.NET MVC

Вариант Shared Views

Page 9: Метапрограммирование  интерфейсов в  ASP.NET MVC

Вариант Shared Views

Page 10: Метапрограммирование  интерфейсов в  ASP.NET MVC

Вариант Shared Views

Page 11: Метапрограммирование  интерфейсов в  ASP.NET MVC

Вариант Shared Views

Page 12: Метапрограммирование  интерфейсов в  ASP.NET MVC

Контроллеры в Shared Views

Page 13: Метапрограммирование  интерфейсов в  ASP.NET MVC

Снова дублирование кода

http://www.flickr.com/photos/kugelfisch/4663326851/

Page 14: Метапрограммирование  интерфейсов в  ASP.NET MVC

Совершенствование Shared Views

• Наследование от базовых контроллеров• Generic контроллеры

Page 16: Метапрограммирование  интерфейсов в  ASP.NET MVC

Вариант generic-контроллеров

Page 17: Метапрограммирование  интерфейсов в  ASP.NET MVC

Избавление от «свалки» в Shared

Page 18: Метапрограммирование  интерфейсов в  ASP.NET MVC

Generic-пути к View-файлам

Page 19: Метапрограммирование  интерфейсов в  ASP.NET MVC

Generic-пути к View-файлам

VirtualPathProviderViewEngine.FindViewи

VirtualPathProviderViewEngine. GetPathFromGeneralName

Page 20: Метапрограммирование  интерфейсов в  ASP.NET MVC

Generic-пути к View-файлам

string virtualPath = location.Format(name, controllerName, areaName);

string urlPart = controllerContext.RouteData.Values[“urlPart"];

string virtualPath = location.Format(name, controllerName, areaName, urlPart);

Page 21: Метапрограммирование  интерфейсов в  ASP.NET MVC

Generic-пути к View-файлам

ViewLocationFormats = new[] { "~/Views/{1}/{3}/{0}.cshtml", "~/Views/{1}/{3}/{0}.vbhtml", "~/Views/{1}/{0}.cshtml", "~/Views/{1}/{0}.vbhtml", "~/Views/Shared/{0}.cshtml", "~/Views/Shared/{0}.vbhtml" };

Page 22: Метапрограммирование  интерфейсов в  ASP.NET MVC

Generic-пути к View-файлам

Page 23: Метапрограммирование  интерфейсов в  ASP.NET MVC

Плюсы от применения подобных подходов

• Заметно снижается дублирование кода• Снижается себестоимость разработки• Заметно уже при числе источников

данных на одну generic-схему > 5

Page 24: Метапрограммирование  интерфейсов в  ASP.NET MVC

Подводные камни

• Очень сложные схемы и интерфейсы• Применение в неподходящих случаях

Page 25: Метапрограммирование  интерфейсов в  ASP.NET MVC

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

Алексей ВолковСонда Технолоджи

[email protected]/AIVolkov