Roundup #19: IdentityServer in AspNetCore, NET4.8 EA, MSBuild.CentralPackageVersions, Service Boundaries

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.

 

IdentityServer in ASP.NET Core 2.x

Link: https://twitter.com/blowdart/status/1042265047878123520

 

.NET Framework 4.8 Early Access

 We are happy to share an Early Access build for the .NET Framework 4.8. This includes an updated .NET 4.8 runtime as well as the .NET 4.8 Developer Pack (a a single package that bundles the .NET Framework 4.8 runtime, the .NET 4.8 Targeting Pack, and the .NET Framework 4.8 SDK).

Link: https://blogs.msdn.microsoft.com/dotnet/2018/09/17/announcing-net-framework-4-8-early-access-build-3646/

 

Microsoft.Build.CentralPackageVersions

The Microsoft.Build.CentralPackageVersions MSBuild project SDK allows project tree owners to manage their NuGet package versions in one place. Stock NuGet requires that each project contain a version. You can also use MSBuild properties to manage versions.

Link: https://github.com/Microsoft/MSBuildSdks/blob/master/src/CentralPackageVersions/README.md

 

Finding your service boundaries – a practical guide – Adam Ralph

We know it’s useful to split up complex systems. We’ve seen the benefits of modular deployment of microservices. Dealing with only one piece of code at a time eases our cognitive load. But how do we know where to draw the service boundaries? In complex business domains, it’s often difficult to know where to start. When we get our boundaries wrong, the clocks starts ticking. Before long, we hear ourselves say “it would be easier to re-write it”.

Join Adam for practical advice on discovering the hidden boundaries in your systems. Help tease out the natural separation of concerns in a sample business domain. During 20 years of developing complex systems, Adam has had plenty of time to get things wrong. Learn to avoid the common pitfalls that can lead us down the path to “the big re-write”.

Finding your service boundaries – a practical guide – Adam Ralph from NDC Conferences on Vimeo.

Link: https://vimeo.com/284707733

Enjoy this post? Subscribe!

Subscribe to our weekly Newsletter and stay tuned.

Roundup #18: GitHub PR in VSCode, Azure DevOps, .NET Global Tool, MSBuildPipeLogger, Shared DTOs

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.

GitHub Pull Requests in Visual Studio Code

Like many other open source projects, the Visual Studio Code community collaborates through pull requests to land fixes and new features. Starting this past spring, our team has been working to bring you a new integrated pull request experience so that you can collaborate, comment, review, and validate GitHub pull requests directly from within Visual Studio Code.

Link: https://code.visualstudio.com/blogs/2018/09/10/introducing-github-pullrequests

Introducing Azure DevOps

Not in love with the new name but I get it.  I think something like Azure Team Services would have made more sense but just my opinion.

Link: https://azure.microsoft.com/en-us/blog/introducing-azure-devops/

 

Create a .NET Core Global Tool

This article teaches you how to create and package a .NET Core Global Tool. The .NET Core CLI allows you to create a console application as a Global Tool, which others can easily install and run. .NET Core Global Tools are NuGet packages that are installed from the .NET Core CLI. For more information about Global Tools, see .NET Core Global Tools overview.

Link: https://docs.microsoft.com/en-us/dotnet/core/tools/global-tools-how-to-create

 

Announcing MsBuildPipeLogger

The idea being able to respond in another process to MSBuild logging events that occur in a different process is really cool.

Link: https://github.com/daveaglick/MsBuildPipeLogger

 

Shared DTOs – Popular Opinion?

This thread and the original thread are a good source for various opinions.  Recommend reading if you do use shared DTOs.

Link: https://twitter.com/davidfowl/status/1039217388380516353

 

Enjoy this post? Subscribe!

Subscribe to our weekly Newsletter and stay tuned.

 

Upgrading Nancy to Version 2

Upgrading NancyAlthough there isn’t an “official” of Nancy v2 release yet, there’ is 2.0.0-clinteastwood that’s been in NuGet since Dec 12th, 2106 and as of this post has almost 200k downloads.  The primary reason for upgrading Nancy to v2 is because of its support for NETStandard 1.6 which means you can move to .NET Core.

In this demo, I’m going to be using ASP.NET Core with Owin and Nancy 2.0.0-clinteastwood to add back in the existing routing functionality that is a breaking change in v2.

Breaking Changes

There’s an upgrade notes page on the Nancy Wiki, which lists some of the breaking changes.  Although there aren’t many, and I suspect most of the work for the 2.0 release was for targeting NETStandard.

The most glaring breaking change is with routing.

Routing

Routing syntax has changed to Get("/", args => "Hello World");, these can be made async by adding the async/await keywords. For more info see the PR where it all changed https://github.com/NancyFx/Nancy/pull/2441

This is really significant.   In Nancy V1, you specified routes using the following:

If you have a large web app with many routes and modules, although a trivial change, this could take some significant time.

NancyV1Module

I decided to try to create a new module that would add back the existing routing behavior by calling the new underlying methods in the NancyModule.  This would allow me to simply change all my existing modules to extend this new class rather than the new Module in Nancy v2.

Usage

This then adds back in all the existing routing.  Just simply extend NancyV1Module instead of NancyModule.

Upgrading Nancy

I’ve created a console application with the source available on GitHub.

Have you ran into any significant issues when upgrading Nancy to v2?  Please let me know on Twitter or in the comments.

Enjoy this post? Subscribe!

Subscribe to our weekly Newsletter and stay tuned.