MVVM в WinForms – DevExpress Way (теория и практика)GoSharp
Из доклада вы узнаете о применении популярного паттерна MVVM для упрощения и ускорения процесса разработки desktop-приложений.
Будут рассмотрены общие проблемы этого паттерна и решения которые мы предлагаем в нашем кроссплатформенном MVVM фреймворке. Упор будет сделан на практические аспекты и техники в условиях использования платформы WinForms и контролов от DevExpress.
Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)Ontico
РИТ++ 2017, AppsConf
Зал Касабланка, 6 июня, 16:00
Тезисы:
http://appsconf.ru/2017/abstracts/2704.html
В последнее время паттерн MVP будоражит Android-комьюнити. Уже есть несколько довольно приличных библиотек, которые помогают использовать этот подход. Но с ними вам придётся писать много boilerplate-кода. Поэтому я хочу познакомить вас с Moxy. Покажу, как использовать её компоненты для решения задач, которые будут вставать перед вами, когда вы решите использовать паттерн MVP. И расскажу, как устроены эти компоненты, и почему именно так, чтобы вы не боялись использовать Moxy из-за потенциальных подводных камней.
MVVM в WinForms – DevExpress Way (теория и практика)GoSharp
Из доклада вы узнаете о применении популярного паттерна MVVM для упрощения и ускорения процесса разработки desktop-приложений.
Будут рассмотрены общие проблемы этого паттерна и решения которые мы предлагаем в нашем кроссплатформенном MVVM фреймворке. Упор будет сделан на практические аспекты и техники в условиях использования платформы WinForms и контролов от DevExpress.
Moxy. Как правильно пользоваться? / Юрий Шмаков (Arello Mobile)Ontico
РИТ++ 2017, AppsConf
Зал Касабланка, 6 июня, 16:00
Тезисы:
http://appsconf.ru/2017/abstracts/2704.html
В последнее время паттерн MVP будоражит Android-комьюнити. Уже есть несколько довольно приличных библиотек, которые помогают использовать этот подход. Но с ними вам придётся писать много boilerplate-кода. Поэтому я хочу познакомить вас с Moxy. Покажу, как использовать её компоненты для решения задач, которые будут вставать перед вами, когда вы решите использовать паттерн MVP. И расскажу, как устроены эти компоненты, и почему именно так, чтобы вы не боялись использовать Moxy из-за потенциальных подводных камней.
Слайды одноименного доклада с конференции C++ CoreHard Autumn 2018 (г.Минск, 2018.11.03).
Краткое описание доклада:
На предыдущих конференциях C++ CoreHard автор доклада рассказывал про Модель Акторов и опыт ее использования в C++. Но Модель Акторов -- это далеко не единственный способ борьбы со сложностью при работе с многопоточностью. Давайте попробуем поговорить о том, что еще можно применить и как это может выглядеть в C++.
Magento Open Source 2.3 gives us a very interesting and powerful tool called Declarative Schema. The declarative database schema allows to re-think our old-fashioned database upgrade scripts into nice and elegant declarative XML files. Let's see what we can do with Declarative Schema.
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)Ontico
- Что такое "чистая" архитектура приложений. Чем грозит "грязная" архитектура, чем от нее отличается "чистая" архитектура, и какой от нее профит.
- История появления VIPER.
- Идея VIPER. Как изменяется структура приложения при применении этого подхода.
- Опыт использования VIPER в Rambler&Co. Что мы изменили и добавили.
- Работа с VIPER на примере user story из реального приложения.
- Выводы: чем помогает VIPER и когда его использовать не стоит.
Слайды одноименного доклада с конференции C++ CoreHard Autumn 2018 (г.Минск, 2018.11.03).
Краткое описание доклада:
На предыдущих конференциях C++ CoreHard автор доклада рассказывал про Модель Акторов и опыт ее использования в C++. Но Модель Акторов -- это далеко не единственный способ борьбы со сложностью при работе с многопоточностью. Давайте попробуем поговорить о том, что еще можно применить и как это может выглядеть в C++.
Magento Open Source 2.3 gives us a very interesting and powerful tool called Declarative Schema. The declarative database schema allows to re-think our old-fashioned database upgrade scripts into nice and elegant declarative XML files. Let's see what we can do with Declarative Schema.
Чистая архитектура с VIPER / Сергей Крапивенский (Rambler&Co)Ontico
- Что такое "чистая" архитектура приложений. Чем грозит "грязная" архитектура, чем от нее отличается "чистая" архитектура, и какой от нее профит.
- История появления VIPER.
- Идея VIPER. Как изменяется структура приложения при применении этого подхода.
- Опыт использования VIPER в Rambler&Co. Что мы изменили и добавили.
- Работа с VIPER на примере user story из реального приложения.
- Выводы: чем помогает VIPER и когда его использовать не стоит.
Приложения для Windows Phone: как мы это делаем #codefestActis Wunderman
Презентация руководителя отдела мобильных приложений Григория Никонова для конференции CodeFest 2013. Рассказ о нашем опыте в разработке мобильных приложений и, в частности, о том, как сэкономить время и усилия за счёт фреймворков.
Сегодня многие фреймворки, такие как Prism или Autofac, позволяют разработчику организовать модульную структуру приложения. При этом часто бывает непонятно, для чего ещё нужны модули, кроме как для пресловутой "красоты архитектуры".
В рамках доклада я расскажу о том, какие существуют подходы к организации модульной структуры, в каких фреймворках они реализованы и для решения каких задач дает преимущество каждый подход.
Мы рассмотрим область применения, архитектуру и основные особенности такой известной операционной системы как Android. Также расскажем о процессе создания мобильного приложения TulaDev, о проблемах с которыми мы столкнулись и о способах их решения. Вы можете найти приложение для Android <a>на Google Play</a>
This 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.
"Windows Azure для мобильных платформ". Владимир Юнев, MicrosoftYandex
Какое бы мобильное приложение вы не разрабатывали (на iOS, Android, Windows Phone, Windows 8 или веб-версию на HTML5), лучшим выбором для бэкенда будет единая облачная платформа. В докладе речь пойдёт о требованиях мобильных разработчиков к серверному функционалу и сложностях, возникающих при сборке своих велосипедов. На примере Windows Azure Mobile Services мы рассмотрим готовое облачное решение, не требующее настройки и сопровождения, как альтернативу своему бэкенду. Вы узнаете, как облачную инфраструктуру можно использовать для отправки push-уведомлений и как интегрировать авторизацию с социальными сетями; как работать с серверным кодом мобильного приложения через Git и как масштабировать мобильный бэкенд по требованию, в том числе автоматически.
Непомнящих Егор, Web-developer, ISS Art.
JS, Java, Iron Maiden. Практически вся моя жизнь связана так или иначе с IT — с 11 класса и до 5 курса я лидировал на олимпиадах, но погрузился в профессию уже на работе в ISS Art’е. Мною реализованы ряд интересных проектов — от мелких поделок на гитхабе, до крупных бизнес-порталов, системы мониторинга и прогнозирования состояния оборудования, векторного графического редактора для Flash-версии Google Maps, сложного плагина для SketchUp на Ruby и Unity-клиента для просмотра зданий под десктопными и мобильными платформами.
В общем, повидал всякие front-end’ы, не только Web. Буду рад поделиться опытом с коллегами по цеху. В докладе расскажу о том, как сократить объем кода вашего front-end'а на 7%.
Мы с вами узнаем, как предполагается использовать TPL Dataflow, рассмотрим плюсы и минусы его внедрения, а так же и особенности использования и настройки под конкретную задачу
Пользователи ожидают обновление данных в реальном времени. Твиты должны появляться без задержек. Заказы должны быть подтверждены и обработаны мгновенно. Приложения должны быть отзывчивыми. Мы, как разработчики, не хотим блокировать потоки в ожидании результатов. Мы хотим чтобы результаты были переданы нам как только будут готовы. Более того - при работе с коллекциями данных каждый отдельный объект должен быть передан сразу как будет готов. У нас есть инструменты для создания уведомлений, это легко. Нам нужны удобные инструменты для реакции на оповещения.
Из доклада вы узнаете как создавать удобные, отзывчивые и тестируемые приложения при помощи Reactive Extensions, как многократно сократить код обработки событий, а также как совместить существующий код на основе событий с данным фреймворком
Anemic Domain Model - антипаттерн или SOLID?GoSharp
Мартин Фаулер считает, что Anemic Domain Model (или бледная доменна модель) это плохо, и антипаттерн, противопоставляя ей Rich Domain Model с интегрированным поведением и бизнес логикой.
При этом есть другие мнения, возможно не столь распространенные. Я попробую рассказать об опыте использования Anemic Domain Model при разработке крупного корпоративного приложения. Какие плюсы и минусы мы нашли, и как преодолевали трудности.
Эволюция пользовательского интерфейса бизнес-приложений: от DOSa через окна в...GoSharp
Бизнес-приложения являются одним из самых массовых типов программного обеспечения; многие из людей проводят бОльшую часть своего дня, работая с ERP, CRM и другими программами, обслуживающими жизненный цикл предприятия. Как сделать программу, которая поддерживает сложные бизнес-процессы, простой в использовании? Чем можно пожертвовать ради удобства пользователя? На примере 1С мы рассмотрим, как эволюционировал пользовательский интерфейс деловых приложений со времен DOS до наших дней, какие методики используются для улучшения юзабилити.
UniversalApp "убийца" WPF или же это WPF+ ?GoSharp
Доклад освящает основные вопросы касающиеся Universal App и WPF, например:
• Развитие WPF и появление WinRT
• Унификация Windows-платформы и UAP
• Инвестиции в WPF
• Как WPF стыкуется с UAP + матрица миграции (когда и как стоит мигрировать, а когда нет)
UI тестирование WPF приложений в Дойче БанкеGoSharp
Мы расскажем о техническом решении для тестирования WPF приложений в Дойче Банке, использующем простую технику DLL-иньекции.
Поймем, что можно легко тестировать UI без библиотеки Microsoft UI Automation и даже напишем свой собственный подобный мини-фреймворк.
Практика применения Enterprise Architect и T4-шаблонов для разработки системы...GoSharp
Разработка любой крупной системы сопряжена со множеством трудностей, особенно когда система должна целиком функционировать в базе данных. А из-за невозможности создавать и поддерживать стандартные конструкции для проверки бизнес-правил, обработки исключений, логирования ошибочных данных разрабатываемые системы получаются еще и отнюдь не простыми в сопровождении.
В докладе будет представлено решение, основанное на совмещении рукописного кода и сгенерированных стандартных конструкций, поддерживающее разработку в подходе Model First и автоматизированное распространение изменений в структуру базы данных и хранимые процедуры. Реализация описанного подхода будет продемонстрирована на связке Enterprise Architect и T4-шаблонов кодогенерации.
Базовые возможности EF и их особенности, делающие применение EF в реальных проектах грустным и затратным занятием. Flexberry ORM — отечественный ORM, основные сценарии его применения, сравнение производительности с EF. Короткий рассказ с картинками и примерами в исходных кодах.
Проектирование сетевой инфраструктуры под SOA проекты ASP.NETGoSharp
При планировании сервисно-ориентированной архитектуры проекта крайне важно учитывать требования к работе сервиса в существующих реалиях Enterprise инфраструктуры. Если эти системы строятся независимо, то возникнут проблемы в размещении сервисов на боевом окружении, сложности управления, безопасности и надёжности. В докладе вы увидите подходы к проектированию инфраструктуры под сервисы и сервисов под инфраструктуру, а так же примеры борьбы со сложностью планирования инфраструктуры.
Мониторинг приложений ASP.NET на основе сервиса Application InsightsGoSharp
После запуска приложения в продакшн в большинстве случаев мы отправляем его в свободное плавание и не знаем о его работе ничего. Сервис Application Insights призван заполнить этот пробел и получить исчерпывающие знания о том, как работает ваше приложение и какие усилия мы должны приложить, чтобы сделать его лучше.
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETGoSharp
Наша команда в DevExpress недавно выпустила Preview версию нового продукта, RTF web-редактора – ASPxRichEdit.
Продукт требует высокой отзывчивости на действия пользователя и максимальной производительности. Поэтому клиент получился «толстым» в отличие от «тонких клиентов» большинства бизнес-приложений.
В составе продукта два полнофункциональных компонента - клиентский и серверный текстовые процессоры. Оба компонента работают независимо друг от друга. Клиентская часть создавалась как оптимизированная версия серверного компонента, переписанного с .NET на TypeScript.
Клиентская часть не уступает в сложности серверной. Кроме того, возникают дополнительные проблемы синхронизации состояний моделей на клиенте и сервере и глубокого тестирования клиент-серверного взаимодействия.
В этом докладе вы узнаете, как мы разрабатывали этот продукт, какие проблемы встретили и какие методики тестирования использовали.
Из доклада Вы узнаете как работают две основные буквы mVC. Controller. Каким образом запросы находят необходимые Action. Жизненный цикл объектов при запросах. Views. Что такое View, каким образом рисуется представление для frontend. Как написать свой ViewEngine.
Помимо этого - о том как хостится приложение, на сервере и как можно совместно использовать ресурсы для нескольких приложений либо масштабировать приложения по нескольким ресурсам.
Кросплатформенная разработка на ASP.NET vNextGoSharp
Из доклада вы узнаете о возможностях поддержки других платформ в ASP.NET vNEXT. На живом примере будет показано, как разворачивать ASP.NET под *nix и как программировать в этой среде.
Внедрение зависимостей в ASP.NET MVС и ASP.NET vNextGoSharp
По мере развития веб-проекта сложность бизнес-логики неизбежно растёт. Это замедляет темпы разработки, системы становятся непонятными и запутанными. Связной – не исключение. Одним из наших решений проблемы является Dependency Injection. В докладе вы узнаете о том, как DI понижает сложность бизнес-логики, почему мы в Связном считаем DI DI в ASP.NET MVC эффективным решением и что нового для DI появилось в ASP.NET vNext.
Платформа ASP.NET стоит на пороге глобальных изменений. Какие из них самые важные? Как они повлияют на процесс разработки? Стоит ли бояться и как подготовиться? В рамках доклада мы обсудим новый виток развития технологии и возможности, которые появятся у нас с выходом ASP.NET 5(vNext) и Visual Studio 2015.
Коучинг команд разработки и коучинговые инструменты в работе тимлидаGoSharp
Работа тимлида – самая трудная менеджерская работа. Он уже менеджер, его подчиненные еще нет, они не хотят и не обязаны вникать в его трудности. Ответственность уже есть, возможностей еще не так много. К этой работе редко готовят специально. Как и куда расти тимлиду? Это Вы узнаете в докладе. Какие навыки развивать. И как их развивать. Что такое коучинг команд и подойдет ли он в вашем случае. Всему можно научиться на практике, но воспользоваться чужим опытом быстрее и дешевле во многих случаях. Кстати, как определить, что именно вам чужой опыт не подойдет, вы тоже узнаете в докладе.
Взаимное влияние Source Code Management и других средств организации разработкиGoSharp
1. Почему важны не используемые инструменты, а модель организации работы и стратегия выпуска релизов.
2. Переход к более информативной истории изменений: от летописи разработки к истории развития продукта.
3. Связь между системами управления проектом и исходным кодом должна быть двусторонней.
4. Выбор разумной политики создания веток.
5. Хорошая архитектура и постоянное слияние делают непрерывную интеграцию более эффективной.
Толкование термина Devops и почему это модный buzzword
1. Гибкая эксплутация, по аналогии с гибкой разработкой и в качестве ее логичного продолжения.
2. Зачем это все нужно на примере интернет стартапа.
3. В *nix все хорошо, у Windows не очень.
4. Как сделать конвейер по доставке изменений начиная с комита разработчика и заканчивая обновлением программы-агента на машине пользователя.
5. Git и gitflow как норма рабочего процесса в команде.
6. CI - билды, ветки, артефакты.
7. Участие QA в процессе, автоматические тесты.
8. Octopus deploy и счастье. Октопаки в качестве контейнеров.
9. Мониторинг серверов и оповещения - New relic, Pager duty.
Доски проектов и продуктов на TFS: Agile-визуализация на уровне компанииGoSharp
Визуализация - основной практический инструмент Lean, Agile, TOC и прочих современных подходов к разработке программного обеспечения. Например, Task board отображает процесс разработки, помогая понять статус работ и заметить возможные проблемы, а Burndown отображает прогресс по обязательствам спринта, помогая реагировать на риски отставания. Такие инструменты визуализации применяют команды в конкретных проектах, но применима ли визуализация на уровне целой компании? Я расскажу о визуализации на основе Microsoft Team Foundation Server, которая помогает согласовать возможности разработки, ожидания бизнеса и стратегию компании - разработчика программного обеспечения, ведущей 50 проектов по развитию 20 продуктов.
Доски проектов и продуктов на TFS: Agile-визуализация на уровне компании
Паттерны быстрой разработки WPF MVVM бизнес-приложений
1. Паттерны быстрой
разработки WPF MVVM
бизнес-приложений.
(Несколько
типовых
задач,
возникающих
при
разработке
бизнес-‐приложений
на
платформе
WPF,
и
эффективные
способы
решения
этих
задач,
воплощенные
в
DevExpress
Scaffolding
Wizard
-‐
инструменте
быстрой
разработки
CRUD
и
LOB
приложений.)
2. 1. Бизнес-‐приложения,
CRUD-‐приложения,
DevExpress
Scaffolding.
2. Навигация
в
приложении.
3. Простая
асинхронная
загрузка
данных.
4. Асинхронная
загрузка
данных
и
lazy
loading
navigaYon
properYes.
5. Instant
Feedback
Mode
6. Формы
редактирования.
WPF
bindings
and
EnYty
Framework
objects.
10. Асинхронная
загрузка
и
EnYty
Framework.
class
Order
{
long
Id;
decimal
Discount;
decimal
UnitPrice;
byte[]
Picture;
int
Quantity;
long
ProductId;
virtual
Product
Product;
}
class
Product
{
long
Id;
string
Name;
byte[]
Picture;
string
QuantityPerUnit;
double
UnitPrice;
string
Description;
}
class
OrderInfo
{
long
Id;
decimal
UnitPrice;
int
Quantity;
string
ProductName;
}
Id
=
x.Id
UnitPrice
=
x.UnitPrice
QuanYty
=
x.QuanYty
ProductName
=
x.ProductName
.Select(x
=>
new
OrderInfo()
{
…
})
Repository
EnYty
ProjecYon
EnYty
11. Data
Layer
View
Model
Data
Grid
Control
IQueryable
Async
Loading
ObservableCollecYon
Data
Layer
View
Model
Data
Grid
Control
IQueryable
EnYty
SelectedItem
ItemsSource
SelectedItem
ItemsSource
Async
Loading
SelectedEnYty
SelectedEnYty
Instant
Feedback
Mode.
12. EnYty
Framework.
Редактирование
enYty.
• Обновление
эдиторов
на
форме
при
изменении
свойства
enYty
<dxe:TextEdit
EditValue="{Binding
Entity.Name,
UpdateSourceTrigger=PropertyChanged,
ValidatesOnDataErrors=True,
NotifyOnSourceUpdated=True}"
/>
• Обновление
состояния
вьюмодели
при
изменении
enYty
эдитором
<dxe:TextEdit
EditValue="{Binding
Entity.Name,
UpdateSourceTrigger=PropertyChanged,
ValidatesOnDataErrors=True,
NotifyOnSourceUpdated=True}"
/>