Modern App Architecture

Similar documents
Come and Get Excited about Azure Mobile Services and Xamarin.Forms

Using and Developing with Azure. Joshua Drew

Advance Mobile& Web Application development using Angular and Native Script

Open Source Library Developer & IT Pro

Reading Writing Speaking Reading Writing Speaking. English Intermediate Intermediate Elementary Intermediate Intermediate Elementary

Beginner s Guide to Cordova and Mobile Application Development

About 1. Chapter 1: Getting started with odata 2. Remarks 2. Examples 2. Installation or Setup 2. Odata- The Best way to Rest 2

August, HPE Propel Microservices & Jumpstart

ArcGIS Runtime: Building Cross-Platform Apps. Rex Hansen Mark Baird Michael Tims Morten Nielsen

Deccansoft Software Services

Developing Mobile Apps with Xamarin and Azure

20486-Developing ASP.NET MVC 4 Web Applications

Evaluation Guide for ASP.NET Web CMS and Experience Platforms

Azure Mobile Apps and Xamarin: From zero to hero. Nasos Loukas Mobile Team KYON

Developing Enterprise Cloud Solutions with Azure

Nevin Dong 董乃文 Principle Technical Evangelist Microsoft Cooperation

The Now Platform Reference Guide

MCSE Cloud Platform & Infrastructure CLOUD PLATFORM & INFRASTRUCTURE.

Mobile Apps Sample Solution

Introduction to RESTful Web Services. Presented by Steve Ives

SQL Azure. Abhay Parekh Microsoft Corporation

MCSE Mobility Earned: MCSE Cloud Platform & Infrastructure Earned: 2017 MCSE MCSE. MCSD App Builder. MCSE Business Applications Earned 2017

Connect and Transform Your Digital Business with IBM

Course Outline. Introduction to Azure for Developers Course 10978A: 5 days Instructor Led

Pro ASP.NET SignaIR. Real-Time Communication in. Keyvan Nayyeri. .NET with SignaIR 2.1. Apress. Darren White

Developing Microsoft Azure Solutions

Creating an Online Catalogue Search for CD Collection with AJAX, XML, and PHP Using a Relational Database Server on WAMP/LAMP Server

COURSE 20486B: DEVELOPING ASP.NET MVC 4 WEB APPLICATIONS

Vb Net Tutorial For Beginners Visual Studio 2010 Express Windows Service Template

20486: Developing ASP.NET MVC 4 Web Applications (5 Days)

Participant Handbook

Introduction to Xamarin Cross Platform Mobile App Development

ArcGIS Runtime: Building Cross-Platform Apps. Mike Branscomb Michael Tims Tyler Schiewe

Course Outline: Course 50466A: Windows Azure Solutions with Microsoft Visual Studio 2010

Azure Development Course

STREAMLINED CERTIFICATION PATHS

Developing ASP.NET MVC 4 Web Applications

STREAMLINED CERTIFICATION PATHS

P a g e 1. Danish Technological Institute. Scripting and Web Languages Online Course k Scripting and Web Languages

Course 20486B: Developing ASP.NET MVC 4 Web Applications

Developing ASP.NET MVC 4 Web Applications

Building modern enterprise applications from scratch: lessons learned DOAG 2014 Dr. Clemens Wrzodek

70-532: Developing Microsoft Azure Solutions

Ei Dynamics Data Integration Solution. For

: 20488B: Customized Developing Microsoft SharePoint Server

Case Study. DotNetNuke Intranet Portal for MNC s Brainvire Infotech Pvt. Ltd Page 1 of 1

GENESYSSOURCE. How-to Pull Your Data through the Customer. A Cross-Platform Framework Quick-Start

20486: Developing ASP.NET MVC 4 Web Applications

Developing Microsoft Azure Solutions (MS 20532)

Developing ASP.NET MVC 5 Web Applications

Modern SharePoint and Office 365 Development

ASP.NET MVC Training

70-532: Developing Microsoft Azure Solutions

Before you start proceeding with this tutorial, we are assuming that you are already aware about the basics of Web development.

70-486: Developing ASP.NET MVC Web Applications

Developing ASP.NET MVC Web Applications (486)

Project Horizon Technical Overview. Bob Rullo GM; Presentation Architecture

The OpenEdge Application Modernization Framework. Mike Fechner, Director, Consultingwerk Ltd.

COURSE 20487B: DEVELOPING WINDOWS AZURE AND WEB SERVICES

5/31/18 AGENDA AIS OVERVIEW APPLICATION INTERFACE SERVICES. REST and JSON Example AIS EXPLAINED. Using AIS you can perform actions such as:

Project Horizon Technical Overview. Steven Forman Principal Technical Consultant

CHOOSING THE RIGHT HTML5 FRAMEWORK To Build Your Mobile Web Application

Deploying to the Edge CouchDB

Introduction to Worklight Integration IBM Corporation

