SlideShare a Scribd company logo
MSK.NET #10
Web Development with ASP.NET
CORE and React.JS
Web Evolution
Yesterday
Environment
• Predicted homogenous consumer environment
• Restricted types of clients (browser, desktop)
As a result this led to:
• Thick server and thin client
• Server is responsible not only for business
logic, but for content rendering as well
• Client is responsible for content presentation
Today
Environment
• Unpredicted heterogeneous consumer
environment
• Unrestricted types of clients
• Different browsers, different devices with different
form factors
• Not only desktops, but mobiles as well
• Not only people, but applications and machines
As a result this lead to:
• Segregation of Duties between server and clients
• Standards in connectivity protocols and data
formats
• Server is responsible only for business logic
• Server is exposed outside only data and services via
API
• Clients are responsible for content rendering and
presentation
High-Level Architecture
Desktop Mobile
API Server API Server API Server
Content Server
Static files & Assets
Node.JS Server
Initial pre-
rendering & SEO
Load Balancer
Browser
ClientSideFront-EndBack-End
Technology StackClientFront-EndBack-End
• IDE: Visual Studio 2015 with Update 3, Visual Studio 2017
• SOLUTION: REST API, ASP.NET CORE
• ORM: EF.CORE
• DATABASE: MS SQL SERVER
• HOSTING: KESTREL
• IDE: Visual Studio Code, IntelliJ IDEA 2017
• VIEW: React.JS
• MODEL: Redux
• TOOLS: WebPack (bundling, minification, cross-compilation with babel)
• HOSTING: Apache, Express, Firebase, Node.JS
• BROWSER: Chrome
• PRESENTATION & LAYOUT: Bootstrap
• TOOLS: React & Redux DevTools for Chrome (debug, monitoring)
Back-End Architecture
FRONT-END
DATABASE
KESTREL WEB SERVER
ASP.NET CORE APPLICATION
REST API CONTROLLERS
ENTITY FRAMEWORK CORE
BUSINESS SERVICES LAYER
VIEW MODEL ENTITIES
DOMAIN MODEL ENTITIES
DB CONTEXT or REPOSITORY & UOW PATTERNS
JSON
RAW DATA
CRUD+JSON
SQL
HTTP
Back-End REST API
Front-End Web Server (index.html, bundle.js, assets)
Single Page Application
Routing Middleware (Public & Protected Routes)
(UI state, Model state,
Router state)
React Framework
Redux Store
Fetching Middleware
Page Layouts (Container Components)
Presentation Components Input Forms
UI Components (Bootstrap, jQWidgets)
Development Tools (Logging, React & Redux DevTools)
Front-End Architecture
React Architecture
• React means what is “V” in MVC pattern.
• React is declarative and component-based. It
mixes JavaScript expressions with standard HTML
markup.
• React uses one-way data flow via “props” which
are down streamed from root element to all
children in component hierarchy. React
components are pure functions with props as
input and rendering as output. Props are
immutable.
• React creates virtual DOM for components tree.
Manipulations are done in virtual DOM, because
interventions with objects in browser DOM are
much more expensive then interventions with
POJO objects in JavaScript runtime. On each
rendering React reconciles changes between
current UI state and next UI state and only
applies necessary updates in browser DOM.
• React has a powerful composition model and
encourages using composition instead of
inheritance. It is possible via children prop and
high-ordered components.
React
Redux Architecture
• Redux attempts to make state mutations more
predictable. With some principles below.
• Single source of truth. The state of your
application is stored within one single store.
• State is read-only. The only way to change the
state is to make an action.
• Changes are made with reducers. Reducers are
pure functions which take the current state, an
action and return the next state. No side effects.
No API calls. No mutations. Just a calculation.
• Components are pure functions. Your React
components are subscribed to necessary slice of
application state in Redux store which is mapped
to components props. Once changes they are
interested in are happened, components are
automatically re-rendered with new props
extracted from the new state.
• Let’s create a simple web application – classic TODO list.
• Develop back-end with Asp.Net Core.
• Develop front-end with Reacj.JS and Redux.
Live Coding
• What else? React Native.
• What is next? React new generation – React Fiber.
• No cross-compilation. No interpretation. Web Assembly.
• No vendors. Try Open Source.
Web Development Tomorrow
• Speaker: Dmitry Tezhelnikov
• Email: dmitry.tezhelnikov@gmail.com
• Back-end demo source code:
https://github.com/DmitryTezh/msk.net-backend-demo.git
• Front-end demo source code:
https://github.com/DmitryTezh/msk.net-frontend-demo.git
• Video: https://www.youtube.com/watch?v=wg6QPyxDDho
Contacts

