Sponsor: Do you build complex software systems? See how NServiceBus makes it easier to design, build, and manage software systems that use message queues to achieve loose coupling. Get started for free.
Here are the things that caught my eye this week. I’d love to hear what you found most interesting this week. Let me know in the comments or on Twitter.Open-source library guidance
This guidance provides recommendations for developers to create high-quality .NET libraries. This documentation focuses on the what and the why when building a .NET library, not the how.The issue of strong naming is address and actual guidance is actually in the docs now. Link: https://docs.microsoft.com/en-us/dotnet/standard/library-guidance/
Diagnosing .NET Core ThreadPool Starvation
This article is worth a read if you haveLink: https://blogs.msdn.microsoft.com/vancem/2018/10/16/diagnosing-net-core-threadpool-starvation-with-perfview-why-my-service-is-not-saturating-all-cores-or-seems-to-stall/
- A service written in .NET (and in particular .NET ASP.NET Core)
- Its ability to service incoming load has topped out
- But the machine’s CPUs are not fully utilized (often only using a small fraction of the total available CPU
Visual Studio 2019 Roadmap
Notable improvements are:Link: https://blogs.msdn.microsoft.com/visualstudio/2018/10/17/visual-studio-roadmap-updates-and-visual-studio-2019-information/
- A better performing and more reliable debugger, moving to an out-of-process 64-bit process.
- Improved search accuracy for menus, commands, options, and installable components.
- Visual Studio tooling for Windows Forms and WPF development on .NET Core 3.
Know the Flow! Events, Commands & Long-Running Services
Strategic design does not stop at defining boundaries around business capabilities – it should reach out for truly smart endpoints, emphasize autonomy and the need for more coarse-grained and asynchronous APIs. The long-running services behind such APIs feel responsible for their business and sort out most problems without leaking internal troubles and bothering their clients. While long-running services will leverage domain events for decoupling, they will often expose their core functions as commands – in order to minimise overall coupling! Extracting the customer-facing core processes of companies into dedicated, long-running services allows to keep sight of larger-scale flows – without violating bounded contexts or introducing god services. In this talk, Martin not only explores strategic design in the light of understanding the long-running nature of delivering many real-life business capabilities. He will also show the practical side of the equation: implementing long-running behaviour of services, requiring proper reactions on failures, timeouts and the compensating actions sagas are known for. A new generation of lightweight, embeddable and scalable saga managers and flow engines assist in that endeavour. Expect real-life experience and many examples!Link: https://www.youtube.com/watch?v=uSF5hyfez60