To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservices on CloudFoundry. Tony Erwin,

Roy Lawson. Introduction to Office 365 Development Presented By. SDS pays for referrals!

Ten interesting features of Google s Angular Project

Developing Windows Azure and Web Services

Course Outline. Developing Microsoft Azure Solutions Course 20532C: 4 days Instructor Led

Survey of the Azure Data Landscape. Ike Ellis

What s New in XAML Q Release

HEARTLAND DEVELOPER CONFERENCE 2017 APPLICATION DATA INTEGRATION WITH SQL SERVER INTEGRATION SERVICES

Examples of Our Work

Official Microsoft Courses and WLC courses

Darshan Shinde Software Engineer Mobile: Id:

MASTERS COURSE IN FULL STACK WEB APPLICATION DEVELOPMENT W W W. W E B S T A C K A C A D E M Y. C O M

Building Effective ASP.NET MVC 5.x Web Applications using Visual Studio 2013

Course Outline. Lesson 2, Azure Portals, describes the two current portals that are available for managing Azure subscriptions and services.

Developing ASP.NET MVC 4 Web Applications

Developing ASP.NET MVC 5 Web Applications

Back-end architecture

<?php function preprocess_drupalcon($presentation) { if ($drupal && $ionic) { if ($ionic[ app ] = Megalomaniac ) { create $presentation } } }?

System and Software Architecture Description (SSAD)

Vb Net Tutorial For Beginners Visual Studio 2010 Create Web Service

Developing ASP.Net MVC 4 Web Application

Thank You Sponsors! GOLD SILVER BRONZE / PRIZES

Licensing Guide for Partners

Windows Azure Mobile Services

Solving Mobile App Development Challenges. Andrew Leggett & Abram Darnutzer CM First

The C-Suite Guide to Mobile Technologies for mhealth Development. Medical Web ExpertsTM

Asp Net Mvc Framework Unleashed

Mobile Technologies. Types of Apps

MOBILIZE YOUR ENTERPRISE WITH TELERIK SOLUTIONS

Oracle Service Cloud Integration for Develope

Full Stack boot camp

Full Stack Web Developer Nanodegree Syllabus

20486C: Developing ASP.NET MVC 5 Web Applications

The Visual Studio 2015 Checklist

Code Title Level Windows Azure Application Development

Microsoft Developing ASP.NET MVC 4 Web Applications

Transcription:

Modern App Architecture Brent Edwards Principal Lead Consultant Magenic Level: Intermediate BrentE@magenic.com @brentledwards http://www.brentedwards.net https://github.com/brentedwards BRENT EDWARDS

MyVote App Architecture HTML 5 UI JavaScript BL Service Proxy ios UI BL Data Portal UWP UI BL Data Portal Android UI BL Data Portal REST API Data Portal ASP.NET WA BL DAL Reports SQL Reporting Excel PowerPivot SQL Database Blobs PUTTING IT TOGETHER

MyVote Development Goals Efficient use of distributed team Each member focuses on strengths Well designed architecture Works across many platforms Maintainability Minimize duplication of code Maximize re use of code THE FOUNDATION

Layered Architecture Organize your Manage complexity Application code Test plans and execution Development team Related functions go in a layer Layers are isolated Layers communicate Logical Layers Breaks application into logical layers Layers may all run on machine Layers may run on separate machines Provides Maintainability Readability Flexibility Reuse Lower development/maintenance costs

Anatomy of a Modern App Presentation Logic Business Logic Data N-Layer Presentation Presentation Logic Business Logic Data

Multiple Data Sources Interface Interface Control Business Logic SQL Oracle Data DB2 MongoDB REST Multiple Presentations Windows Mobile Presentation Web REST JSON UI UI Presentation UI Logic UI UI Business Logic SQL Oracle DB2 MongoDB REST

Physical Tiers Deploy logical layers to physical tiers Trade off between Performance Scalability Fault tolerance Security N-Layer App Architecture Interface Interface Logic Business Logic Data

2-Tier App Architecture Interface Interface Logic Business Logic Data 3-Tier App Architecture (client logic) Interface Interface Logic Business Logic Data

3-Tier App Architecture (server logic) Interface Interface Logic Business Logic Data 3-Tier App Architecture (shared logic) Interface Interface Logic Business Logic Business Logic Data

Edge App Architecture Interface Interface Logic Business Logic (svc proxy) Service Service Architecture Caller Interface Interface Logic Business Logic Data

Disconnected Edge App Architecture Interface Interface Logic Business Logic Data (client) Sync Data (server) MyVote Windows, ios, Android Apps XAML C# Controllers/ViewModels C# Business Logic C# Business Logic Entity Framework SQL Server

MyVote HTML 5 App Client HTML/CSS JavaScript Controllers/ViewModels JSON Model AJAX Server JSON Web API Controller C# Business Logic Entity Framework SQL Server MyVote: Other Concerns Authentication Authorization Poll Image Storage