More Related Content

What's hot

Writing Scalable React Applications: Introduction
Writing Scalable React Applications: IntroductionWriting Scalable React Applications: Introduction
Writing Scalable React Applications: Introduction
Klika Tech, Inc
 
Request-Response Cycle of Ruby on Rails App
Request-Response Cycle of Ruby on Rails AppRequest-Response Cycle of Ruby on Rails App
Request-Response Cycle of Ruby on Rails App
Nathalie Steinmetz
 
Rails request & middlewares
Rails request & middlewaresRails request & middlewares
Rails request & middlewares
Santosh Wadghule
 
Flux architecture
Flux architectureFlux architecture
Flux architecture
Flux architectureFlux architecture
Flux architecture
Boyan Mihaylov
 
Beyond The Rails Way
Beyond The Rails WayBeyond The Rails Way
Beyond The Rails Way
Andrzej Krzywda
 
Rails Request & Middlewares
Rails Request & MiddlewaresRails Request & Middlewares
Rails Request & Middlewares
Santosh Wadghule
 
Web : Request-Response Lifecycle (Ruby on Rails)
Web : Request-Response Lifecycle (Ruby on Rails)Web : Request-Response Lifecycle (Ruby on Rails)
Web : Request-Response Lifecycle (Ruby on Rails)
Rakesh Jha
 
Asp .net folders and web.config
Asp .net folders and web.configAsp .net folders and web.config
Asp .net folders and web.config
baabtra.com - No. 1 supplier of quality freshers
 
Flux
FluxFlux
A Designer's Intro to Oracle JET
A Designer's Intro to Oracle JETA Designer's Intro to Oracle JET
A Designer's Intro to Oracle JET
Lauren Beatty
 
Architectural Patterns for Scaling Microservices and APIs - GlueCon 2015
Architectural Patterns for Scaling Microservices and APIs - GlueCon 2015Architectural Patterns for Scaling Microservices and APIs - GlueCon 2015
Architectural Patterns for Scaling Microservices and APIs - GlueCon 2015
Lori MacVittie
 
React + Redux for Web Developers
React + Redux for Web DevelopersReact + Redux for Web Developers
React + Redux for Web Developers
Jamal Sinclair O'Garro
 
Introduce flux & react in practice
Introduce flux & react in practiceIntroduce flux & react in practice
Introduce flux & react in practice
Hsuan Fu Lien
 
Introduction to SQLStreamBuilder: Rich Streaming SQL Interface for Creating a...
Introduction to SQLStreamBuilder: Rich Streaming SQL Interface for Creating a...Introduction to SQLStreamBuilder: Rich Streaming SQL Interface for Creating a...
Introduction to SQLStreamBuilder: Rich Streaming SQL Interface for Creating a...
Eventador
 
So you think you can scale
So you think you can scaleSo you think you can scale
So you think you can scale
Lori MacVittie
 
Developing an aspnet web application
Developing an aspnet web applicationDeveloping an aspnet web application
Developing an aspnet web application
Rahul Bansal
 
Introduction to React
Introduction to ReactIntroduction to React
Introduction to React
Austin Garrod
 
Oracle JET and WebSocket
Oracle JET and WebSocketOracle JET and WebSocket
Oracle JET and WebSocket
andrejusb
 
Introduction to asp.net
Introduction to asp.netIntroduction to asp.net
Introduction to asp.net
SHADAB ALI
 

What's hot (20)

Writing Scalable React Applications: Introduction
Writing Scalable React Applications: IntroductionWriting Scalable React Applications: Introduction
Writing Scalable React Applications: Introduction
 
Request-Response Cycle of Ruby on Rails App
Request-Response Cycle of Ruby on Rails AppRequest-Response Cycle of Ruby on Rails App
Request-Response Cycle of Ruby on Rails App
 
Rails request & middlewares
Rails request & middlewaresRails request & middlewares
Rails request & middlewares
 
