Представление спикеров конференции Desktop UI & Business Application. Про бэкенд

в 5:44, , рубрики: .net, architecture, backend, C#, Conference, ef, linq2sql, orm, reactive extensions, rx, TPL Dataflow, Блог компании GeekFamily, разработка под windows, метки: , , ,

Всем привет!

Сегодня мы хотим рассказать о том, какие интересные темы вы сможете обсудить со спикерами и найти неравнодушных к этим темам людей.

Ни для кого не секрет, что основной целью наших конференций является дать возможность людям познакомиться на почве профессиональных интересов. Доклады являются пищей для размышления и вводной частью к последующим дискуссиям различной степени детальности. На наш взгляд, такое общение способствует осознанию собственных убеждений в более глубокой мере, так как вы сталкиваетесь с другими, порой диаметрально противоположными мнениями. Так что же приготовлено для конференции Desktop UI & Business Application?

Представление спикеров конференции Desktop UI & Business Application. Про бэкенд - 1

Сначала представим темы, которые относятся к бэкенду, к серверной части, которая будет интересна всем разработчикам, занятым в сфере энтерпрайз разработки. Т.е. это и WPF, и WinForm, и ASP.NET.

История представления реальных данных и процессов в мире программ имеет богатую и долгую историю. Можно сказать, что все началось с транзакционных скриптов, и процедурного программирования. Когда доменную модель пытались полностью представить в виде набора процедур и данных, которые хранятся в базе данных. По сути, все крутилось вокруг таблиц. Шагом вперед, вместе с ООП разработкой стала модель табличных данных, которые уже были представлены набором данных в памяти программы. Теперь таблицы стали отправной точкой в представлении доменной логики. Процедуры уже не объявлялись в глобальном пространстве имен, а были «пристегнуты» к определенной таблице, в зависимости от своих функций. Дальнейшее удешевление и распространение компьютеров привело к тому, что все более широкое применение находило компьютерное моделирование. В то же время сложные реальные доменные модели надо было отображать как можно более проще для поддержки и расширения. Так Мартин Фаулер предложил, а Эрик Эванс развил идею Domain Driven Design, которой большинство сейчас придерживается, в той или иной степени.

Представление спикеров конференции Desktop UI & Business Application. Про бэкенд - 2Однако тут есть нюанс. Мартин Фаулер постулирует, что анемичный домен по своей сути антипаттерн и его стоит всячески избегать. Он противопоставляет ей Rich Domain Model с интегрированным поведением и бизнес логикой. Но так ли это на самом деле? Что изменилось с далекого 2002 года, когда была опубликована книга «Шаблоны корпоративных приложений» и с 2003, когда была опубликована книга «Domain-Driven Design: Tackling Complexity in the Heart of Software»? Дискуссию по этому вопросу поднимет Влад Клековкин, главный разработчик компании «Гарант».
 
 

Погружаясь в дебри доменной области, быстро обнаруживаешь, что правильно сконструированная доменная модель это только начало всего решения. Хорошая доменная модель, будь то Rich Model или Anemic Model, зависит от конкретного случая – это только по сути статический слепок данных. Любой толковый архитектор или интересующийся человек, быстро вам скажет, что динамическая модель столь же важна. Движение – есть жизнь. Кто заинтересовался может полистать Розански и Вудса

Представление спикеров конференции Desktop UI & Business Application. Про бэкенд - 3

В .NET Framework движение реального мира, его события отображаются с помощью… эмм… событий (events). Так же, как и события нашего мира, они наступают в неопределенный во времени момент, но мы знаем, что в принципе должно произойти. И вот тут начинаются проблемы. Куча подписок, забытые отписки – могут привести к тому, что называется Memory fog и другим проблемам. Кроме того, сложные сценарии взаимодействия разных событий, их фильтрации, переработки, комбинации, обработка в разных потоках вовлекают в работу совершенно разные абстракции нижнего и высокого уровня, от Monitor, ManualResetEventSlim до TaskFactory. Представление спикеров конференции Desktop UI & Business Application. Про бэкенд - 4 Зоопарк на выезде. Возможно во многих случаях, лучшим решением будет использование Reactive Extension (Rx). Библиотека давно существует, постоянно развивается и направлена как раз на потоковую обработку задач c различными нюансами. Будь то многопоточность, возможность реализации шаблона retry и много чего еще, но в очень компактном виде. Такие сложные примеры из реальной практики представит Андрей Дятлов, техлид Global PS. Кроме этого вы увидите, как легко в Rx управлять временем в тестах. Никакой синтетики с бесполезными примерами, только настоящий код.

