Technology Stack Discussion
Speaker: Zaiyang Li
First let’s look at a
demo
http://localhost:8000
Front end
Technology Stack
Frameworks used in the current iteration
…with a few more
Why Angular?
 http://stateofjs.com/2016/frontend/ - A still very popular choice
for frontend SPA development – just after React.js
 Component-based, highly reusable and composable
 Lots of libraries, good ecosystem
 Modular code organization
 MVC
Karma, Mocha, and Chai
 Karma is a test runner
 Mocha is a test framework and includes a test runner
 Chai is an assertion framework
ECMAScript 6 and Babel
 Next generation JavaScript, new syntaxes.
 Fully supported in latest Firefox, Chrome, Safari,
NodeJS releases.
 None/partial support on older browsers
 Require a transpilation step for code to work on older
browser
 Class, Spread operator, destructuring, import,
lambda, many more.
http://kangax.github.io/compat-table/es6/
https://www.w3counter.com/globalstats.php
Webpack
 Similar to Gulp, automated build pipelines.
 Build tool for combining and transforming scripts and
stylesheets
 Declarative style, works by loading a source file and apply a
series of transformations.
 “Loaders” can be plugged into Webpack to work with different
scripting languages
Front-end Build Pipeline
src/**/*.jsBundle.js
Node_modules/angular
Node_module/jquery
…
Bundle.vendor.js
*.css
*.scss
Style.css
File-loader
style-loader
Sass-loader
Babel-loader
File assets:
Fonts
Png
Html
Fonts
Png
html
--watch flag to regenerate artifacts when
source files change, with browser live-
reloading
Questions
 Angular-material provides at set of ready to use UI
components which can be dropped into the html
mark-up of an angular component. Provides nice
animation, UI events, theming and layout out of the
box, saves lots of time creating own UI components.
 Angular-messages is a module provided by angular.
Conveniently displays validation errors for forms. Lots
forms in the UI, very convenient.
 Angular-jwt is an extension to $http, automatically adds
authorization token to http headers (e.g.
“Authorization: Bearer efa78edf32878392…..”) when
calling guarded REST APIs. Time saver.
How are
angular-material, angular-
messages, angular-jwt
used?
Questions
 Both Knockout and Angular are suitable for building
single page applications both large and small. Main
reason is the popularity of angular. (see survey at
stateofjs.com/frontend) There are lots of tutorials and
libraries based on the framework.
 The platform team is using it. Can exchange knowledge
and best practices.
 Once the transition to cloud is underway, every team
will be using some kind of frontend framework. It’s a
great way to test if angular works and use the lessons
learnt to help build better products in the future.
The UI seems to be very simple,
why not use KnockoutJS
instead?
Questions  Chart.js is a library for data visualization. It can draw
graphs on an HTML5 canvas, supports animation, and
interaction.
 In the translation cost estimation page, a bar chart/pie
chart can help visualize the cost of translating a
product to a few other languages.
 In the translation availability page, it can show a bar
graph of number of translated documents for each
language.
How is Chart.js used?
Questions  Karma executes tests in the browser. Code that
interacts with DOM have to be tested in the browser
(UI integration testing).
 Mocha is run on the command line and tests code that
does not interact with DOM (Unit testing logic).
 Chai is an assertion library that provides a fluent API,
e.g. expect(1+1).to.equal(2), instead of assert.equal(1+1,
2, “1+1 should be 2”)
 Holy trinity: Karma+Mocha+Chai.
Why both Karma and Mocha?
Aren’t they both JavaScript test
runners?
Questions
 Protocol-Buffers is a high performance RPC format. It is
mostly used for communication in distributed systems.
The data is serialized as bytes and sent across a socket,
HTTP request, or can be persisted in files and
databases.
 Google use it for communication between the servers
in their data centres, because it is faster than JSON and
XML.
 Event data is serialized using the Protocol-buffer
format and stored in SQL Server in a varbinary column.
 Bypasses requirement for needing to define a schema
upfront, this is how we cope with arbitrary content
types.
 Newer protocol model is able to maintain backward
