O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Modern Web Development: Understanding domains, technologies, and user experience

Book Description

Master powerful new approaches to web architecture, design, and user experience
This book presents a pragmatic, problem-driven, user-focused approach to planning, designing, and building dynamic web solutions. You’ll learn how to gain maximum value from Domain-Driven Design (DDD), define optimal supporting architecture, and succeed with modern UX-first design approaches. The author guides you through choosing and implementing specific technologies and addresses key user-experience topics, including mobile-friendly and responsive design. You’ll learn how to gain more value from existing Microsoft technologies such as ASP.NET MVC and SignalR by using them alongside other technologies such as Bootstrap, AJAX, JSON, and JQuery. By using these techniques and understanding the new ASP.NET Core 1.0, you can quickly build advanced web solutions that solve today’s problems and deliver an outstanding user experience.

Microsoft MVP Dino Esposito shows you how to:

  • Plan websites and web apps to mirror real-world social and business processes

  • Use DDD to dissect and master the complexity of business domains

  • Use UX-Driven Design to reduce costs and give customers what they want

  • Realistically compare server-side and client-side web paradigms

  • Get started with the new ASP.NET Core 1.0

  • Simplify modern visual webpage construction with Bootstrap

  • Master practical, efficient techniques for running ASP.NET MVC projects

  • Consider new options for implementing persistence and working with data models

  • Understand Responsive Web Design’s pros, cons, and tradeoffs

  • Build truly mobile-friendly, mobile-optimized websites

  • About This Book

  • For experienced developers and solution architects who want to plan and develop web solutions more effectively

  • Assumes basic familiarity with the Microsoft web development stack

  • Table of Contents

    1. Cover
    2. Title Page
    3. Copyright Page
    4. Dedication Page
    5. Contents at a glance
    6. Contents
    7. Introduction
      1. Who should read this book
        1. Assumptions
      2. This book might not be for you if...
      3. Organization of this book
        1. Finding your best starting point in this book
      4. System requirements
      6. Acknowledgments
      7. Errata, updates, & book support
      8. Free ebooks from Microsoft Press
      9. We want to hear from you
      10. Stay in touch
    8. Part I: Understanding the domain
      1. Chapter 1. Conducting a thorough domain analysis
        1. Domain-driven design to the rescue
          1. Introducing design driven by the domain
          2. Clearing up common misconceptions about DDD
        2. Introducing the ubiquitous language
          1. Creating a vocabulary of domain-specific terms
          2. Keeping business and code in sync
        3. Introducing the bounded context
          1. Discovering bounded contexts
          2. Implementing bounded contexts
        4. Introducing context mapping
          1. Examining relationships between bounded contexts
        5. Introducing event storming
          1. Having unlimited modeling space
          2. Finding events in the domain
          3. Leading the discussion
        6. Summary
      2. Chapter 2. Selecting the supporting architecture
        1. It’s all about business logic
          1. Examining the application logic
          2. Examining the domain logic
          3. Exploring patterns for the business logic
        2. Using a single model
          1. Exploring the elements of an object-oriented domain model
          2. Putting business rules inside
          3. Discovering aggregates
          4. Exploring the role of domain services
        3. Implementing command and query separation
          1. Working with the Command and Query Separation principle
          2. Implementing CQRS
        4. Introducing message-based formulation
          1. Ad-hoc infrastructure
          2. Introducing event sourcing
        5. Summary
      3. Chapter 3. UX-driven design
        1. Why a top-down approach is better than a bottom-up one
          1. Foundation of the bottom-up approach
          2. Planning with a top-down approach
        2. Looking at user experience from an architectural perspective
          1. UX is not UI
          2. Explaining UXDD in three steps
        3. Why UXDD is beneficial to nearly everybody
        4. Summary
      4. Chapter 4. Architectural options for a web solution
        1. Assessing the available web solutions
          1. Deciding on the best framework
          2. Laying out a solution
        2. Examining the role of ASP.NET Core 1.0
          1. Considering ASP.NET as the starting point
          2. Examining the architectural dependencies in ASP.NET Core 1.0
          3. Exploring the reasons to choose ASP.NET Core 1.0
        3. Determining if you should use ASP.NET Web Forms
          1. Examining a common scenario
          2. ASP.NET Web Forms at a glance
          3. What’s still good with Web Forms
          4. Why you should move away from Web Forms
        4. Determining if you should use ASP.NET MVC
          1. ASP.NET MVC at a glance
          2. What’s good with ASP.NET MVC
          3. Weak points of ASP.NET MVC
        5. Examining the role of ASP.NET Web API
          1. Moving from WCF to Web API
          2. Comparing ASP.NET Web API and ASP.NET MVC
          3. Talking about REST
          4. Using Web API in ASP.NET Core 1.0
        6. Single-page applications
          1. Setting up a SPA
          2. Hybrid SPA
          3. Weak points of a SPA
        7. Summary
      5. Chapter 5. The layered architecture
        1. Beyond classic three-tier systems
          1. Working with a three-tier architecture today
          2. Fifty shades of gray areas
        2. The presentation layer
          1. The user experience
          2. The input model
          3. The view model
        3. The application layer
          1. Entry point in the system’s back end
          2. Orchestration of business processes
        4. The domain layer
          1. The mythical domain model
          2. The equally mythical concept of domain services
          3. A more pragmatic view of domain modeling
        5. The infrastructure layer
          1. Current state storage
          2. Event stores
          3. Caching layers
          4. External services
        6. Summary
    9. Part II: Development
      1. Chapter 6. ASP.NET state of the art
        1. Web flavors
          1. The web could have been different
          2. Classic web is the winner
        2. ASP.NET is feature-complete
          1. No more to add is no more to add
          2. Is it full potential or software obsolescence?
        3. ASP.NET Core 1.0 has no new functions
          1. It’s about the new runtime
          2. It’s about the business model
          3. It’s about the development model
        4. What is the state of ASP.NET?
      2. Chapter 7. Whys, wherefores, and technical aspects of ASP.NET Core 1.0
        1. The background of ASP.NET Core
          1. The cost of a large memory footprint
          2. Reconsidering the cloud as the silver bullet
          3. Making the case for the necessity of a different programming model
          4. The impact on everyday work
        2. The ASP.NET Core runtime at a glance
          1. The DNX host
          2. Hosting web applications in DNX
          3. ASP.NET Core HTTP pipeline
        3. ASP.NET Core for ASP.NET developers
          1. Creating a new project
          2. Application startup
          3. Application settings
          4. Authentication
          5. Other aspects of web programming
        4. Summary
      3. Chapter 8. Core of ASP.NET MVC
        1. Routing incoming requests
          1. Simulating the ASP.NET MVC runtime
          2. Exploring the URL routing HTTP module
          3. Using application routes
        2. Exploring the controller class
          1. Looking at aspects of a controller
          2. Writing controller classes
        3. Processing input data
          1. Manual parameter binding
          2. Model binding
        4. Producing action results
          1. Wrapping results
          2. Returning HTML markup
          3. Returning JSON content
        5. Summary
      4. Chapter 9. Core of Bootstrap
        1. Bootstrap at a glance
          1. LESS and the foundation of Bootstrap
          2. Setting up Bootstrap
          3. Putting Bootstrap into perspective
        2. Responsive layouts
          1. The grid system
          2. Screen-based rendering
        3. Taxonomy of today’s web elements
          1. Restyling basic HTML elements
          2. Restyling list HTML elements
          3. A look at more advanced components
        4. Bootstrap extensions
          1. Autocompletion
          2. Date picking
          3. Custom components
        5. Summary
      5. Chapter 10. Organizing the ASP.NET MVC project
        1. Planning the project solution
          1. Mapping projects to the Layered Architecture pattern
          2. Application startup
          3. Examining application services
          4. Adding in other assets
          5. Creating presentation layouts
        2. Serving resources more effectively
          1. Working with Bundling
          2. Using minification
        3. Examining other aspects
          1. Exploring error handling
          2. Configuring user authentication
        4. Summary
      6. Chapter 11. Presenting data
        1. Structuring an HTML view
          1. Exploring the view model
          2. Examining the page layout
          3. Presenting the elements of a view
        2. Displaying a list of data items
          1. Creating a grid view
          2. Adding paging capabilities
          3. Adding scrolling capabilities to page elements
        3. Adding a detail view
          1. Popover views
          2. Drill-down views
        4. Summary
      7. Chapter 12. Editing data
        1. A common form for the login page
          1. Presenting the form
          2. Processing posted data
        2. Input forms
          1. The Post-Redirect-Get pattern
          2. Form validation
          3. Modal input forms
        3. Quick tips for improving the user experience
          1. Using date pickers is great, but...
          2. Using autocompletion instead of long drop-down lists
          3. Miscellaneous tips for large input forms
        4. Summary
      8. Chapter 13. Persistence and modeling
        1. Examining the different flavors of a model
          1. The persistence model
          2. The domain model
          3. The input model
          4. The view model
        2. Designing a persistence layer
          1. Using an implicit and legacy data model
          2. Using Entity Framework
          3. The Repository pattern
        3. Polyglot persistence
          1. Polyglot persistence by example
          2. Costs of polyglot persistence
        4. Summary
    10. Part III: User experience
      1. Chapter 14. Creating more interactive views
        1. Exposing JSON content
          1. Creating JSON endpoints
          2. Negotiating content
          3. Solving the cross-origin puzzle
        2. Designing a Web API
          1. Purpose of the ASP.NET Web API
          2. Web API in the context of ASP.NET MVC
          3. Securing a standalone Web API
        3. Pulling content
          1. The Ajax core
          2. The jQuery tools
          3. Binding data to the current DOM
        4. Pushing content to the client
          1. ASP.NET SignalR at a glance
          2. Monitoring remote tasks
          3. Other scenarios for ASP.NET SignalR
        5. Summary
      2. Chapter 15. Pros and cons of responsive design
        1. Foundation of Responsive Web Design
          1. A brief history of RWD
          2. CSS media queries
          3. RWD and device independence
        2. Adapting RWD to non-desktop devices
          1. Dealing with images
          2. Dealing with fonts
          3. Dealing with orientation
        3. Summary
      3. Chapter 16. Making websites mobile-friendly
        1. Adapting views to the actual device
          1. The best of HTML5 for mobile scenarios
          2. Feature detection
          3. Client-side device detection
          4. A look into the future
        2. Device-friendly images
          1. The ImageEngine platform
          2. Resizing images automatically
        3. Serving device-friendly views
          1. What’s the best way to offer mobile content?
          2. Server-side detection
        4. Summary
    11. Index
    12. About the Author
    13. Survey
    14. Code Snippets