Flux architecture
Flux architectureFlux architecture
Flux architecture
 
Flux architecture
Flux architectureFlux architecture
Flux architecture
 
Beyond The Rails Way
Beyond The Rails WayBeyond The Rails Way
Beyond The Rails Way
 
Rails Request & Middlewares
Rails Request & MiddlewaresRails Request & Middlewares
Rails Request & Middlewares
 
Web : Request-Response Lifecycle (Ruby on Rails)
Web : Request-Response Lifecycle (Ruby on Rails)Web : Request-Response Lifecycle (Ruby on Rails)
Web : Request-Response Lifecycle (Ruby on Rails)
 
Asp .net folders and web.config
Asp .net folders and web.configAsp .net folders and web.config
Asp .net folders and web.config
 
Flux
FluxFlux
Flux
 
A Designer's Intro to Oracle JET
A Designer's Intro to Oracle JETA Designer's Intro to Oracle JET
A Designer's Intro to Oracle JET
 
Architectural Patterns for Scaling Microservices and APIs - GlueCon 2015
Architectural Patterns for Scaling Microservices and APIs - GlueCon 2015Architectural Patterns for Scaling Microservices and APIs - GlueCon 2015
Architectural Patterns for Scaling Microservices and APIs - GlueCon 2015
 
React + Redux for Web Developers
React + Redux for Web DevelopersReact + Redux for Web Developers
React + Redux for Web Developers
 
Introduce flux & react in practice
Introduce flux & react in practiceIntroduce flux & react in practice
Introduce flux & react in practice
 
Introduction to SQLStreamBuilder: Rich Streaming SQL Interface for Creating a...
Introduction to SQLStreamBuilder: Rich Streaming SQL Interface for Creating a...Introduction to SQLStreamBuilder: Rich Streaming SQL Interface for Creating a...
Introduction to SQLStreamBuilder: Rich Streaming SQL Interface for Creating a...
 
So you think you can scale
So you think you can scaleSo you think you can scale
So you think you can scale
 
Developing an aspnet web application
Developing an aspnet web applicationDeveloping an aspnet web application
Developing an aspnet web application
 
Introduction to React
Introduction to ReactIntroduction to React
Introduction to React
 
Oracle JET and WebSocket
Oracle JET and WebSocketOracle JET and WebSocket
Oracle JET and WebSocket
 
Introduction to asp.net
Introduction to asp.netIntroduction to asp.net
Introduction to asp.net
 

Similar to Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и React.JS»

Reactjs notes.pptx for web development- tutorial and theory
Reactjs  notes.pptx for web development- tutorial and theoryReactjs  notes.pptx for web development- tutorial and theory
Reactjs notes.pptx for web development- tutorial and theory
jobinThomas54
 
Mastering react with redux
Mastering react with reduxMastering react with redux
Mastering react with redux
Gaurav Singh
 
React.js for Rails Developers
React.js for Rails DevelopersReact.js for Rails Developers
React.js for Rails Developers
Arkency
 
Performance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React ApplicationsPerformance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React Applications
Denis Izmaylov
 
React.js vs node.js
React.js vs node.jsReact.js vs node.js
React.js vs node.js
Metricoid Technology
 
Comparing Angular and React JS for SPAs
Comparing Angular and React JS for SPAsComparing Angular and React JS for SPAs
Comparing Angular and React JS for SPAs
Jennifer Estrada
 
React js
React jsReact js
React js
Nikhil Karkra
 
Progressive Web Apps and React
Progressive Web Apps and ReactProgressive Web Apps and React
Progressive Web Apps and React
Mike Melusky
 
React.js at Cortex
React.js at CortexReact.js at Cortex
React.js at Cortex
Geoff Harcourt
 
React-Js-Online-Training-9028522.ppsx
React-Js-Online-Training-9028522.ppsxReact-Js-Online-Training-9028522.ppsx
React-Js-Online-Training-9028522.ppsx
Kulbir4
 
React js Online Training
React js Online TrainingReact js Online Training
React js Online Training
Learntek1
 
Top 10 Javascript Frameworks For Easy Web Development
Top 10 Javascript Frameworks For Easy Web DevelopmentTop 10 Javascript Frameworks For Easy Web Development
Top 10 Javascript Frameworks For Easy Web Development
Technostacks Infotech Pvt. Ltd.
 