compatibility with older serialized bytes.
How is Protocol-Buffer used?
What are the benefits?
Back end
Technology Stack
Backend Technologies
Bespoke
Event
Sourcing
Framework
Dapper-dot-net
 A simple object mapper.
 Write query
 Execute with Dapper
 Get strongly-typed objects back
 Made by StackExchange, very
 high performance. See benchmark
https://github.com/StackExchange/dapper-dot-net
 Compatible with .NET Core
ASP.NET Core
 Next generation ASP.NET framework, open source.
 Cross-platform web server.
 High performance http server called Kestrel.
 Cloud
 Compatible with .NET native.
Windsor Castle Project
 Large number services: logging, IoC, dynamic proxy,…
 Decouples interfaces from implementation.
Autofac
 Compatible with .NET Core
Xunit 2
 Parametrised tests
 Can be used in combination with Moq and Autofixture
 Unit testing made easy.
Aspose.Cells
 Read and write Excel format with C#.
 Simple API
 Not compatible with .NET Core yet.
AutoFixture
 Automatically generate random data, and populates an object
instance.
 Time saver for writing test cases.
Bespoke Event Sourcing Framework
 Runs in the same process as the web server.
 Don’t have a name for it yet.
 Active development.
 Light-weight
 Beta version in 3 months.
Bespoke
Event
Sourcing
Framework
Questions?

More Related Content

PDF
Tech Stack Ideas
PPTX
What is a good technology stack today?
PPTX
Introduction to Web Technology Stacks
PPTX
Microsoft Web Technology Stack
PPTX
Gatsby intro
PPT
Building a scalable infrastructure for social mobile web apps
PDF
ITT Flisol 2013
PPT
Full stack JavaScript - the folly of choice
Tech Stack Ideas
What is a good technology stack today?
Introduction to Web Technology Stacks
Microsoft Web Technology Stack
Gatsby intro
Building a scalable infrastructure for social mobile web apps
ITT Flisol 2013
Full stack JavaScript - the folly of choice

What's hot (20)

PDF
Modern Static Site with GatsbyJS
PPT
Introduction to JavaScript Full Stack
PPTX
Mean stack
PPTX
Kick start your journey as mern stack developer
PPTX
WebNetConf 2012 - Single Page Apps
PPTX
MEAN Stack
PDF
A Practical Introduction to Functions-as-a-Service
PPTX
Evolution of java script libraries
PPTX
introduction to js
PPTX
Building Modern Web Apps with MEAN Stack
PPTX
Mean full stack development
PPTX
What is Mean Stack Development ?
PDF
WordPress as a Service
PPTX
MEAN Stack - Introduction & Advantages - Why should you switch to MEAN stack ...
PPTX
FULL stack -> MEAN stack
PPT
introduction to Lamp Stack
PPTX
ReactPHP + Symfony
PDF
MEAN Stack
PPTX
A Gentle Introduction to Blazor
PPTX
Web Applications Development with MEAN Stack
Modern Static Site with GatsbyJS
Introduction to JavaScript Full Stack
Mean stack
Kick start your journey as mern stack developer
WebNetConf 2012 - Single Page Apps
MEAN Stack
A Practical Introduction to Functions-as-a-Service
Evolution of java script libraries
introduction to js
Building Modern Web Apps with MEAN Stack
Mean full stack development
What is Mean Stack Development ?
WordPress as a Service
MEAN Stack - Introduction & Advantages - Why should you switch to MEAN stack ...
FULL stack -> MEAN stack
introduction to Lamp Stack
ReactPHP + Symfony
MEAN Stack
A Gentle Introduction to Blazor
Web Applications Development with MEAN Stack

Viewers also liked (20)

