From legacy desktop application to Single Page Application By Jens Munk Freelance consultant.

Slides:



Advertisements
Similar presentations
.NET 3.5 SP1 New features Enhancements Visual Studio 2008 SP1 New features Enhancements Additional features/enhancements.
Advertisements

Microsoft SharePoint 2010 technology for Developers
Usage of the memoQ web service API by LSP – a case study
Test Case Management and Results Tracking System October 2008 D E L I V E R I N G Q U A L I T Y (Short Version)
NGT Information Technology Technical Discussion Bob DeHoff Info Tech, Inc.
The Web Warrior Guide to Web Design Technologies
CSLA Presenter Sergey Barskiy, senior consultant at Magenic Technologies your questions Send an in order.
Web Servers How do our requests for resources on the Internet get handled? Can they be located anywhere? Global?
Performed by:Gidi Getter Svetlana Klinovsky Supervised by:Viktor Kulikov 08/03/2009.
Software Architecture Patterns (2). what is architecture? (recap) o an overall blueprint/model describing the structures and properties of a "system"
Creating a SharePoint App with Microsoft Access Services
User Group 2015 Version 5 Features & Infrastructure Enhancements.
Web Application Architecture: multi-tier (2-tier, 3-tier) & mvc
N-Tier Architecture.
UNIT-V The MVC architecture and Struts Framework.
Client/Server Architectures
Windows.Net Programming Series Preview. Course Schedule CourseDate Microsoft.Net Fundamentals 01/13/2014 Microsoft Windows/Web Fundamentals 01/20/2014.
Oracle Application Express (Oracle APEX)
8 Chapter Eight Server-side Scripts. 8 Chapter Objectives Create dynamic Web pages that retrieve and display database data using Active Server Pages Process.
Samuvel Johnson nd MCA B. Contents  Introduction to Real-time systems  Two main types of system  Testing real-time software  Difficulties.
9/10/20151 Hyperion Enterprise 6.5 New Features & Functionality Robert Cybulski, CPA Finit Solutions.
ASP.NET + Ajax Jesper Tørresø ITNET2 F08. Ajax Ajax (Asynchronous JavaScript and XML) A group of interrelated web development techniques used for creating.
DIRAC Web User Interface A.Casajus (Universitat de Barcelona) M.Sapunov (CPPM Marseille) On behalf of the LHCb DIRAC Team.
Overview of Previous Lesson(s) Over View  ASP.NET Pages  Modular in nature and divided into the core sections  Page directives  Code Section  Page.
Meir Botner David Ben-David. Project Goal Build a messenger that allows a customer to communicate with a service provider for a fee.
What is Sure BDCs? BDC stands for Batch Data Communication and is also known as Batch Input. It is a technique for mass input of data into SAP by simulating.
COMP 410 & Sky.NET May 2 nd, What is COMP 410? Forming an independent company The customer The planning Learning teamwork.
Framework Universal & Infinite Software Solution.
JDeveloper 10g and JavaServer Faces: High-Performance UIs on the Web Avrom Roy-Faderman Senior Programmer May, 2006.
JSP Java Server Pages Softsmith Infotech.
Web Programming: Client/Server Applications Server sends the web pages to the client. –built into Visual Studio for development purposes Client displays.
Tutorial 121 Creating a New Web Forms Page You will find that creating Web Forms is similar to creating traditional Windows applications in Visual Basic.
ARCH-09: Transforming a Complex Application Apprise® is a registered trademark of Apprise Software, Inc. Transcendix SM is a service mark and trademark.
AUTOMATION OF WEB-FORM CREATION - KINNERA ANGADI – MS FINAL DEFENSE GUIDANCE BY – DR. DANIEL ANDRESEN.
Presentation. Recap A multi layer architecture powered by Spring Framework, ExtJS, Spring Security and Hibernate. Taken advantage of Spring’s multi layer.
Computer Emergency Notification System (CENS)
NMD202 Web Scripting Week3. What we will cover today Includes Exercises PHP Forms Exercises Server side validation Exercises.
Alcatel-Lucent CDC Workshop, Coaching & Knowledge Transfer Architecture.
Navigation Framework using CF Architecture for a Client-Server Application using the open standards of the web Kedar Desai presented by.
Database Systems: Design, Implementation, and Management Eighth Edition Chapter 14 Database Connectivity and Web Technologies.
Active Server Pages (ASP), also known as Classic ASP or ASP Classic, was Microsoft's first server-side script engine for dynamically generated web pages.
GOAL User Interactive Web Interface Update Pages by Club Officers Two Level of Authentication.
Chapter 4: Working with ASP.NET Server Controls OUTLINE  What ASP.NET Server Controls are  How the ASP.NET run time processes the server controls on.
Model View Controller MVC Web Software Architecture.
Microsoft FrontPage 2003 Illustrated Complete Integrating a Database with a Web Site.
Web Design and Development. World Wide Web  World Wide Web (WWW or W3), collection of globally distributed text and multimedia documents and files 
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
8 Chapter Eight Server-side Scripts. 8 Chapter Objectives Create dynamic Web pages that retrieve and display database data using Active Server Pages Process.
Preface IIntroduction Objectives I-2 Course Overview I-3 1Oracle Application Development Framework Objectives 1-2 J2EE Platform 1-3 Benefits of the J2EE.
IST 220 – Intro to Databases Lecture 2 Touring Microsoft Access.
ASP-2-1 SERVER AND CLIENT SIDE SCRITPING Colorado Technical University IT420 Tim Peterson.
 An essential supporting structure of any thing  A Software Framework  Has layered structure ▪ What kind of functions and how they interrelate  Has.
