We may earn an affiliate commission when you visit our partners.
Jason Roberts

In this course, we learn how to use the open source .NET Polly library to automatically retry operations rather than failing on the first exception.

Read more

In this course, we learn how to use the open source .NET Polly library to automatically retry operations rather than failing on the first exception.

By the end of this course you’ll know how to effectively and easily handle temporary transient errors in applications and provide great user experiences by creating more robust and resilient applications that don’t interrupt the user unnecessarily. Transient errors such as temporary network connectivity problems or fleeting database problems can cause more users to report errors and more error log entries that can waste valuable developer time. In this course, we learn how to use the open source .NET Polly library to automatically retry operations rather than failing on the first exception.

What's inside

Syllabus

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Develops Polly for C# skills, which are core skills for .NET developers
Taught by Jason Roberts, well-regarded instructor in the domain of .NET
Examines exceptions handling in .NET, which is highly relevant to industry
Builds a strong foundation for beginners in handling transient errors
Introduces Retry and Retry Forever policies
Teaches concepts with Wait and Retry, Circuit Breaker Policies

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Mastering .net polly for resilient apps

According to learners, this course is a highly effective resource for mastering the .NET Polly library, enabling them to build robust and resilient applications. Students consistently praise the instructor's excellent explanations, particularly for complex concepts like the Circuit Breaker pattern, and highlight the practical demos that provide immediate applicability. The course is lauded for its ability to help developers prevent transient errors and thus deliver an improved user experience. While generally well-received, some learners note that it assumes some prior C# and asynchronous programming knowledge, and its concise coverage means it serves more as a strong introduction rather than an exhaustive deep dive into advanced or custom Polly policies.
Directly helps in making applications robust and resilient.
"The demos were super helpful, showing exactly how Polly helps build robust applications."
"I now feel much more confident in making my applications resilient."
"The focus on user experience by preventing unnecessary errors is a key takeaway from this course."
Concepts are explained clearly with practical examples.
"The instructor explains complex concepts like the Circuit Breaker pattern with amazing clarity."
"I found the examples practical, and it certainly enhanced my understanding of transient error handling."
"The 'Wait and Retry' policy was particularly well explained, which helped solidify my understanding."
Good introduction but less deep on advanced/custom topics.
"Good overview, but I was hoping for more in-depth discussions on custom policies and integrating Polly with logging frameworks."
"It's a decent starting point for Polly, but don't expect a deep dive into advanced topics."
"The course is concise and to the point, which means it doesn't cover every advanced scenario."
Benefits from prior familiarity with C# and async patterns.
"My only minor feedback is that some parts felt a bit rushed, especially if you're not fully familiar with async programming in C#."
"It assumes some familiarity with C# and asynchronous operations, so come prepared."
"I found myself pausing a few times to re-read concepts because of a lack of async background."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Better User Experiences and More Robust Applications with Polly 2 with these activities:
Review Concepts of Transient Errors
Refresh your understanding of transient errors, their characteristics, and why it's crucial to handle them differently from permanent errors.
Show steps
  • Review documentation or articles on transient errors.
  • Identify examples of transient errors in real-world applications.
Review Error Handling Fundamentals
Strengthen your foundation by reviewing the basics of error handling, different types of errors, and best practices for handling them effectively.
Browse courses on Error Handling
Show steps
  • Review documentation or articles on error handling.
  • Practice handling errors in a sample project.
Review retry code patterns in existing .NET applications
You can pick up a lot from looking at how more established developers handle errors and retry patterns. Look for the 'Polly' library and notice how it is implemented in real world applications.
Browse courses on Exception Handling
Show steps
  • Look through open source .NET projects for use of the Polly library.
  • Join a forum for .NET programmers and ask how they implement retry logic.
  • Clone open source projects that use Polly. Run the application and debug the error handling code path.
Six other activities
Expand to see all activities and additional details
Show all nine activities
Participate in Polly User Group Discussions
Connect with other Polly users and learn from their experiences, best practices, and innovative solutions.
Browse courses on Polly
Show steps
  • Join online Polly user groups or forums.
  • Participate in discussions and share your knowledge.
  • Seek support and advice from the community.
Practice Retry Policies with Code Exercises
Solidify your understanding of retry policies by completing coding exercises that simulate real-world scenarios.
Browse courses on Polly
Show steps
  • Set up a development environment with Polly.
  • Implement retry policies in sample code projects.
  • Test and debug your retry implementations.
Explore Advanced Polly Features with Tutorials
Expand your knowledge by exploring tutorials that cover advanced features of Polly such as custom retry logic, circuit breakers, and bulkheading.
Browse courses on Polly
Show steps
  • Identify tutorials that align with your interests and skill level.
  • Follow the tutorials and implement advanced Polly techniques in your projects.
  • Share your findings and insights with the community.
Simulate transient errors in a program to test retry logic
You can learn by intentionally creating errors that will trigger error handling logic in your application. This will help you see how Polly handles retries, timeouts, and circuit breakers.
Show steps
  • Create a simple function that simulates a network request.
  • Occasionally, return an error from the simulated network request.
  • Wrap the simulation function with a Polly policy that will retry a certain number of times when the function returns an error.
  • Run the simulation and observe how Polly handles the errors.
Build a Troubleshooting Guide for Transient Errors
Enhance your problem-solving skills by creating a comprehensive troubleshooting guide that outlines steps to identify and resolve transient errors using Polly.
Show steps
  • Gather information about common transient errors.
  • Identify potential solutions for each error.
  • Develop step-by-step troubleshooting instructions.
  • Test and refine your guide.