PPTX
Introduction to Team Foundation Server (TFS) Online
PDF
Inside Parquet Format
PDF
как интернет делает Minority report настоящим
PDF
Usabilitylab
PDF
Conversion_conf'2015
PDF
Site banking ut_method_11.11_kk_
PDF
Presentation wonder full_30
PDF
Ежегодный отчет Cisco по информационной безопасности 2015
PPTX
Мобильный банкинг в России: особенности спроса и предложения
PDF
Методология Mobilebanking 2015
PDF
Ericsson Mobility Report: Основные выводы
PPTX
Бизнес планирование Akhmadi invest для i startup.kz
PDF
"Content Security Policy" — Алексей Андросов, MoscowJS 18
PPT
Ericsson mobility report. Презентация для Украины
PDF
Кибербезопасность с точки зрения директоров
PDF
Исследования. Сахар
PDF
Исследование потребительских предпочтений рынка колбасных изделий г. Екатерин...
PPT
Parquet overview
PDF
AI - это новый UI
PDF
Brandbook Sevencom
Introduction to Team Foundation Server (TFS) Online
Inside Parquet Format
как интернет делает Minority report настоящим
Usabilitylab
Conversion_conf'2015
Site banking ut_method_11.11_kk_
Presentation wonder full_30
Ежегодный отчет Cisco по информационной безопасности 2015
Мобильный банкинг в России: особенности спроса и предложения
Методология Mobilebanking 2015
Ericsson Mobility Report: Основные выводы
Бизнес планирование Akhmadi invest для i startup.kz
"Content Security Policy" — Алексей Андросов, MoscowJS 18
Ericsson mobility report. Презентация для Украины
Кибербезопасность с точки зрения директоров
Исследования. Сахар
Исследование потребительских предпочтений рынка колбасных изделий г. Екатерин...
Parquet overview
AI - это новый UI
Brandbook Sevencom

Similar to Technology Stack Discussion (20)

PPTX
Advanced JavaScript
PDF
Deep Dive on ArangoDB
PPT
Intro to-html-backbone
PDF
Deep dive into the native multi model database ArangoDB
PDF
Building and deploying LLM applications with Apache Airflow
PDF
2025’s Ultimate Tech Stack Cheat Sheet for Building Killer Web Apps
PDF
Unified, Efficient, and Portable Data Processing with Apache Beam
PPTX
Get Started with JavaScript Frameworks
PPTX
Introduction to meteor
PPTX
Normalizing x pages web development
PPT
Web Development Environments: Choose the best or go with the rest
PPTX
AI introduction to modern web technologies.pptx
DOCX
All the amazing features of asp.net core
PDF
Between a SPA and a JAMstack: Building Web Sites with Nuxt/Vue, Strapi and wh...
PDF
Crash Course HTML/Rails Slides
PPTX
Challenges of angular in production (Tasos Bekos) - GreeceJS #17
PDF
Realizing the Promise of Portable Data Processing with Apache Beam
PPT
December 4 SDForum Java Sig Presentation
PDF
NodeJs Frameworks.pdf
PDF
Intro to mobile web application development
Advanced JavaScript
Deep Dive on ArangoDB
Intro to-html-backbone
Deep dive into the native multi model database ArangoDB
Building and deploying LLM applications with Apache Airflow
2025’s Ultimate Tech Stack Cheat Sheet for Building Killer Web Apps
Unified, Efficient, and Portable Data Processing with Apache Beam
Get Started with JavaScript Frameworks
Introduction to meteor
Normalizing x pages web development
Web Development Environments: Choose the best or go with the rest
AI introduction to modern web technologies.pptx
All the amazing features of asp.net core
Between a SPA and a JAMstack: Building Web Sites with Nuxt/Vue, Strapi and wh...
Crash Course HTML/Rails Slides
Challenges of angular in production (Tasos Bekos) - GreeceJS #17
Realizing the Promise of Portable Data Processing with Apache Beam
December 4 SDForum Java Sig Presentation
NodeJs Frameworks.pdf
Intro to mobile web application development

