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

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

Embed Size (px)

Citation preview

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

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

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

aivolkov.ru

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

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

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

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

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

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

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

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

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

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

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

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

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

Template Helpers+ Shared Views

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

Вариант Shared Views

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

Вариант Shared Views

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

Вариант Shared Views

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

Вариант Shared Views

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

VirtualPathProviderViewEngine.FindViewи

VirtualPathProviderViewEngine. GetPathFromGeneralName

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

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 Framework

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 Framework

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

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

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

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

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

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

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

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

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

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

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

[email protected]/AIVolkov