Assemble a Resource Library on Polly and Error Handling
Create a valuable resource for yourself and others by gathering and organizing articles, tutorials, documentation, and other materials related to Polly and error handling.
Browse courses on Polly
Show steps
  • Identify and collect relevant resources from various sources.
  • Organize the resources into a logical structure.
  • Share your resource library with the community.

Career center

Learners who complete Better User Experiences and More Robust Applications with Polly 2 will develop knowledge and skills that may be useful to these careers:
Reliability Engineer
As a Reliability Engineer, you will be responsible for improving the reliability of software systems. This course will help you build a foundation in the principles of reliability engineering, such as fault tolerance, redundancy, and recovery. You will also learn how to use tools and techniques to measure reliability and identify areas for improvement.
Site Reliability Engineer
As a Site Reliability Engineer, you will be responsible for ensuring the reliability and performance of software systems. This course will help you build a foundation in the principles of site reliability engineering, such as capacity planning, performance monitoring, and incident management. You will also learn how to use tools and techniques to automate tasks and improve efficiency.
Software Engineer
As a Software Engineer, you will be responsible for designing, developing, and maintaining software systems. This course will help you build a foundation in the principles of software engineering, such as object-oriented design, testing, and refactoring. You will also learn how to use tools and techniques to improve code quality and efficiency.
Test Engineer
As a Test Engineer, you will be responsible for testing software systems to ensure that they meet requirements. This course will help you build a foundation in the principles of software testing, such as test planning, test execution, and test reporting. You will also learn how to use tools and techniques to automate testing and improve efficiency.
Performance Engineer
As a Performance Engineer, you will be responsible for improving the performance of software systems. This course will help you build a foundation in the principles of performance engineering, such as performance analysis, performance tuning, and capacity planning. You will also learn how to use tools and techniques to measure performance and identify areas for improvement.
DevOps Engineer
As a DevOps Engineer, you will be responsible for bridging the gap between development and operations teams. This course will help you build a foundation in the principles of DevOps, such as continuous integration, continuous delivery, and infrastructure automation. You will also learn how to use tools and techniques to automate tasks and improve efficiency.
Quality Assurance Manager
As a Quality Assurance Manager, you will be responsible for ensuring the quality of software systems. This course will help you build a foundation in the principles of quality assurance, such as quality planning, quality control, and quality improvement. You will also learn how to use tools and techniques to automate testing and improve efficiency.
Product Manager
As a Product Manager, you will be responsible for defining the vision and roadmap for software products. This course will help you build a foundation in the principles of product management, such as market research, competitive analysis, and product planning. You will also learn how to use tools and techniques to gather feedback from users and improve the product.
Business Analyst
As a Business Analyst, you will be responsible for understanding the business needs of software systems. This course will help you build a foundation in the principles of business analysis, such as requirements gathering, process modeling, and data analysis. You will also learn how to use tools and techniques to gather feedback from stakeholders and improve the requirements.
Project Manager
As a Project Manager, you will be responsible for planning, executing, and controlling software development projects. This course will help you build a foundation in the principles of project management, such as project planning, risk management, and stakeholder management. You will also learn how to use tools and techniques to track progress and manage resources.
Data Scientist
As a Data Scientist, you will be responsible for using data to solve business problems. This course may be useful for you if you are interested in learning how to use data to improve the reliability and performance of software systems.
Machine Learning Engineer
As a Machine Learning Engineer, you will be responsible for developing and deploying machine learning models. This course may be useful for you if you are interested in learning how to use machine learning to improve the reliability and performance of software systems.
Cloud Architect
As a Cloud Architect, you will be responsible for designing and deploying cloud-based software systems. This course may be useful for you if you are interested in learning how to use cloud computing to improve the reliability and performance of software systems.
Software Architect
As a Software Architect, you will be responsible for designing and developing software systems. This course may be useful for you if you are interested in learning how to use design patterns and architectural principles to improve the reliability and performance of software systems.
Database Administrator
As a Database Administrator, you will be responsible for managing and maintaining database systems. This course may be useful for you if you are interested in learning how to use database technologies to improve the reliability and performance of software systems.

Reading list

We've selected six books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Better User Experiences and More Robust Applications with Polly 2.
A widely popular and well-received book that explains principles of designing data-intensive systems. Resilience critical part of these systems to avoid data loss and maintain integrity. should be used as a supplemental reference material for students taking the course.
Microservices are a popular application architecture style. provides a great overview of microservices including concepts related to fault tolerance, resilience, and retry patterns to help with persistence or database communication. This book would be a good supplemental read for the course.
Is written by experienced Site Reliability Engineers at Google and provides a wealth of practical knowledge. Students interested in learning more about SRE practices and resilience in software systems can read this as a supplemental resource to the course.
Introduces the fundamental principles of fault tolerance in distributed systems and covers a range of techniques and algorithms. Readers will gain a deep understanding of the challenges and approaches to ensuring fault tolerance in distributed applications.
Focuses on optimizing the performance of web applications and covers topics such as network optimization, HTTP caching, and reducing latency. While it's not directly related to the specific topic of retry policies, it provides valuable insights into performance considerations that may be relevant for students building resilient web applications.
Dives into the world of cloud-native development using Java and Spring Boot. It covers topics like microservices, containerization, and Kubernetes, which are essential for building scalable and resilient applications in the cloud. It aligns well with the course's focus on resilience and provides practical guidance for implementing these concepts.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser