.NET Programmers and Architects Here are your options · Server-side rendering on ASP.NET •...
Transcript of .NET Programmers and Architects Here are your options · Server-side rendering on ASP.NET •...
Oliver Sturm [email protected]
Copyright © 2014 Oliver Sturm
.NET Programmers and Architects Here are your options
Oliver Sturm
• Training Director at DevExpress • Experienced consultant, trainer, author, software
architect and developer • Microsoft C# MVP !
•Contact: [email protected]
Copyright © 2014 Oliver Sturm
Agenda
• Idea: talk about technology !
• Client applications • Data access • Web applications • Services • Mobile • Cloud
Copyright © 2014 Oliver Sturm
Client applications
• What’s a client application today? • What was it yesterday?
Copyright © 2014 Oliver Sturm
Client style UI
• WinForms • WPF • Silverlight • WinRT • … XAML based
Copyright © 2014 Oliver Sturm
Client style UI?
• HTML
Copyright © 2014 Oliver Sturm
Reasoning about client applications
• For: access to local resources, legacy applications, integrated environments, devices, integrating with other client applications
• Against: restricted to local resources, deployment, high maintenance and support effort, dependency to system environment (not for HTML) !
• Platform independence -> HTML • Extensive use of local resources -> WinForms, WPF • Applications for WinRT -> WinRT • Silverlight interesting as plugin technology
Copyright © 2014 Oliver Sturm
Storing Data
• Relational databases • NoSQL options
• Key/value and column family stores • Document • Data analytics (e.g. MapReduce)
!
• Reasoning • For RDBMS • For NoSQL
Copyright © 2014 Oliver Sturm
Accessing Stored Data
• Direct access - ADO.NET? • NoSQL APIs?
Copyright © 2014 Oliver Sturm
ORM
• Entity Framework • Third parties • Top Down vs Bottom Up • DB independence
Copyright © 2014 Oliver Sturm
CQRS
• Command Query Responsibility Segregation • Query and Command Models • Consistency often not Strong - Eventual
consistency? • Back to data access basics? • Conflicts with ORM?
Copyright © 2014 Oliver Sturm
Reasoning About Data Access
• For direct access: use of DB specific features, batch updates, schema updates
• For ORM: no SQL knowledge needed with devs, natural OO programming model, DB independence
• For CQRS: less overhead in majority of DB access cases
Copyright © 2014 Oliver Sturm
Web Applications
• What is a web application?
Copyright © 2014 Oliver Sturm
Server-side rendering on ASP.NET
• WebForms • MVC
!
• Reasoning • For WebForms: automatic data transfer, state management • For MVC: complete transparency, promotes a good architectural
application pattern, more current platform (active development) !
• For server-side rendering: dependability of rendered output (debugging)
• Against server-side rendering: any updates required server rendering roundtrips
Copyright © 2014 Oliver Sturm
HTML
• … with little or no server rendering • Can be delivered by a server
!
• Reasoning • For: smooth client UI feeling, platform independence for
UI • Against: compatibility and performance requirements on
client side
Copyright © 2014 Oliver Sturm
Services
• Part of most architectural concepts • SOA? • “Real-time web?” SignalR? socket.io?
Copyright © 2014 Oliver Sturm
Web Services
• ASMX? WSE? • WCF
• Configurability - decision late binding • Complexity
!
• Reasoning • For: Support for certain standards that were created in
the timeframe of WSE/WCF • Against: Overhead of configurational flexibility
Copyright © 2014 Oliver Sturm
Web API
• Based on ASP.NET MVC infrastructure • JSON/XML content negotiation • REST
!
• Reasoning • For: easy of use to create web standard service interfaces
in .NET • Against: very current technology environment required
Copyright © 2014 Oliver Sturm
Mobile
• Mobile support as a conceptual module • Strategic platform?
Copyright © 2014 Oliver Sturm
“Native” Mobile
• Windows Phone SDK • More XAML!
• iOS SDK • Android SDK
!
• Reasoning • For: maximum performance, optimal hardware access • Against: maintenance, special knowledge required, tied
into individual platforms
Copyright © 2014 Oliver Sturm
Mobile .NET
• Xamarin !
• Reasoning: • For: Platform independence, C# • Against: individual work required per UI platform, 3rd
party commercial solution
Copyright © 2014 Oliver Sturm
HTML/Hybrid
• HTML (5), JavaScript, CSS • PhoneGap/Cordova or similar • Cross-platform
!
• Reasoning • For: Cross-platform, knowledge transfer • Against: performance issues (rare, but they exist),
hardware access
Copyright © 2014 Oliver Sturm
Cloud
• Deployment option • Managed infrastructure
Copyright © 2014 Oliver Sturm
Cloud functionality
• Supplied services, vertical features • Base platform functionality
• Dynamic scalability • SLA
Copyright © 2014 Oliver Sturm
Legal considerations
• Locations • Industry/governmental requirements
Copyright © 2014 Oliver Sturm
Cloud options
• Azure • Amazon Web Services • Third parties?
Copyright © 2014 Oliver Sturm
Cloud Reasoning
• For cloud: deployment option, cost, scalability • Against cloud: legal side, trust, no hardware specific
functionality, vendor (cloud platform) tie-in !
• For/against specific platforms: Azure natural choice for Visual Studio users, consider functionality of platforms and pricing based on your specific use cases
Copyright © 2014 Oliver Sturm
Thank you
Please feel free to contact me about the content anytime.
!
!
!
!
Copyright © 2014 Oliver Sturm