Представление спикеров конференции Desktop UI & Business Application. Про бэкенд - 5Некоторой альтернативой Rx может выступать TPL Dataflow. Этот набор API предназначенный для комплексной обработки данных вошел в .NET Framework 4.5. Все знакомы сейчас с ядром TPL, т.е. используют Task<T> напрямую, а также синтаксический сахар async/await из более поздних релизов. Но не одними «тасками» жива библиотека и предоставляет возможность обработки сложных потоков данных на основе модели многопоточности Actor. И тем интереснее будет заслушать доклад про Rx и TPL Dataflow и задать спикерам каверзные вопросы (читай «устроить холивар»), сравнивая, что может один и не может другой фреймфорк. Эту тему представит Михаил Веселов, старший программист из питерского отделения Luxoft.

Если так серьезно стали говорить о том, как обрабатывать большие потоки данных по сложным правилам, то неизменно встает вопрос откуда данные брать и куда их сохранять. Точнее даже каким образом их брать и сохранять, т.е. какой ORM выбрать. На данный момент стандартом де-факто становится Entity Framework, который активно разрабатывается и продвигается, и уже дошел до седьмой основной версии. Мы уже высказывались в предыдущем посте о том, что «Золотой молоток» это нехорошо, и надо всегда подбирать подходящий инструмент для своих нужд. Смотреть по сторонам в поисках новых инструментов, которые возможно лучше подойдут для ваших нужд: будь то MicroORM или же полновесная реализация чего-то в духе NHibernate.

Наверно ни для кого не секрет, что один из самых посещаемых и нагруженных сайтов для разработчиков является StackOverflow.com, который, в свою очередь, для работы с данными использует Linq2SQL, который MS заживо похоронила, можно сказать. Признаюсь, что я до сих пор питаю к Linq2SQL теплые чувства и мне он казался более удобной системой. Но в то же время признаю, что EF выросший из проекта «М» дал нам новые возможности в использовании шаблонов CodeFirst и DataFirst. Впрочем никто не идеален, и надо искать новые проекты и возможности. Представление спикеров конференции Desktop UI & Business Application. Про бэкенд - 6Так вот о таком новом ORM и пойдет речь в докладе Андрея Колчанова, технического эксперта Flexberry platform, руководителя отдела разработок ООО «ИТСК». Он расскажет, чем его не устраивает нынешний флагман в виде EF, отчего они уже много лет используют свой ORM для реального бизнеса, включая банковский сегмент и онлайн платежи.

Долгое время ORM Flexberry была закрытой разработкой, но видимо в соответствии с рекомендациями ребят из 37 Signals, было решено выпустить продукт в мир, чтобы нанести непоправимого добра. Андрей проведет тесты EF и Flexberry на одном и том же проекте, чтобы показать вживую разницу между двумя подходами, и он уверен, что сможет поколебать вашу уверенность в лидирующих позициях EF.

Коллеги, ни одна технология не предоставит нам «серебряную пулю» для решения наших проблем, но мы можем и должны искать лучшие инструменты и практики, чтобы стать лучше. Конференции в этом плане дают хороший вектор для развития и собирают вместе достаточное количество людей, чтобы найти единомышленников и натолкнуться на противоположное мнение.

Приходите 11 апреля на конференцию чтобы стать ещё эффективнее в решении своих задач!

Представление спикеров конференции Desktop UI & Business Application. Про бэкенд - 7

Автор: VioletTape

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js