Technology Stack Discussion

  • 2. First let’s look at a demo http://localhost:8000
  • 4. Frameworks used in the current iteration …with a few more
  • 5. Why Angular?  http://stateofjs.com/2016/frontend/ - A still very popular choice for frontend SPA development – just after React.js  Component-based, highly reusable and composable  Lots of libraries, good ecosystem  Modular code organization  MVC
  • 6. Karma, Mocha, and Chai  Karma is a test runner  Mocha is a test framework and includes a test runner  Chai is an assertion framework
  • 7. ECMAScript 6 and Babel  Next generation JavaScript, new syntaxes.  Fully supported in latest Firefox, Chrome, Safari, NodeJS releases.  None/partial support on older browsers  Require a transpilation step for code to work on older browser  Class, Spread operator, destructuring, import, lambda, many more. http://kangax.github.io/compat-table/es6/ https://www.w3counter.com/globalstats.php
  • 8. Webpack  Similar to Gulp, automated build pipelines.  Build tool for combining and transforming scripts and stylesheets  Declarative style, works by loading a source file and apply a series of transformations.  “Loaders” can be plugged into Webpack to work with different scripting languages
  • 9. Front-end Build Pipeline src/**/*.jsBundle.js Node_modules/angular Node_module/jquery … Bundle.vendor.js *.css *.scss Style.css File-loader style-loader Sass-loader Babel-loader File assets: Fonts Png Html Fonts Png html --watch flag to regenerate artifacts when source files change, with browser live- reloading
  • 10. Questions  Angular-material provides at set of ready to use UI components which can be dropped into the html mark-up of an angular component. Provides nice animation, UI events, theming and layout out of the box, saves lots of time creating own UI components.  Angular-messages is a module provided by angular. Conveniently displays validation errors for forms. Lots forms in the UI, very convenient.  Angular-jwt is an extension to $http, automatically adds authorization token to http headers (e.g. “Authorization: Bearer efa78edf32878392…..”) when calling guarded REST APIs. Time saver. How are angular-material, angular- messages, angular-jwt used?
  • 11. Questions  Both Knockout and Angular are suitable for building single page applications both large and small. Main reason is the popularity of angular. (see survey at stateofjs.com/frontend) There are lots of tutorials and libraries based on the framework.  The platform team is using it. Can exchange knowledge and best practices.  Once the transition to cloud is underway, every team will be using some kind of frontend framework. It’s a great way to test if angular works and use the lessons learnt to help build better products in the future. The UI seems to be very simple, why not use KnockoutJS instead?
  • 12. Questions  Chart.js is a library for data visualization. It can draw graphs on an HTML5 canvas, supports animation, and interaction.  In the translation cost estimation page, a bar chart/pie chart can help visualize the cost of translating a product to a few other languages.  In the translation availability page, it can show a bar graph of number of translated documents for each language. How is Chart.js used?
  • 13. Questions  Karma executes tests in the browser. Code that interacts with DOM have to be tested in the browser (UI integration testing).  Mocha is run on the command line and tests code that does not interact with DOM (Unit testing logic).  Chai is an assertion library that provides a fluent API, e.g. expect(1+1).to.equal(2), instead of assert.equal(1+1, 2, “1+1 should be 2”)  Holy trinity: Karma+Mocha+Chai. Why both Karma and Mocha? Aren’t they both JavaScript test runners?
  • 14. Questions  Protocol-Buffers is a high performance RPC format. It is mostly used for communication in distributed systems. The data is serialized as bytes and sent across a socket, HTTP request, or can be persisted in files and databases.  Google use it for communication between the servers in their data centres, because it is faster than JSON and XML.  Event data is serialized using the Protocol-buffer format and stored in SQL Server in a varbinary column.  Bypasses requirement for needing to define a schema upfront, this is how we cope with arbitrary content types.  Newer protocol model is able to maintain backward compatibility with older serialized bytes. How is Protocol-Buffer used? What are the benefits?
  • 17. Dapper-dot-net  A simple object mapper.  Write query  Execute with Dapper  Get strongly-typed objects back  Made by StackExchange, very  high performance. See benchmark https://github.com/StackExchange/dapper-dot-net  Compatible with .NET Core
  • 18. ASP.NET Core  Next generation ASP.NET framework, open source.  Cross-platform web server.  High performance http server called Kestrel.  Cloud  Compatible with .NET native.
  • 19. Windsor Castle Project  Large number services: logging, IoC, dynamic proxy,…  Decouples interfaces from implementation.
  • 21. Xunit 2  Parametrised tests  Can be used in combination with Moq and Autofixture  Unit testing made easy.
  • 22. Aspose.Cells  Read and write Excel format with C#.  Simple API  Not compatible with .NET Core yet.
  • 23. AutoFixture  Automatically generate random data, and populates an object instance.  Time saver for writing test cases.
  • 24. Bespoke Event Sourcing Framework  Runs in the same process as the web server.  Don’t have a name for it yet.  Active development.  Light-weight  Beta version in 3 months. Bespoke Event Sourcing Framework