.NET Architecture and Design Principles

Duration: 
5 days
Codes: 
MDN2-A,NET

Overview

  • Applications that span more than one machine require a deliberate and radically different
  • design approach. .NET Architecture and Design Principles presents key concepts in
  • distributed systems. Learn to build systems that are scalable, reliable and secure.
  • Discussions range from object-oriented programming to enterprise patterns, networking
  • to Web Services, caching to distributed databases, and client/database applications to
  • very large-scale web sites. You'll get answers to these questions:
  • How do I build scalable and reliable systems?
  • How can I use patterns to design extensible, reusable services?
  • What's the best way to communicate between distributed layers?

Audience

This course is designed for application developers with previous Microsoft .NET experience who wish to construct better distributed applications using decades of collective real-world knowledge

Skills Gained

Learn to

  • Think in terms of layers and tiers
  • Use patterns in your code and across the enterprise
  • Write secure code
  • Use concurrency to build highly available systems
  • Make distributed calls using remoting, web services and Windows Communication Framework
  • Utilize asynchronous communication with message queues
  • Horizontally scale every tier of your system
  • Deploy software across distributed systems

Prerequisites

This course is specifically designed for students who already have a solid level of C# and .NET experience and understanding

Course Outline

  • Learn to build systems that are scalable, reliable and secure.
  • Discussions range from object-oriented programming to enterprise patterns, networking to Web Services, caching to distributed databases, and client/database applications to
  • very large-scale web sites. You'll get answers to these questions:
  • How do I build scalable and reliable systems?
  • How can I use patterns to design extensible, reusable services?
  • What's the best way to communicate between distributed layers?

Day 1

  • Architecture
  • As .NET architects, we transform high-level business requirements into a functional
  • system within budget, resource, and schedule constraints. We look at how non-trivial
  • systems inevitably become distributed systems and how distributed systems introduce a
  • slew of additional architectural problems: communication, reliability, flexibility, reusability
  • and scalability. We seek to understand and recognize these issues and to anticipate the
  • problems they may cause.
  • Design Patterns I & II
  • We want to create each individual component of a distributed system to be adaptable
  • and maintainable. Design patterns are recipes for organizing code to achieve these
  • goals. Using C# more advanced language features, we can codify many design patterns
  • in a simpler, more flexible way, in contrast to other popular OO languages.

Day 2

  • Serialization
  • Distributed systems work by having the disparate parts somehow communicate by
  • passing around data and objects. Here we take the preliminary step of understanding the
  • various serialization libraries in .NET. We then learn to serialize objects efficiently so
  • more work gets done for every distributed invocation. We close by surveying other
  • serialization technologies used in very large systems.
  • WCF
  • Windows Communication Foundation is a convenient library for building enterprise-scale
  • services. It allows developers to use Service Oriented Architecture techniques on top of
  • any communication technology, from HTTP to shared memory. It integrates smoothly
  • with many of Microsoft's products, allowing companies to leverage their existing
  • infrastructure. We will discuss the overall architecture of WCF and introduce contract-first
  • design.
  • Service-Oriented Architecture
  • Service-Oriented Architecture (SOA) aims to do for distributed systems what componentbased
  • programming (i.e., COM) did for application development. We can quickly build
  • large distributed systems from reusable building blocks. To do so requires careful
  • planning and coordination to prevent the services from becoming too tightly coupled,
  • which reduces our opportunities to reuse them.

Day 3

  • Web Services
  • When building systems, many architects rely on web services to implement SOA
  • principles. Because web services are based on open standards, companies can expose
  • systems, either internally or externally, and not have to worry so much about the
  • communication layer. We delve into the WS-* standards, as well as the REST style of
  • software architecture popular on many large Internet services.
  • Concurrency
  • With more CPU cores and cheaper machines available, the incentive to build multithreaded
  • applications is stronger than ever. However, it hasn't gotten easier to write
  • correct concurrent applications. We survey the technologies available for .NET:
  • threading, the thread pool library, and theTasks library. We conclude with a variety of
  • design patterns that can reduce the complexity of concurrency and, we hope, a
  • corresponding number of bugs.
  • Messaging
  • The core of large, reliable distributed systems is often asynchronous communication,
  • usually using message queues. If we want our distributed systems to effectively use
  • message queues, the overall architecture must be capable of handling disjoint messages
  • that may arrive out of order or not at all. The extra effort put into designing an
  • asynchronous distributed system can pay off by increasing reliability and scalability.

Day 4

  • Transactions
  • Transactions in databases ensure that several actions either succeed or fail together.
  • Transactions become more complicated in an environment that includes different kinds of
  • services: message queues, web services, databases, file systems, etc. Since
  • transactions can be quite expensive, we explore techniques to reduce overhead and, for
  • some extreme cases, techniques to perform transactions manually.
  • Security
  • Security is critically important for any distributed system and getting it wrong is not an
  • acceptable outcome. We begin with an overview of distributed security, including
  • encryption and hash

Thinking about Onsite?

If you need training for 3 or more people, you should ask us about onsite training. Putting aside the obvious location benefit, content can be customised to better meet your business objectives and more can be covered than in a public classroom. It's a cost effective option.

Submit an enquiry from any page on this site, and let us know you are interested in the requirements box, or simply mention it when we contact you.

Upcoming Dates

  • GREEN This class is Guaranteed To Run.
  • SPVC - Self-Paced Virtual Class.
  • Click a Date to Enroll.
Course Location Days Cost Date
Onsite
Onsite5 2500 £2500 2019-06-17