Юлия Цисык «RESTFul API в вашем.NET приложении: как, зачем и почему?»Yulia TsisykНи один современный продукт не обходится без API. Этот API может быть внешним, для публичного использования, а может быть сугубо внутренним, но требования к созданию расширяемого, версионируемого, тестируемого, документированного программного интерфейса очень похоже. В этом докладе мы поговорим о том, как создавать подобные API на основе REST, какие существуют best-practices, чего следует избегать, на что обращать внимание при проектировании.
Никита Цуканов "Параллелизм и распределённые вычисления на акторах с Akka.net"Yulia TsisykДоклад с митапа MSK .NET Community (http://mskdotnet.org).
В современном мире уже нельзя писать код, который работает на одном компьютере на одном процессорном ядре и имеет монопольный доступ к данным. Опытом борьбы с трудностями при написании многопоточного кода поделится Никита Цуканов.
Доклад "Параллелизм и распределённые вычисления на акторах с Akka.NET" рассчитан на неподготовленного слушателя, ранее не имевшего дело с акторами, и является улучшенной и дополненной версией доклада с питерского DotNext. 11 августа речь пойдёт непосредственно об акторной модели и её реализации в Akka.NET, особенностях юнит-тестирования, акторах с сохраняемым состоянием, а так же об интеграции всей этой машинерии с имеющимся приложением и ASP.NET.
Пользователь точно оценит! Повышение производительности мобильных приложений ...OnticoРасскажем о методиках создания производительных приложений, опираясь на собственный многолетний опыт проб и ошибок:
• использование инструментов отладки (работа с Hierarchy Viewer; поиск и устранение overdraw; профилирование методов; поиск утечек памяти);
• написание производительного кода;
• создание верстки, повышающей скорость работы приложений;
• создание требований к дизайну интерфейсов и API с оглядкой на производительность;
• использование аналитики для логирования и отладки багов.
Android-приложения Superjob:
• 3 приложения в Google Play для B2C и B2B-аудиторий;
• более 1 млн. пользователей;
• в числе лучших российских приложений по мнению Google Play.
Ловля сетями. Инструменты отладки сетевых запросов приложений / Дмитрий Рыбак...OnticoРИТ++ 2017, AppsConf
Зал Найроби + Касабланка, 5 июня, 11:00
Тезисы:
http://appsconf.ru/2017/abstracts/2584.html
Большинство современных мобильных приложений так или иначе работает с каким-то API (а зачастую и не с одним). Количество запросов при этом может достигать десятков в минуту и понимание того, что сейчас происходит в сетевом слое вашего приложения, становится непростой задачей.
Я расскажу и покажу весь диапазон современных средств для мониторинга и отладки сетевых запросов: от самых простых до узкоспециальных - с плюсами/минусами каждого из инструментов и областями их применения.
Тестирование Web APIByndyusoftКак автоматизировать тестирование WebApi, даже если проект завязан на внешние сервисы. Как тестировать WebApi-сервер без постоянных деплоев, как дебажить во время прогона интеграционных тестов.
Видео https://www.youtube.com/watch?v=fuS1IaLSGV0
Продвинутое использование Celery — Александр КошелевYandexДоклад будет интересен как тем, кто уже знаком с библиотекой для реализации очередей задач Celery, так и тем, кто только собирается её попробовать. Основные темы выступления:
- как устроена Celery;
- как перейти на альтернативные брокеры;
- как обеспечить эффективный доступ к ресурсам;
- как отслеживать работоспособность процессов Celery
Service Discovery. More that it seemsAleksandr TarasovThere is a problem of finding the best instance of a service in distributed systems with dynamic configuration. Nowadays, there are many products for the configuration storage and service discovery. It should be mentioned at least Netflix Eureka, Consul, etc or good old Zookeeper. These products can keep and give configuration, manage service instances lifecycle and some of them even can be as dynamic DNS service. But main question is not about what instance may be called at the certain time. It is about what instance is better for call? This means that smart load balancing top on service discovery is required. Spring Cloud project allows to integrate these products to your project and provides powerful solutions for typical problems, that make cloud native services developing easier. This talk will review the internal structure of SpringCloud implementation of Client-Side Service Discovery and Client Load Balancing patterns. It also will include specific details of concrete implementations with examples from official libraries and the author’s own library.
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Magneta AIАнтон Кириллов, Zeptolab (Москва)
Доклад посвящен обзору ключевых технологий стека Typesafe и анализу ключевых преимуществ и недостатков на примере реального проекта:
* Действительно ли Scala - “более лучшая” Java? Что следует знать, начиная внедрять Scala.
* Play Framework: больше чем просто контейнер. Архитектура и возможности.
* Доступ к базам данных: библиотеки и подходы, эволюция схемы БД во времени
* Actors: безболезненная многопоточность!
* Simple Build Tool: не совсем simple, но крайне функциональный инструмент автоматической сборки.
Рассматриваемые технологии позволяют “из коробки” начать создавать прототипы веб-приложений за очень короткое время и в дальнейшем наращивать их функционал. Тем не менее, из-за молодости стека существует большое количество “граблей”, о которых следует знать, принимая решение об использовании данного набора технологий.
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевPositive Hack Days1. Сложности при распутывании перекрёстных и вложенных зависимостей.
2. Пакетный менеджер CrossPM. Его возможности и примеры использования.
3. Интеграция CrossPM и системы хранения пакетов Artifactory.
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"FwdaysДоклад посвящен замечательному JS-фреймворку — Riot.js (11k звезд на GitHub), который реализует идею Web Components в простом и компактном виде, пропагандируя принципы простоты и Native JavaScript.
Riot.js позволяет по-новому взглянуть на JS-фреймворки, которые в наше время стали увесистыми титанами с собственной экосистемой, знание которых совсем не означает владение JavaScript.
Мы поговорим об устройстве фреймворка, его отличиях, о библиотеках, разработанных сообществом, а также об архитектуре Riot.js приложений и лучших практиках.
Надеюсь, для кого-то мой доклад станет глотком свежего воздуха и популяризирует Riot.js фреймворк в украинском JS-комьюнити.
Практика использования Dependency InjectionPlatonov SergeyВ докладе рассказывается об опыте применения «инверсия управления» (Inversion of Control) при разработке новой версии KES. Этот подход заключается в том, что более высокоуровневый код не зависит напрямую от конкретной реализации нижележащего слоя. Вместо этого он зависит от абстрактного протокола (интерфейса), конкретный же компонент подставляется конфигурационным кодом-клиентом. Эта практика позволяет понизить loose coupling программных модулей и применяется практически в любых крупных проектах.
При разработке новой версии KES было принято решение изменить подход к реализации инверсии управления. Было решено отказаться от централизованного обобщенного реестра доступных компонентов (шаблон (паттерн) Service Locator) в пользу явной передачи зависимостей конфигуратором (ручная инъекция зависимостей (manual Dependency Injection)). При это возникли проблемы с использованием готовых библиотек Dependency Injection Frameworks. Применение подобных библиотек стало стандартом в мире разработки Java/C# за последние 10-15 лет, но в мире C++ они пока не получили подобного распространения. В докладе делается обзор и сравнение актуальных DI-Framework’ов на C++, анализируется их применимость к практическим задачам ЛК. Анализируется, что могут привнести стандарты C++11/14 для упрощения решения таких задач.
Будущее ASP.NETGoSharpПлатформа ASP.NET стоит на пороге глобальных изменений. Какие из них самые важные? Как они повлияют на процесс разработки? Стоит ли бояться и как подготовиться? В рамках доклада мы обсудим новый виток развития технологии и возможности, которые появятся у нас с выходом ASP.NET 5(vNext) и Visual Studio 2015.
vSphereTools - инструмент для автоматизации работы с vSphere | Тимур ГильмуллинPositive Hack Days1. VIX API против pysphere.
2. vSphereTools - это набор скриптов от DevOps для поддержки работы с vSphere и виртуальными машинами.
3. Описание инструмента, его достоинства и недостатки, возможные доработки.
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человекаNETFestMicrosoft Azure, пожалуй, самый очевидный выбор для .NET разработчиков, когда они (или их клиенты) внезапно решают, что им нужен клауд. Но при этом мы все равно используем подходы и техники из до-облачного мира, иногда и не подозревая о тех сервисах и удобствах, которые нам дает Azure. На этом докладе Сергей покажет, как быстро и эффективно можно разрабатывать современное веб приложение. Мы затронем разные аспекты -- от организации кода до деплоя и мониторинга приложений, работающих в проде. Документация API, поддержка рабочих процессов, инициализация приложений, полезные инструменты и библиотеки -- все это, и не только, ждет вас на нашем докладе.
Service Discovery. More that it seemsAleksandr TarasovThere is a problem of finding the best instance of a service in distributed systems with dynamic configuration. Nowadays, there are many products for the configuration storage and service discovery. It should be mentioned at least Netflix Eureka, Consul, etc or good old Zookeeper. These products can keep and give configuration, manage service instances lifecycle and some of them even can be as dynamic DNS service. But main question is not about what instance may be called at the certain time. It is about what instance is better for call? This means that smart load balancing top on service discovery is required. Spring Cloud project allows to integrate these products to your project and provides powerful solutions for typical problems, that make cloud native services developing easier. This talk will review the internal structure of SpringCloud implementation of Client-Side Service Discovery and Client Load Balancing patterns. It also will include specific details of concrete implementations with examples from official libraries and the author’s own library.
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Magneta AIАнтон Кириллов, Zeptolab (Москва)
Доклад посвящен обзору ключевых технологий стека Typesafe и анализу ключевых преимуществ и недостатков на примере реального проекта:
* Действительно ли Scala - “более лучшая” Java? Что следует знать, начиная внедрять Scala.
* Play Framework: больше чем просто контейнер. Архитектура и возможности.
* Доступ к базам данных: библиотеки и подходы, эволюция схемы БД во времени
* Actors: безболезненная многопоточность!
* Simple Build Tool: не совсем simple, но крайне функциональный инструмент автоматической сборки.
Рассматриваемые технологии позволяют “из коробки” начать создавать прототипы веб-приложений за очень короткое время и в дальнейшем наращивать их функционал. Тем не менее, из-за молодости стека существует большое количество “граблей”, о которых следует знать, принимая решение об использовании данного набора технологий.
Пакетный менеджер CrossPM: упрощаем сложные зависимости | Александр КовалевPositive Hack Days1. Сложности при распутывании перекрёстных и вложенных зависимостей.
2. Пакетный менеджер CrossPM. Его возможности и примеры использования.
3. Интеграция CrossPM и системы хранения пакетов Artifactory.
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"FwdaysДоклад посвящен замечательному JS-фреймворку — Riot.js (11k звезд на GitHub), который реализует идею Web Components в простом и компактном виде, пропагандируя принципы простоты и Native JavaScript.
Riot.js позволяет по-новому взглянуть на JS-фреймворки, которые в наше время стали увесистыми титанами с собственной экосистемой, знание которых совсем не означает владение JavaScript.
Мы поговорим об устройстве фреймворка, его отличиях, о библиотеках, разработанных сообществом, а также об архитектуре Riot.js приложений и лучших практиках.
Надеюсь, для кого-то мой доклад станет глотком свежего воздуха и популяризирует Riot.js фреймворк в украинском JS-комьюнити.
Практика использования Dependency InjectionPlatonov SergeyВ докладе рассказывается об опыте применения «инверсия управления» (Inversion of Control) при разработке новой версии KES. Этот подход заключается в том, что более высокоуровневый код не зависит напрямую от конкретной реализации нижележащего слоя. Вместо этого он зависит от абстрактного протокола (интерфейса), конкретный же компонент подставляется конфигурационным кодом-клиентом. Эта практика позволяет понизить loose coupling программных модулей и применяется практически в любых крупных проектах.
При разработке новой версии KES было принято решение изменить подход к реализации инверсии управления. Было решено отказаться от централизованного обобщенного реестра доступных компонентов (шаблон (паттерн) Service Locator) в пользу явной передачи зависимостей конфигуратором (ручная инъекция зависимостей (manual Dependency Injection)). При это возникли проблемы с использованием готовых библиотек Dependency Injection Frameworks. Применение подобных библиотек стало стандартом в мире разработки Java/C# за последние 10-15 лет, но в мире C++ они пока не получили подобного распространения. В докладе делается обзор и сравнение актуальных DI-Framework’ов на C++, анализируется их применимость к практическим задачам ЛК. Анализируется, что могут привнести стандарты C++11/14 для упрощения решения таких задач.
Будущее ASP.NETGoSharpПлатформа ASP.NET стоит на пороге глобальных изменений. Какие из них самые важные? Как они повлияют на процесс разработки? Стоит ли бояться и как подготовиться? В рамках доклада мы обсудим новый виток развития технологии и возможности, которые появятся у нас с выходом ASP.NET 5(vNext) и Visual Studio 2015.
vSphereTools - инструмент для автоматизации работы с vSphere | Тимур ГильмуллинPositive Hack Days1. VIX API против pysphere.
2. vSphereTools - это набор скриптов от DevOps для поддержки работы с vSphere и виртуальными машинами.
3. Описание инструмента, его достоинства и недостатки, возможные доработки.
.NET Fest 2018. Сергей Калинец. Azure веб разработка здорового человекаNETFestMicrosoft Azure, пожалуй, самый очевидный выбор для .NET разработчиков, когда они (или их клиенты) внезапно решают, что им нужен клауд. Но при этом мы все равно используем подходы и техники из до-облачного мира, иногда и не подозревая о тех сервисах и удобствах, которые нам дает Azure. На этом докладе Сергей покажет, как быстро и эффективно можно разрабатывать современное веб приложение. Мы затронем разные аспекты -- от организации кода до деплоя и мониторинга приложений, работающих в проде. Документация API, поддержка рабочих процессов, инициализация приложений, полезные инструменты и библиотеки -- все это, и не только, ждет вас на нашем докладе.
iOS and Android Mobile Test AutomationAndrii DzyniaМир мобильных телефонов очень сильно изменил нашу жизнь. В наше время невозможно представить современного человека, без этого чудо устройства. На рынке появляется все больше устройств и приложений. И чтобы удобнее пользоваться этими приложениями пользователи выбирают “умные” телефоны, или как их еще принято называть смартфоны. В своем докладе я хочу поделиться своим опытом автоматизации приложений под Android и iOS. Я расскажу о том, какие инструменты автоматизации я использовал. Поговорим о недостатках этих инструментов и какие из них стоит использовать у себя на проекте.
Экскурс в мир WEB разработки-ДоминантаСекционный доклад
Экскурс в мир WEB разработки
Дмитрий Лаабе
Генеральный директор и основатель рекрутинговой компании -Доминанта
Технический директор и программист
портала Айти-Событие
Россия. Санкт-Петербург
http://it-sobytie.ru/events/3120
Web and mobile development for intersystems caché, Eduard LebedyukInterSystemsApproach to web and mobile development for intersystems caché
REST API, web application architecture, web sockets, JSON usage Eduard Lebedyuk
Владимир Еремин. Extending Openstack. PyCon Belarus 2015Alina DolgikhOpenStack назван одним из лучших open source проектов (по версии http://opensource.com/business/14/12/top-10-open-source-projects-2014) и написан полностью на Python. OpenStack уже включает в себя целую кучу готовых к использованию батареек, но если есть необходимость добавить что-то свое -- вы можете это сделать без изменения базового кода, просто написав собственное расширение. Я расскажу, что такое OpenStack и что он умеет из коробки, какие возможности расширения своей функциональности предоставляет эта платформа и как мы это используем у себя в уютненьком Яндексе.
Разработка мобильного ивеб интерфейса для CachéInterSystems CEEКлиент, сервер и их взаимодействие, разработка веб и мобильных приложений, Лебедюк Эдуард /
Client & server overview & communication between them, how to develop mobile apps based on existing webapp, Eduard Lebedyuk
Разработка Windows 8 приложений глазами WPF/Silverlight программистаDotNetConfПо материалам конференции .NET разработчиков http://dotnetconf.ru/materialy/windows8
Денис Цветцих, 19 апреля 2015
Разработка Windows 8 приложений глазами WPF/Silverlight программистаDenis TsvettsihПрезентация к докладу «Разработка Windows 8 приложений глазами WPF/Silverlight программиста» с десятой конференции dotnetconf (Челябинск, 19 апреля 2015)
http://dotnetconf.ru/materialy/windows8
Хватит писать инфраструктурный кодVadim MartynovThis presentation will teach you to never repeat yourself and organize your code correctly for reuse.
It also illustrates advantages of the use of third-party libraries.
Автоматизация тестирования iOS приложений: от идеи к готовому решениюSQALabSQA Days 11. День 2. Cекция B
Денис Шамгин, Виктор Короневич
EPAM Systems
Минск, Беларусь
Руководство по приготовлению бутербродов из SeleniumUladzimir KryvenkaМоя презентация к докладу “Руководство по приготовлению бутербродов из Selenium” с которой я выступил на Selenium Camp в Киеве 25 февраля 2012 года.
Михаил Боднарчук "Docker для PHP разработчиков" FwdaysЭто не рассказ о том, как из разработчика стать крутым DevOpsом. Это доклад о том, как можно сделать процесс разработки и развертки приложения комфортнее и эффективнее вместе с прогрессивной технологией контейнеризации - Docker.
В этом докладе я затрону следующие темы:
Docker - это то модное слово, которое все должны знать
Дирижирование оркестром вместе с Docker Compose
Создание и настройка рабочего окружения в Docker
Построение сервисно-ориентированых приложений
Безболезненное развертывание приложений с Shipyard
То, чего не хватало для Continuous Integration - запуск параллельных билдов
Михаил Щербаков "WinDbg сотоварищи"Mikhail ShcherbakovДоклад с митапа MSK .NET Community (http://mskdotnet.org).
Поговорим о самом мощном отладчике для Windows – WinDbg. Разберем как начать использовать этот отладчик, чем он может быть полезен для .NET разработчиков. Подробней остановимся на практических моментах его применения, зачем он прикладным программистам, web-разработчикам. Посмотрим и на другие инструменты отладки, которые занимают нишу между интуитивно управляемым комбайном Visual Studio и легким, но крайне аскетичным WinDbg.
Project RiderMikhail ShcherbakovRider is a cross-platform .NET IDE developed by JetBrains as an alternative to Visual Studio. It supports .NET Framework, .NET Core, and Mono development. The demo discussed Rider's key features like its IDE components, language understanding, and support for MVVM and reactive programming patterns. Development follows principles like DRY and uses reactive techniques. Challenges include integrating with IntelliJ languages and keeping the ReSharper process separate while fully supporting MVVM in a pure way.
Structured loggingMikhail ShcherbakovThe document discusses six key areas for monitoring and improving a system: troubleshooting problems, assessing performance and costs, learning from problems to prevent them in the future, monitoring for trends that require scaling, and ensuring good customer experience. Each area is described in one line.
Использование Visual Studio Tools for Apache Cordova в реальных проектахMikhail ShcherbakovСлайды выступления Антона Шабанова на SPB .NET Meetup #7 http://spbdotnet.org
Sandboxing in .NET CLRMikhail ShcherbakovMikhail Shcherbakov gave a presentation on sandboxing in the .NET CLR. He discussed the .NET security architecture including application domains, code access security, permissions, and the transparency model. He explained how sandboxing is the base of security and developing extensible yet secure applications. He also covered sandbox implementation in ASP.NET partial trust applications and vulnerabilities like the luring attack and exception filter attack that bypass security.
Visual Studio 2015 Diagnostic and Debugging ToolsMikhail ShcherbakovMikhail Shcherbakov presented on the diagnostic and debugging tools in Visual Studio 2015. He discussed the performance and diagnostics hub with features like PerfTips, memory usage, CPU usage, and application timeline. He also covered the unit testing tools including the extensible unit test framework, unit test isolation, and IntelliTest. Finally, he outlined debugging tools such as cross-platform debugging support, lambda expressions in the watch window, new breakpoint configuration experience, and the new exception window.
2. 2
Александр Иванов
• C 2007 года занимаюсь Web разработкой на .NET
Aleksandr_Ivanov@epam.com
Роман Правук
• C 2004 года занимаюсь Web разработкой
• Ресурсный Менеджер группы Web .Net разраьотчиков
Roman_Pravuk@epam.com
Кто мы
4. 4
Муки выбора архитектуры серверной части
• Легкость владения (админы сказали - нет тяжелым веб
серверам)
• Слабая аппаратная часть (квоты на Cloud)
• Скорость разработки
Нам был нужен REST сервис
5. 5
• Node.js
• WCF self hosted
• ASP.NET MVC WEB API
• Spring MVC + Apache Tomcat
Из чего выбирали
7. 7
• Один поток
• Любой из запросов забирающий управление на себя
наглухо забирает всю очередь
• Нет адекватных средств работы с AD и Exchange Server
• Не типизированный
• Нет средств синхронизации потоков
Почему не Node.js
8. 8
• Не было экспертизы
• Сложно поддерживать Apache
Tomcat. Админы отказались.
Почему не Java WEB-стэк
9. 9
• 2002 год
.NET Framework 1.0 и ASP.NET Web Forms
• 2009 год
ASP.NET MVC
• 2012 год
ASP.NET WEB API и Self-Hosting
ASP.NET
10. 10
Проблемы ASP.NET
• WEB-приложения только под Windows
• IIS – единственная опция WEB-сервера в .NET (кроме
WEB API)
• Зависимость от System.Web.dll – огромная монолитная
сборка
• ASP.NET – закрытая платформа
Проблемы ASP.NET
13. 13
• OWIN – это стандарт (спецификация), не Фреймворк
• ASP.NET 5 реализует стандарт OWIN
• OWIN регулирует порядок взаимодействия между WEB-сервером и
WEB-приложением
• Стандарт направлен на создание небольших и простых модулей
для разработки WEB-приложений
• OWIN – это открытый стандарт
https://github.com/owin
http://www.owin.org
Открытый WEB-стандарт для .NET
16. 16
Key Name Description
"owin.RequestBody" A Stream with the request body (Stream.Null if no request
body)
"owin.RequestHeaders" An IDictionary<string, string[]> of request headers.
"owin.RequestMethod" "GET", "POST", etc.
"owin.RequestPath" A string containing the request path relative to the "root" of app
delegate.
"owin.RequestPathBase" A string containing the portion of the request path
corresponding to the "root"
"owin.RequestProtocol" "HTTP/1.0", "HTTP/1.1"
"owin.RequestQueryString" "foo=bar&baz=qx" (without leading "?"; empty string if no query
params)
"owin.RequestScheme" "http", "https"
Environment Dictionary – Request Data
17. 17
Key Name Description
"owin.ResponseBody" A Stream used to write out the response body, if any.
"owin.ResponseHeaders" An IDictionary<string, string[]> of response headers.
"owin.ResponseStatusCode"
An optional int containing the HTTP response status code. The
default is 200.
"owin.ResponseReasonPhrase"
An optional string containing the reason phrase associated the
given status code.
"owin.ResponseProtocol"
An optional string containing the protocol name and version
(e.g. "HTTP/1.0")
"owin.CallCancelled"
A CancellationToken indicating if the request has been
cancelled/aborted.
"owin.Version" The string "1.0" indicating OWIN version.
Environment Dictionary – Response Data &
other
19. 19
Запуск OWIN приложения
Host Server Startup
Создать
Запустить
Startup код
Вернуть
App Delegate
Запустить
Server
App
Delegate
Создать
Request
Response
Запуск
20. 20
Пример WEB-сервера
using System.Threading.Tasks;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Http;
namespace My.OwinServer {
public class Startup {
public void Configure(IApplicationBuilder app) {
app.Use(next => AppDelegate);
}
private Task AppDelegate(HttpContext context) {
string responseText = "Hello, World!";
return context.Response.WriteAsync(responseText);
}
}
}
Startup.cs
21. 21
Цепочка Middleware
public class Startup {
public void Configure(IApplicationBuilder app)
{
app.UseMiddleware<LogMiddleware>();
app.Run(AppDelegate);
}
private Task AppDelegate(HttpContext context)
{
string responseText = "Hello World!";
return context.Response
.WriteAsync(responseText);
}
}
public class LogMiddleware {
private readonly RequestDelegate _next;
public LogMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
string path = context.Request.Path;
Console.WriteLine("Begin requst " + path);
await _next(context);
Console.WriteLine("End requst " + path);
}
}
Server
LogMiddleware
AppDelegate
24. 24
DNX
• dnvm - .NET Version Manager
• dnu - .NET Development Utility
• dnx - The .NET Execution Environment.
Команды определены в файле project.json:
"commands": {
“kestrel": "Microsoft.AspNet.Server.Kestrel --server.urls http://localhost:5000",
"web": "Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000"
}
DNX - это SDK и среда выполнения
25. 25
Сборка:
$ dnu restore
$ dnu build
Запуск:
$ dnx web
Hosting environment: Production
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
Begin requst /index.html
End requst /index.html
Запускаем WEB-сервер
27. 27
WEB API приложение
using Microsoft.AspNet.Builder;
using Microsoft.Framework.DependencyInjection;
public class Startup {
public void ConfigureServices(IServiceCollection services) {
services.AddMvc();
}
public void Configure(IApplicationBuilder app) {
app.UseStaticFiles();
app.UseMvc();
}
}
Startup.cs
28. 28
WEB API контроллер
using Microsoft.AspNet.Mvc;
[Route("api/[controller]")]
public class ValuesController : Controller {
private readonly List<string> _values = new List<string> { "value1", "value2" };
[HttpGet]
public IEnumerable<string> Get() {
return _values;
}
[HttpGet("{id}")]
public string Get(int id) {
return 0 <= id && id < _values.Count
? _values[id] : "Value not found";
}
[HttpPost]
public void Post([FromBody]string value) {
_values.Add(value);
}
[HttpPut("{id}")] ...
}
ValuesController.cs
29. 29
1. Запустить всё под Linux на Mono
– Не получится: EWS использует SecureString
2. Всё на .NET Core
– EWS нет для .NET Core
Куда мы двигаемся дальше
33. 33
.NET Core
• CoreCLR – runtime
• CoreFX – набор библиотек – Подмножество библиотек
.NET Framework.
.NET Core поддерживает платформы:
• Windows
• Linux
• Mac
.NET Core
34. 34
• Портируемость
• Кроссплатформенность
• Модульность – CoreFX разбит на небольшие NuGet
пакеты. Позволяет включить только те зависимости,
которые нужны.
• NET Core – это Open-Source проект.
https://github.com/dotnet/core
Что даёт .NET Core
37. 37
• Оптимизирован под Cloud и Серверную архитектуру
– Использует мало памяти - проект включает только те зависимости,
которые реально использует
– Высокая пропускная способность
• Кросс-платформенный: Windows, Linux, Mac.
• Microsoft будет развивать .NET Core
ASP.NET 5 на .NET Core
38. 38
• CoreFX – содержит лишь подмножество библиотек .NET Framework
• Пока ещё мало пакетов в NuGet поддерживают .NET Core
Проблемы ASP.NET 5 и .NET Core
39. 39
• Кросс-платформенный
• Независимый от WEB-сервера
• Модульный подход
• Выше производительность
• Требует меньше памяти
• Портируемое приложение
ASP.NET 5 - Summary