Introduction to react native with redux
Introduction to react native with reduxIntroduction to react native with redux
Introduction to react native with redux
Mike Melusky
 
An Overview of the React Ecosystem
An Overview of the React EcosystemAn Overview of the React Ecosystem
An Overview of the React Ecosystem
FITC
 
Intorduction to struts
Intorduction to strutsIntorduction to struts
Intorduction to struts
Anup72
 
React gsg presentation with ryan jung & elias malik
React   gsg presentation with ryan jung & elias malikReact   gsg presentation with ryan jung & elias malik
React gsg presentation with ryan jung & elias malik
Lama K Banna
 
Javascript frameworks
Javascript frameworksJavascript frameworks
Javascript frameworks
RajkumarJangid7
 
Angular jS Introduction by Google
Angular jS Introduction by GoogleAngular jS Introduction by Google
Angular jS Introduction by Google
ASG
 
React for .net developers
React for .net developersReact for .net developers
React for .net developers
macsdickinson
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...
Mark Roden
 

Similar to Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и React.JS» (20)

Reactjs notes.pptx for web development- tutorial and theory
Reactjs  notes.pptx for web development- tutorial and theoryReactjs  notes.pptx for web development- tutorial and theory
Reactjs notes.pptx for web development- tutorial and theory
 
Mastering react with redux
Mastering react with reduxMastering react with redux
Mastering react with redux
 
React.js for Rails Developers
React.js for Rails DevelopersReact.js for Rails Developers
React.js for Rails Developers
 
Performance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React ApplicationsPerformance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React Applications
 
React.js vs node.js
React.js vs node.jsReact.js vs node.js
React.js vs node.js
 
Comparing Angular and React JS for SPAs
Comparing Angular and React JS for SPAsComparing Angular and React JS for SPAs
Comparing Angular and React JS for SPAs
 
React js
React jsReact js
React js
 
Progressive Web Apps and React
Progressive Web Apps and ReactProgressive Web Apps and React
Progressive Web Apps and React
 
React.js at Cortex
React.js at CortexReact.js at Cortex
React.js at Cortex
 
React-Js-Online-Training-9028522.ppsx
React-Js-Online-Training-9028522.ppsxReact-Js-Online-Training-9028522.ppsx
React-Js-Online-Training-9028522.ppsx
 
React js Online Training
React js Online TrainingReact js Online Training
React js Online Training
 
Top 10 Javascript Frameworks For Easy Web Development
Top 10 Javascript Frameworks For Easy Web DevelopmentTop 10 Javascript Frameworks For Easy Web Development
Top 10 Javascript Frameworks For Easy Web Development
 
Introduction to react native with redux
Introduction to react native with reduxIntroduction to react native with redux
Introduction to react native with redux
 
An Overview of the React Ecosystem
An Overview of the React EcosystemAn Overview of the React Ecosystem
An Overview of the React Ecosystem
 
Intorduction to struts
Intorduction to strutsIntorduction to struts
Intorduction to struts
 
React gsg presentation with ryan jung & elias malik
React   gsg presentation with ryan jung & elias malikReact   gsg presentation with ryan jung & elias malik
React gsg presentation with ryan jung & elias malik
 
Javascript frameworks
Javascript frameworksJavascript frameworks
Javascript frameworks
 
Angular jS Introduction by Google
Angular jS Introduction by GoogleAngular jS Introduction by Google
Angular jS Introduction by Google
 
React for .net developers
React for .net developersReact for .net developers
React for .net developers
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...
 

More from MskDotNet Community

Антон Сысоев «IIoT: на границе HW и .NET»
Антон Сысоев «IIoT: на границе HW и .NET»Антон Сысоев «IIoT: на границе HW и .NET»
Антон Сысоев «IIoT: на границе HW и .NET»
MskDotNet Community
 
Николай Гусев «Функциональное программирование для C# разработчиков»
 Николай Гусев «Функциональное программирование для C# разработчиков» Николай Гусев «Функциональное программирование для C# разработчиков»
Николай Гусев «Функциональное программирование для C# разработчиков»
MskDotNet Community
 
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
MskDotNet Community
 
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестов
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестовЮлия Ковалёва. Fscheck — альтернативный путь для unit тестов
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестов
MskDotNet Community
 
