diff --git a/rules/do-you-not-have-height-width-in-an-img-tag/non-streched-image.jpg b/rules/avoid-height-width-in-img-tag/non-streched-image.jpg similarity index 100% rename from rules/do-you-not-have-height-width-in-an-img-tag/non-streched-image.jpg rename to rules/avoid-height-width-in-img-tag/non-streched-image.jpg diff --git a/rules/do-you-not-have-height-width-in-an-img-tag/rule.md b/rules/avoid-height-width-in-img-tag/rule.md similarity index 100% rename from rules/do-you-not-have-height-width-in-an-img-tag/rule.md rename to rules/avoid-height-width-in-img-tag/rule.md diff --git a/rules/do-you-not-have-height-width-in-an-img-tag/streched-image.jpg b/rules/avoid-height-width-in-img-tag/streched-image.jpg similarity index 100% rename from rules/do-you-not-have-height-width-in-an-img-tag/streched-image.jpg rename to rules/avoid-height-width-in-img-tag/streched-image.jpg diff --git a/rules/do-you-know-yarp-is-awesom/reverse-proxy.png b/rules/do-you-know-yarp-is-awesome/reverse-proxy.png similarity index 100% rename from rules/do-you-know-yarp-is-awesom/reverse-proxy.png rename to rules/do-you-know-yarp-is-awesome/reverse-proxy.png diff --git a/rules/do-you-know-yarp-is-awesom/rule.md b/rules/do-you-know-yarp-is-awesome/rule.md similarity index 98% rename from rules/do-you-know-yarp-is-awesom/rule.md rename to rules/do-you-know-yarp-is-awesome/rule.md index ef1d50cfd08..12fef7e9fbf 100644 --- a/rules/do-you-know-yarp-is-awesom/rule.md +++ b/rules/do-you-know-yarp-is-awesome/rule.md @@ -1,36 +1,36 @@ ---- -type: rule -title: Do you know why YARP is awesome? -uri: do-you-know-yarp-is-awesome -authors: - - title: Ozair Ashfaque - url: https://www.ssw.com.au/people/ozair-ashfaque/ - - title: William Liebenberg - url: https://www.ssw.com.au/people/william-liebenberg/ - - title: Christian Morford-Waite - url: https://www.ssw.com.au/people/christian-morford-waite/ -created: 2023-11-22T22:33:15.448Z -guid: c86ca5a3-a44a-441f-8804-8b67d0b589bc - ---- - -YARP, or Yet Another Reverse Proxy, is a .NET toolkit designed for building fast proxy servers. It seamlessly integrates with ASP.NET and .NET infrastructure, offering easy customization to suit specific deployment needs. YARP operates within the ASP.NET pipeline, handling incoming requests and utilizing its sub-pipeline for proxying requests to backend servers. Users can extend functionality by adding or replacing modules as required. - -YARP uses the concept of **Routes** to represent request patterns for the proxy and **Clusters** to represent the services to forward those requests. - - - -![Figure: YARP is a reverse proxy that acts as the public endpoint for a site or service and forwards calls to backend servers](reverse-proxy.png) - -**Source:** [Announcing YARP 1.0 Release](https://devblogs.microsoft.com/dotnet/announcing-yarp-1-0-release/) - -### ✅ Advantages of YARP - -Numerous API gateways and reverse proxy implementations, including [NGINX](https://www.nginx.com/) and [Ocelot](https://github.com/ThreeMammals/Ocelot), are already available for use. However, YARP distinguishes itself with its unique attributes. YARP seamlessly integrates into the ASP.NET environment, offering effortless customization to meet specific requirements. YARP offers a comprehensive set of features for building and managing reverse proxy solutions, including: - -* **Dynamic route definitions:** Enables the definition of routes in a dynamic configuration, allowing flexibility in specifying how incoming requests are handled -* **Extensible pipeline model:** Customize the proxy behavior using a modular pipeline architecture -* **Load balancing:** Employ various load-balancing algorithms to distribute traffic effectively -* **Session Affinity:** Ensures that requests from a specific client are consistently directed to the same destination server, promoting continuity and predictability in the user experience -* **Request and response transformation:** Allows developers to apply transformations to requests sent to or responses received from destination servers. This feature facilitates the customization of data before it reaches its destination -* **Route-level authorization and CORS:** Permits the specification of authorization and Cross-Origin Resource Sharing (CORS) settings on a per-route basis. This ensures fine-grained control over access and security policies for different routes +--- +type: rule +title: Do you know why YARP is awesome? +uri: do-you-know-yarp-is-awesome +authors: + - title: Ozair Ashfaque + url: https://www.ssw.com.au/people/ozair-ashfaque/ + - title: William Liebenberg + url: https://www.ssw.com.au/people/william-liebenberg/ + - title: Christian Morford-Waite + url: https://www.ssw.com.au/people/christian-morford-waite/ +created: 2023-11-22T22:33:15.448Z +guid: c86ca5a3-a44a-441f-8804-8b67d0b589bc + +--- + +YARP, or Yet Another Reverse Proxy, is a .NET toolkit designed for building fast proxy servers. It seamlessly integrates with ASP.NET and .NET infrastructure, offering easy customization to suit specific deployment needs. YARP operates within the ASP.NET pipeline, handling incoming requests and utilizing its sub-pipeline for proxying requests to backend servers. Users can extend functionality by adding or replacing modules as required. + +YARP uses the concept of **Routes** to represent request patterns for the proxy and **Clusters** to represent the services to forward those requests. + + + +![Figure: YARP is a reverse proxy that acts as the public endpoint for a site or service and forwards calls to backend servers](reverse-proxy.png) + +**Source:** [Announcing YARP 1.0 Release](https://devblogs.microsoft.com/dotnet/announcing-yarp-1-0-release/) + +### ✅ Advantages of YARP + +Numerous API gateways and reverse proxy implementations, including [NGINX](https://www.nginx.com/) and [Ocelot](https://github.com/ThreeMammals/Ocelot), are already available for use. However, YARP distinguishes itself with its unique attributes. YARP seamlessly integrates into the ASP.NET environment, offering effortless customization to meet specific requirements. YARP offers a comprehensive set of features for building and managing reverse proxy solutions, including: + +* **Dynamic route definitions:** Enables the definition of routes in a dynamic configuration, allowing flexibility in specifying how incoming requests are handled +* **Extensible pipeline model:** Customize the proxy behavior using a modular pipeline architecture +* **Load balancing:** Employ various load-balancing algorithms to distribute traffic effectively +* **Session Affinity:** Ensures that requests from a specific client are consistently directed to the same destination server, promoting continuity and predictability in the user experience +* **Request and response transformation:** Allows developers to apply transformations to requests sent to or responses received from destination servers. This feature facilitates the customization of data before it reaches its destination +* **Route-level authorization and CORS:** Permits the specification of authorization and Cross-Origin Resource Sharing (CORS) settings on a per-route basis. This ensures fine-grained control over access and security policies for different routes diff --git a/rules/dones-do-your-dones-include-a-url/rule.md b/rules/include-links-in-emails/rule.md similarity index 100% rename from rules/dones-do-your-dones-include-a-url/rule.md rename to rules/include-links-in-emails/rule.md diff --git a/rules/do-you-link-internal-emails-to-the-rule-they-follow/link-to-rule.jpg b/rules/link-emails-to-the-rule-or-template-they-follow/link-to-rule.jpg similarity index 100% rename from rules/do-you-link-internal-emails-to-the-rule-they-follow/link-to-rule.jpg rename to rules/link-emails-to-the-rule-or-template-they-follow/link-to-rule.jpg diff --git a/rules/do-you-link-internal-emails-to-the-rule-they-follow/rule.md b/rules/link-emails-to-the-rule-or-template-they-follow/rule.md similarity index 100% rename from rules/do-you-link-internal-emails-to-the-rule-they-follow/rule.md rename to rules/link-emails-to-the-rule-or-template-they-follow/rule.md diff --git a/rules/does-your-scrum-master-aka-project-manager-maintain-a-strict-project-schedule/ProjectManagement_Coach.jpg b/rules/maintain-a-strict-project-schedule/ProjectManagement_Coach.jpg similarity index 100% rename from rules/does-your-scrum-master-aka-project-manager-maintain-a-strict-project-schedule/ProjectManagement_Coach.jpg rename to rules/maintain-a-strict-project-schedule/ProjectManagement_Coach.jpg diff --git a/rules/does-your-scrum-master-aka-project-manager-maintain-a-strict-project-schedule/rule.md b/rules/maintain-a-strict-project-schedule/rule.md similarity index 100% rename from rules/does-your-scrum-master-aka-project-manager-maintain-a-strict-project-schedule/rule.md rename to rules/maintain-a-strict-project-schedule/rule.md diff --git a/rules/do-you-post-multilingual-posts-on-social-media/rule.md b/rules/multilingual-posts-on-social-media/rule.md similarity index 100% rename from rules/do-you-post-multilingual-posts-on-social-media/rule.md rename to rules/multilingual-posts-on-social-media/rule.md diff --git a/rules/do-you-name-your-virtual-machines-with-a-standadized-naming-convention/naming-badexample.jpg b/rules/name-your-virtual-machines-with-a-standardized-naming-convention/naming-badexample.jpg similarity index 100% rename from rules/do-you-name-your-virtual-machines-with-a-standadized-naming-convention/naming-badexample.jpg rename to rules/name-your-virtual-machines-with-a-standardized-naming-convention/naming-badexample.jpg diff --git a/rules/do-you-name-your-virtual-machines-with-a-standadized-naming-convention/naming-goodexample.jpg b/rules/name-your-virtual-machines-with-a-standardized-naming-convention/naming-goodexample.jpg similarity index 100% rename from rules/do-you-name-your-virtual-machines-with-a-standadized-naming-convention/naming-goodexample.jpg rename to rules/name-your-virtual-machines-with-a-standardized-naming-convention/naming-goodexample.jpg diff --git a/rules/do-you-name-your-virtual-machines-with-a-standadized-naming-convention/rule.md b/rules/name-your-virtual-machines-with-a-standardized-naming-convention/rule.md similarity index 100% rename from rules/do-you-name-your-virtual-machines-with-a-standadized-naming-convention/rule.md rename to rules/name-your-virtual-machines-with-a-standardized-naming-convention/rule.md diff --git a/rules/do-you-reward-your-developers-for-completing-a-release-on-time-and-budget/rule.md b/rules/reward-your-developers/rule.md similarity index 100% rename from rules/do-you-reward-your-developers-for-completing-a-release-on-time-and-budget/rule.md rename to rules/reward-your-developers/rule.md diff --git a/rules/do-your-network-cards-to-the-latest-driver/rule.md b/rules/update-network-cards-to-the-latest-driver/rule.md similarity index 100% rename from rules/do-your-network-cards-to-the-latest-driver/rule.md rename to rules/update-network-cards-to-the-latest-driver/rule.md diff --git a/rules/do-you-use-microsoft-advertising-formerly-known-as-bing-ads/rule.md b/rules/use-microsoft-advertising-formerly-known-as-bing-ads/rule.md similarity index 100% rename from rules/do-you-use-microsoft-advertising-formerly-known-as-bing-ads/rule.md rename to rules/use-microsoft-advertising-formerly-known-as-bing-ads/rule.md