About the Author |
|
xi | |
About the Technical Reviewers |
|
xiii | |
Acknowledgments |
|
xv | |
Introduction |
|
xvii | |
|
Chapter 1 Designing a Modern Real-World Web Application |
|
|
1 | (14) |
|
Overview of Application Development Strategies and Processes |
|
|
2 | (2) |
|
Introduction to the Automobile Service Center Application |
|
|
4 | (2) |
|
|
6 | (1) |
|
Technologies Used in Building the Application |
|
|
7 | (1) |
|
Logical Architecture of the Application |
|
|
8 | (2) |
|
Continuous Integration and Deployment Architecture |
|
|
10 | (2) |
|
|
12 | (1) |
|
|
13 | (2) |
|
Chapter 2 The New Era of NET Core |
|
|
15 | (26) |
|
|
15 | (2) |
|
Introduction to ASP.NET Core |
|
|
17 | (2) |
|
Versions and Roadmap of NET Core and ASP.NET Core |
|
|
19 | (1) |
|
Creating the Automobile Service Center Application |
|
|
20 | (8) |
|
Understanding the ASP.NET Core Web Project Artifacts |
|
|
28 | (3) |
|
Setting Up the Application Configuration |
|
|
31 | (6) |
|
Using Dependency Injection in the ASP.NET Core Application |
|
|
37 | (2) |
|
|
39 | (1) |
|
|
39 | (2) |
|
Chapter 3 Designing a Theme by Using Material Design |
|
|
41 | (20) |
|
Responsive Design and New Approaches |
|
|
41 | (2) |
|
|
43 | (1) |
|
|
44 | (1) |
|
Using Materialize CSS in the Automobile Service Center Application |
|
|
45 | (15) |
|
|
48 | (6) |
|
Designing a Layout for Secure Pages |
|
|
54 | (6) |
|
|
60 | (1) |
|
|
60 | (1) |
|
Chapter 4 Overview of Azure Storage |
|
|
61 | (26) |
|
Introduction to Azure Storage |
|
|
62 | (2) |
|
Getting Started with Azure SDK and Storage Emulator |
|
|
64 | (5) |
|
Azure Table Storage Unit of Work Pattern |
|
|
69 | (8) |
|
|
77 | (2) |
|
Auditing Data Through Snapshots |
|
|
79 | (3) |
|
Create the Unit of Work Project in the Automobile Service Center Solution |
|
|
82 | (4) |
|
|
86 | (1) |
|
|
86 | (1) |
|
Chapter 5 Test-Driven Approach Using xUnit.net |
|
|
87 | (22) |
|
Test-Driven Development Life Cycle |
|
|
88 | (1) |
|
|
89 | (1) |
|
Getting Started with xUnit.net and MOQ |
|
|
90 | (9) |
|
Setting Up Session-State Middleware and Its Unit-Testing Fake |
|
|
99 | (8) |
|
|
107 | (2) |
|
Chapter 6 Securing the Application with ASP.NET Core Identity and the OAuth 2.0 Protocol |
|
|
109 | (80) |
|
Creating and Setting Up the Admin Account |
|
|
110 | (7) |
|
Creating Login and Logout Screens |
|
|
117 | (12) |
|
Retrieving User Information from ClaimsPrincipal |
|
|
129 | (2) |
|
Resetting a Password Through MailKit E-mail Library Integration |
|
|
131 | (12) |
|
Developing a Forgot Password Option |
|
|
143 | (2) |
|
Creating and Managing Service Engineers |
|
|
145 | (19) |
|
Understanding the OAuth 2.0 Protocol |
|
|
164 | (2) |
|
Using a Gmail Authentication Provider for Customer Authentication |
|
|
166 | (18) |
|
|
184 | (1) |
|
|
185 | (1) |
|
|
186 | (1) |
|
|
186 | (1) |
|
|
187 | (2) |
|
Chapter 7 Master Data Management Using Azure Table Storage |
|
|
189 | (54) |
|
Managing Master Data in Azure Tables |
|
|
189 | (34) |
|
Importing Master Data to Azure Tables from Excel |
|
|
223 | (10) |
|
Enabling Redis Memory Caching |
|
|
233 | (8) |
|
|
241 | (2) |
|
Chapter 8 Logging and Exception Handling |
|
|
243 | (20) |
|
Creating a Logging Framework |
|
|
243 | (7) |
|
Capturing User Activity Through an Action Filter |
|
|
250 | (3) |
|
Implementing Global Exception Handling |
|
|
253 | (3) |
|
Configuring Status Code Pages |
|
|
256 | (6) |
|
|
262 | (1) |
|
Chapter 9 Creating Areas and Navigation by Using View Components |
|
|
263 | (30) |
|
Implementing Areas for the Automobile Service Center Application |
|
|
264 | (9) |
|
Creating a Dynamic JSON-Driven Navigation Menu |
|
|
273 | (13) |
|
Using Bundling and Minification |
|
|
286 | (6) |
|
|
292 | (1) |
|
Chapter 10 Forms and Validations |
|
|
293 | (64) |
|
|
293 | (2) |
|
|
295 | (11) |
|
|
306 | (20) |
|
Service Request Details View |
|
|
326 | (14) |
|
Custom Validations using DataAnnotation Attributes |
|
|
340 | (5) |
|
Adding Internationalization Support |
|
|
345 | (8) |
|
|
353 | (1) |
|
|
354 | (1) |
|
|
355 | (2) |
|
Chapter 11 Real-Time Communication with SignalR |
|
|
357 | (68) |
|
|
358 | (1) |
|
Enabling Two-Way Communication Between Customers and Service Engineers |
|
|
359 | (27) |
|
Configure Automobile Service Center with SignalR |
|
|
360 | (2) |
|
Create SignalR Hub to Enable-Two Way Communication Using JQuery |
|
|
362 | (14) |
|
Enable User Online/Offline Notifications Using SignalR |
|
|
376 | (10) |
|
Providing Service Updates via Text and Web Notifications |
|
|
386 | (15) |
|
Send SMS Notifications to Customers by Using Twilio API |
|
|
386 | (13) |
|
Enable Web Notifications to Customers by Using SignalR |
|
|
399 | (2) |
|
Notifying Customers with Promotions |
|
|
401 | (22) |
|
Build the Promotional Offers Capability |
|
|
401 | (16) |
|
Display Promotional Offers to Customers |
|
|
417 | (2) |
|
Enable Web Notifications to Customers on New Promotions |
|
|
419 | (4) |
|
|
423 | (1) |
|
|
424 | (1) |
|
Chapter 12 Code Version Control Using GitHub Platform |
|
|
425 | (64) |
|
Getting Started with GitHub |
|
|
426 | (6) |
|
Managing Local GitHub Credentials and Adding Collaborators to GitHub Repository |
|
|
432 | (5) |
|
Managing Automobile Service Centre source code using Git Bash |
|
|
437 | (30) |
|
Create and commit source code to a Local Git Repository |
|
|
437 | (3) |
|
Create and push source code to a Remote Git Repository |
|
|
440 | (2) |
|
Branching and merging source code |
|
|
442 | (9) |
|
Reset an unwanted commit from Local Repository |
|
|
451 | (2) |
|
Reset an unwanted commit from Remote Repository |
|
|
453 | (2) |
|
Resolve merge conflicts in source code |
|
|
455 | (12) |
|
Using GitHub with Visual Studio |
|
|
467 | (19) |
|
|
486 | (1) |
|
|
487 | (2) |
|
Chapter 13 Configuring a Continuous Build with Travis CI |
|
|
489 | (20) |
|
|
490 | (1) |
|
Creating a Travis CI Account and Associating It with the GitHub Repository |
|
|
491 | (4) |
|
Configuring the GitHub Repository with Travis.yml |
|
|
495 | (7) |
|
Displaying the Travis Build Status at the GitHub Repository Home Page |
|
|
502 | (3) |
|
Enabling Travis Build Notifications to Users |
|
|
505 | (2) |
|
|
507 | (1) |
|
|
508 | (1) |
|
Chapter 14 Preparing an Application for Production and Creating a Docker Image |
|
|
509 | (34) |
|
|
510 | (1) |
|
Installing Docker and Reviewing Prerequisites |
|
|
511 | (5) |
|
Preparing the Application with an Azure Key Vault Configuration |
|
|
516 | (17) |
|
Set Up Azure Key Vault and Configure the Access Policy |
|
|
517 | (8) |
|
Set Up Azure Table Storage and Azure Redis Cache Services |
|
|
525 | (5) |
|
Create Secrets at Azure Key Vault |
|
|
530 | (1) |
|
Integrate Application Code with Azure Key Vault |
|
|
531 | (2) |
|
|
533 | (8) |
|
|
541 | (1) |
|
|
542 | (1) |
|
Chapter 15 Continuous Deployment to Azure Linux Virtual Machines by Using Docker Cloud |
|
|
543 | (48) |
|
Introduction to Docker Cloud |
|
|
544 | (3) |
|
Create Azure Nodes for Continuous Deployment |
|
|
547 | (5) |
|
Docker Cloud Continuous Integration with GitHub Repository |
|
|
552 | (3) |
|
Continuous Deployment to Azure Nodes from Docker Cloud |
|
|
555 | (15) |
|
Bring Our Own Node for Docker Integration |
|
|
570 | (17) |
|
Automobile Service Center and .NET Core 2.0 |
|
|
587 | (1) |
|
|
588 | (1) |
|
|
589 | (1) |
|
|
590 | (1) |
|
|
590 | (1) |
Index |
|
591 | |