Владимир Кочетков "OWASP TOP 10 для.NET"
Владимир Кочетков  "OWASP TOP 10 для.NET"Владимир Кочетков  "OWASP TOP 10 для.NET"
Владимир Кочетков "OWASP TOP 10 для.NET"
MskDotNet Community
 
Дмитрий Сошников Искусственный интеллект и нейросети для .NET-разработчиков
Дмитрий Сошников    Искусственный интеллект и нейросети для .NET-разработчиковДмитрий Сошников    Искусственный интеллект и нейросети для .NET-разработчиков
Дмитрий Сошников Искусственный интеллект и нейросети для .NET-разработчиков
MskDotNet Community
 
Викторина MskDotNet Субботник
Викторина MskDotNet СубботникВикторина MskDotNet Субботник
Викторина MskDotNet Субботник
MskDotNet Community
 
Елизавета Голенок Переходим на mono или как это было
Елизавета Голенок  Переходим на mono или как это былоЕлизавета Голенок  Переходим на mono или как это было
Елизавета Голенок Переходим на mono или как это было
MskDotNet Community
 
Иван Кочуркин. Теория и практика парсинга формальных языков
Иван Кочуркин. Теория и практика парсинга формальных языковИван Кочуркин. Теория и практика парсинга формальных языков
Иван Кочуркин. Теория и практика парсинга формальных языков
MskDotNet Community
 
Павел Притчин "Конфигурации в.NET"
Павел Притчин  "Конфигурации в.NET"Павел Притчин  "Конфигурации в.NET"
Павел Притчин "Конфигурации в.NET"
MskDotNet Community
 
Андрей Кирпичев "Гибкая модульность инструментами АОП"
Андрей Кирпичев  "Гибкая модульность инструментами АОП"Андрей Кирпичев  "Гибкая модульность инструментами АОП"
Андрей Кирпичев "Гибкая модульность инструментами АОП"
MskDotNet Community
 
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
 Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере" Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
MskDotNet Community
 
Андрей Матвеев "Основные принципы микросервисов и их реализации"
Андрей Матвеев "Основные принципы микросервисов и их реализации"Андрей Матвеев "Основные принципы микросервисов и их реализации"
Андрей Матвеев "Основные принципы микросервисов и их реализации"
MskDotNet Community
 
Александр Сурков «Вещи» в «Интернете вещей»
Александр Сурков «Вещи» в «Интернете вещей»Александр Сурков «Вещи» в «Интернете вещей»
Александр Сурков «Вещи» в «Интернете вещей»
MskDotNet Community
 
Петр Тимошевский «Industrial IoT на практике»
Петр Тимошевский «Industrial IoT на практике»Петр Тимошевский «Industrial IoT на практике»
Петр Тимошевский «Industrial IoT на практике»
MskDotNet Community
 
Стас Павлов «Построение безопасной архитектуры IoT решений на примере Azure I...
Стас Павлов «Построение безопасной архитектуры IoT решений на примере Azure I...Стас Павлов «Построение безопасной архитектуры IoT решений на примере Azure I...
Стас Павлов «Построение безопасной архитектуры IoT решений на примере Azure I...
MskDotNet Community
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»
MskDotNet Community
 
Кирилл Маурин «Проектирование и разработка модульных приложений»
Кирилл Маурин «Проектирование и разработка модульных приложений»Кирилл Маурин «Проектирование и разработка модульных приложений»
Кирилл Маурин «Проектирование и разработка модульных приложений»
MskDotNet Community
 
Владимир Кошелев «Автоматический поиск ошибок»
Владимир Кошелев «Автоматический поиск ошибок»Владимир Кошелев «Автоматический поиск ошибок»
Владимир Кошелев «Автоматический поиск ошибок»
MskDotNet Community
 

More from MskDotNet Community (19)

Антон Сысоев «IIoT: на границе HW и .NET»
Антон Сысоев «IIoT: на границе HW и .NET»Антон Сысоев «IIoT: на границе HW и .NET»
Антон Сысоев «IIoT: на границе HW и .NET»
 
Николай Гусев «Функциональное программирование для C# разработчиков»
 Николай Гусев «Функциональное программирование для C# разработчиков» Николай Гусев «Функциональное программирование для C# разработчиков»