ViaSQL Technical Overview. Viaserv, Inc. 2 ViaSQL Support for S/390 n Originally a VSE product n OS/390 version released in 1999 n Identical features.
Institute for the Protection and Security of the Citizen HAZAS – Hazard Assessment ECCAIRS Technical Course Provided by the Joint Research Centre - Ispra.
ASP.NET MVC An Introduction. What is MVC The Model-View-Controller (MVC) is an architectural pattern separates an application into three main components:
CHAPTER 7 LESSON C Creating Database Reports. Lesson C Objectives  Display image data in a report  Manually create queries and data links  Create summary.
Navigation Framework using CF Architecture for a Client-Server Application using the open standards of the Web presented by Kedar Desai Differential Technologies,
ASP.NET WEB Applications. ASP.NET  Web application framework developed by Microsoft  Build dynamic data driven web applications and web services  Subset.
START Application Spencer Johnson Jonathan Barella Cohner Marker.
Copyright Office Material Copyright Request System.
A Presentation Presentation On JSP On JSP & Online Shopping Cart Online Shopping Cart.
Presented by Alexey Vedishchev Developing Web-applications with Grails framework American University of Nigeria, 2016 Intro To MVC Architecture.
IST 220 – Intro to Databases
MVC Architecture, Symfony Framework for PHP Web Apps
Top Reasons to Choose Angular. Angular is well known for developing robust and adaptable Single Page Applications (SPA). The Application structure is.
…and web frameworks in general
Web Application Architectures
…and web frameworks in general
Technical Integration Guide
Web Application Architectures
Presentation transcript:

From legacy desktop application to Single Page Application By Jens Munk Freelance consultant

The application – a little bit of history Old application ~20 years Originally developed in PowerBuilder Automatically converted to c# ”Made to run” in India ”Made usable” in Denmark Several generations of technology Windows forms, WPF, embedded Razor/MVC, IBatis, ADO, OleDb, Entity Framework, WCF service layer – and lots of other technologies.

The application – business point of view Basically a workflow engine/state machine Excel like input – formula, calculation engine etc. And 3. party integrations to e.g. ERP systems A thick windows client Only for the administrating party of the workflow/state machine Several customers With lots of installations The application is stabile bugs are reported – but most of them can be considered as change requests An application that fits the current business needs

The application – technical point of view No consistent architecture exists A service layer exists … but not a service architecture The desktop application also access the database through stored procedures and DAL The database used to be an Oracle database but has been migrated to MS-SQL but without changing the naming conversions, still missing foreign keys, inconsistent data types (e.g. decimal/int/bigint) …a lightweight conversion Heavy usage of anti-pattern magic strings and numbers Nice mix of Danish and English Lots of business logic in the GUI layer Unit test coverage is less than 10% The rest is handled by manual tests I big pile of… challenges.

Motivation for changes Make a consistent architectural foundation Upgrade to new technology Better recruitment foundation Cheaper to implement new features Fix data consistency challanges Rapid installation Add application workflow party support Could be SaaS application

How to proceed? Total rewrite? No release for the next couple of years … and a shaky version The “Vista way” Bottom up conversion? Update data types and add foreign keys Add O/RM (using EF or NHibernate) Build service layer … Shaky version due to limited unit test coverage – or a huge load on test team Either way… Not an option

Selected approach Encapsulation pattern Side by side implementation Consistent EF model on existing database + repository pattern Only used by new code Old code is treated as black box New features developed in new technology Changes requires re-written in new architecture (and technology) Old desktop application Database EF model Repository Service layerSecurity Embedded IE SPA

Single-page application – in a single slide Page is loaded once (hence single page) HTML is modified based on user input and service layer response From Wikipedia: A single-page application (SPA), also known as single-page interface (SPI), is a web application or web site that fits on a single web page with the goal of providing a more fluid user experience akin to a desktop application. HTML + JavaScript + AJAX Browser Service layer Data layer …

Issues related to SPA Service layer security You should not be allowed to access the services if you are not authorized Entity security Data needs to be filtered on a per user/role basis E.g. getPossibleActivities(caseId) Access denied/error on unaccessible cases Different lists will be returned to case admin and to case applier Kind of row level security pattern – but in using existing security model Service layer Data layer … Authentication Authorization

How about in real life? Sounds easy? How about new features that use some existing business logic? That is implemented in the GUI layer? With side effects? Case by case …But in general Create appropriate test cases for the selected area (automation preferred) – for both new and old architecture Implement service in new architecture Replace old code with new service Keep side effects in old code

Our SPA technology choices Bootstrap JQuery ServiceStack (HTML) Template based No HTML in JavaScripts Demo/slides

Partial view– static part Id’er when redering is dynamic

Dynamic rendered HTML

HTML template Table row template Button template Pagination templates

Applied templates

Form validation The form is validated server side by ServiceStack. Some errors are directly related to a single field And some are global

Form validation Create a form with a given id Names needs to match names in request object otherwise the serializeObject() cannot be used In the save function use the formid as a parameter for clearErrors() and applyErrors()

Form validation Template for displaying error messages is located in the container file.

The anchor object Anchor object The uri must never be accessed directly always through the available methods Additional properties will probably be added

Current status We are not there yet … But we are well on our way And expect to have first SPA with encapsulation pattern ready Q1 2015