WHAT DOES IT ALL MEAN? The Multi-Platform Conundrum Code re-use is ideal But only an option for.net platforms What about the rest? Must duplicate effort

Combat Code Duplication Maintain all code for all platforms? Generate platform-specific code based on C# code? How? Complete code generation? How? Some sort of meta language? What tool do you use? Use Mono/Xamarin? Can you afford multiple dev teams? If so Which platforms do you target? How many should you target? If not Do you choose some platforms? Which ones? Do you choose a cross-platform solution? Which one?

WHAT ABOUT VERSIONING? Versioning With new versions come additional maintenance Client and Server can get out of sync Likely leads to maintaining multiple versions

Versioning Options Maintain different REST API Urls As clients update, they get the new urls Double (or more!) maintenance Might be ok for short-term situations (days/weeks) Long-term nightmare Make Smart Service Parse doc and determine version More work, but not multiple maintenance Can be used for months or years WHAT S THE RIGHT ANSWER?

42 Architecture is hard! Source: http://blu.stb.s-msn.com/i/fe/a31aa556a3ad65f85fba513bd4aa5.gif

MYVOTE: AN EXAMPLE ARCHITECTURE Technologies: How to Decide? Your Team What are their strengths/weaknesses? What are their interests? Costs What costs are associated with each choice? Goals Support multiple client platforms? Landscape What are the most popular and supported options? Future Where are technologies headed?

MyVote Team Strong background in Microsoft Web Mobile Xamarin MyVote App Architecture HTML 5 UI ios UI UWP UI Android UI JavaScript BL BL BL BL Service Proxy Data Portal Data Portal Data Portal REST API Data Portal ASP.NET WA BL DAL Reports SQL Reporting Excel PowerPivot SQL Database Blobs

MYVOTE SERVER MyVote Server Needs Hosting for Website Web API SQL Server Database Blob Storage Business Rules and Validation

MyVote Server Technologies ASP.NET MVC CSLA Azure SQL Server Microsoft Azure Multi-faceted Cloud Solution All our needs met under one roof Infinitely Scalable Dynamic Pricing

Azure SQL Server Scalable Data is Replicated SQL Server Data Tools (SSDT) Visual Studio Database Project Can check into source control Entity Framework for interaction Azure Mobile Services Authentication oauth Microsoft Facebook Twitter Google

Azure Blob Storage Elastic Scaling Access via REST API Store Poll Images as Blobs Give upload access on-demand Generate Storage Access Security (SAS) Key Azure Website ASP.NET MVC Web API Hosts CSLA DataPortal REST API Web App

CSLA Cross-Platform Business Object Framework Open Source http://cslanet.com/ Support for Business Rules and Validation Same code runs on client and server Kind of Same class files Server code interacts with database Client code can t (and shouldn t) interact with database MYVOTE CLIENTS

MyVote Client Apps Goals As many platforms as possible (for us) Match platform look-and-feel Maximize code re-use MyVote Client Platforms Web Windows Android ios

MyVote Client Apps Technology Options Mobile Web Fully Native Cross-platform solution Xamarin Cordova Tech Option: Mobile Web Pros Already lots of experience with web Can reuse all code Cons No re-use of server s business logic No native look-and-feel out of the box

Tech Option: Fully Native Pros Native look-and-feel Build apps as each platform intends Cons No code re-use This is a biggie Tech Option: Cordova Pros Cross-platform Lots of code re-use Builds on Web dev knowledge Don t need Windows and Mac machines to build Cons No re-use of server s business logic Users can sometimes tell it s not a native app

Tech Option: Xamarin Pros Native look-and-feel Lots of code re-use Can re-use server s business logic Cons Can t re-use UI code Requires expensive license Need Windows and Mac machines to build Tech Option: Xamarin.Forms Pros Pros of Xamarin Can re-use UI code Cons Still requires expensive license Still need Windows and Mac machines to build

MyVote Client Apps Our Technology Decision Universal Windows Platform Strong Windows dev background Xamarin.Forms for Android/iOS Strong Xamarin dev background JavaScript for Web Strong web dev background Code Re-Use Universal Windows Now same code on all Windows platforms Android/iOS Most code shared Except for UI Web No code shared Island of its own

MyVote Mobile Platforms Tech Universal Windows With familiar.net feel Xamarin.Forms With familiar.net and XAML feel MvvmCross With support for all the.net-base client tech CSLA With support for all the.net-base client tech MyVote Web Platform Tech JavaScript with Typescript Makes JS feel more like C# AngularJS Very popular with tons of support and examples Responsive Design with Bootstrap Also very popular with tons of support and examples

PARTING THOUGHTS Parting Thoughts Leverage Layered Architecture Spread layers across tiers Be prepared for logic duplication Know your team s current and potential capabilities Remember to KISS Keep It Simple

QUESTIONS?