Николай Гусев «Функциональное программирование для C# разработчиков»
 
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
Кирилл Ветчинкин Практика использования .NET Core на ОС Linux с применением а...
 
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестов
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестовЮлия Ковалёва. Fscheck — альтернативный путь для unit тестов
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестов
 
Владимир Кочетков "OWASP TOP 10 для.NET"
Владимир Кочетков  "OWASP TOP 10 для.NET"Владимир Кочетков  "OWASP TOP 10 для.NET"
Владимир Кочетков "OWASP TOP 10 для.NET"
 
Дмитрий Сошников Искусственный интеллект и нейросети для .NET-разработчиков
Дмитрий Сошников    Искусственный интеллект и нейросети для .NET-разработчиковДмитрий Сошников    Искусственный интеллект и нейросети для .NET-разработчиков
Дмитрий Сошников Искусственный интеллект и нейросети для .NET-разработчиков
 
Викторина MskDotNet Субботник
Викторина MskDotNet СубботникВикторина MskDotNet Субботник
Викторина MskDotNet Субботник
 
Елизавета Голенок Переходим на mono или как это было
Елизавета Голенок  Переходим на mono или как это былоЕлизавета Голенок  Переходим на mono или как это было
Елизавета Голенок Переходим на mono или как это было
 
Иван Кочуркин. Теория и практика парсинга формальных языков
Иван Кочуркин. Теория и практика парсинга формальных языковИван Кочуркин. Теория и практика парсинга формальных языков
Иван Кочуркин. Теория и практика парсинга формальных языков
 
Павел Притчин "Конфигурации в.NET"
Павел Притчин  "Конфигурации в.NET"Павел Притчин  "Конфигурации в.NET"
Павел Притчин "Конфигурации в.NET"
 
Андрей Кирпичев "Гибкая модульность инструментами АОП"
Андрей Кирпичев  "Гибкая модульность инструментами АОП"Андрей Кирпичев  "Гибкая модульность инструментами АОП"
Андрей Кирпичев "Гибкая модульность инструментами АОП"
 
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
 Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере" Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
Даниил Соколюк "ReactJS.NET — опыт рендеринга на сервере"
 
Андрей Матвеев "Основные принципы микросервисов и их реализации"
Андрей Матвеев "Основные принципы микросервисов и их реализации"Андрей Матвеев "Основные принципы микросервисов и их реализации"
Андрей Матвеев "Основные принципы микросервисов и их реализации"
 
Александр Сурков «Вещи» в «Интернете вещей»
Александр Сурков «Вещи» в «Интернете вещей»Александр Сурков «Вещи» в «Интернете вещей»
Александр Сурков «Вещи» в «Интернете вещей»
 
Петр Тимошевский «Industrial IoT на практике»
Петр Тимошевский «Industrial IoT на практике»Петр Тимошевский «Industrial IoT на практике»
Петр Тимошевский «Industrial IoT на практике»
 
Стас Павлов «Построение безопасной архитектуры IoT решений на примере Azure I...
Стас Павлов «Построение безопасной архитектуры IoT решений на примере Azure I...Стас Павлов «Построение безопасной архитектуры IoT решений на примере Azure I...
Стас Павлов «Построение безопасной архитектуры IoT решений на примере Azure I...
 
Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»Илья Ефимов «IoC/DI на примере Autofac»
Илья Ефимов «IoC/DI на примере Autofac»
 
Кирилл Маурин «Проектирование и разработка модульных приложений»
Кирилл Маурин «Проектирование и разработка модульных приложений»Кирилл Маурин «Проектирование и разработка модульных приложений»
Кирилл Маурин «Проектирование и разработка модульных приложений»
 
Владимир Кошелев «Автоматический поиск ошибок»
Владимир Кошелев «Автоматический поиск ошибок»Владимир Кошелев «Автоматический поиск ошибок»
Владимир Кошелев «Автоматический поиск ошибок»
 

Recently uploaded

GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 

Recently uploaded (20)

GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 

Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и React.JS»

  • 1. MSK.NET #10 Web Development with ASP.NET CORE and React.JS
  • 2. Web Evolution Yesterday Environment • Predicted homogenous consumer environment • Restricted types of clients (browser, desktop) As a result this led to: • Thick server and thin client • Server is responsible not only for business logic, but for content rendering as well • Client is responsible for content presentation Today Environment • Unpredicted heterogeneous consumer environment • Unrestricted types of clients • Different browsers, different devices with different form factors • Not only desktops, but mobiles as well • Not only people, but applications and machines As a result this lead to: • Segregation of Duties between server and clients • Standards in connectivity protocols and data formats • Server is responsible only for business logic • Server is exposed outside only data and services via API • Clients are responsible for content rendering and presentation
  • 3. High-Level Architecture Desktop Mobile API Server API Server API Server Content Server Static files & Assets Node.JS Server Initial pre- rendering & SEO Load Balancer Browser ClientSideFront-EndBack-End
  • 4. Technology StackClientFront-EndBack-End • IDE: Visual Studio 2015 with Update 3, Visual Studio 2017 • SOLUTION: REST API, ASP.NET CORE • ORM: EF.CORE • DATABASE: MS SQL SERVER • HOSTING: KESTREL • IDE: Visual Studio Code, IntelliJ IDEA 2017 • VIEW: React.JS • MODEL: Redux • TOOLS: WebPack (bundling, minification, cross-compilation with babel) • HOSTING: Apache, Express, Firebase, Node.JS • BROWSER: Chrome • PRESENTATION & LAYOUT: Bootstrap • TOOLS: React & Redux DevTools for Chrome (debug, monitoring)
  • 5. Back-End Architecture FRONT-END DATABASE KESTREL WEB SERVER ASP.NET CORE APPLICATION REST API CONTROLLERS ENTITY FRAMEWORK CORE BUSINESS SERVICES LAYER VIEW MODEL ENTITIES DOMAIN MODEL ENTITIES DB CONTEXT or REPOSITORY & UOW PATTERNS JSON RAW DATA CRUD+JSON SQL HTTP
  • 6. Back-End REST API Front-End Web Server (index.html, bundle.js, assets) Single Page Application Routing Middleware (Public & Protected Routes) (UI state, Model state, Router state) React Framework Redux Store Fetching Middleware Page Layouts (Container Components) Presentation Components Input Forms UI Components (Bootstrap, jQWidgets) Development Tools (Logging, React & Redux DevTools) Front-End Architecture
  • 7. React Architecture • React means what is “V” in MVC pattern. • React is declarative and component-based. It mixes JavaScript expressions with standard HTML markup. • React uses one-way data flow via “props” which are down streamed from root element to all children in component hierarchy. React components are pure functions with props as input and rendering as output. Props are immutable. • React creates virtual DOM for components tree. Manipulations are done in virtual DOM, because interventions with objects in browser DOM are much more expensive then interventions with POJO objects in JavaScript runtime. On each rendering React reconciles changes between current UI state and next UI state and only applies necessary updates in browser DOM. • React has a powerful composition model and encourages using composition instead of inheritance. It is possible via children prop and high-ordered components. React
  • 8. Redux Architecture • Redux attempts to make state mutations more predictable. With some principles below. • Single source of truth. The state of your application is stored within one single store. • State is read-only. The only way to change the state is to make an action. • Changes are made with reducers. Reducers are pure functions which take the current state, an action and return the next state. No side effects. No API calls. No mutations. Just a calculation. • Components are pure functions. Your React components are subscribed to necessary slice of application state in Redux store which is mapped to components props. Once changes they are interested in are happened, components are automatically re-rendered with new props extracted from the new state.
  • 9. • Let’s create a simple web application – classic TODO list. • Develop back-end with Asp.Net Core. • Develop front-end with Reacj.JS and Redux. Live Coding
  • 10. • What else? React Native. • What is next? React new generation – React Fiber. • No cross-compilation. No interpretation. Web Assembly. • No vendors. Try Open Source. Web Development Tomorrow
  • 11. • Speaker: Dmitry Tezhelnikov • Email: dmitry.tezhelnikov@gmail.com • Back-end demo source code: https://github.com/DmitryTezh/msk.net-backend-demo.git • Front-end demo source code: https://github.com/DmitryTezh/msk.net-frontend-demo.git • Video: https://www.youtube.com/watch?v=wg6QPyxDDho Contacts