"Microservices in .NET Core" has landed

My new book "Microservices in .NET Core  - with examples in Nancy" has been published. It's been available as an early access ebook for a long time, but now the final paper book and the final ebook is available.


This book is very much based on experience from working of real microservices systems. While the examples in the book are not lifted directly from any particular system they are inspired by real world systems. My rule has been that all the examples demonstrate something that could have been in one or more of the systems I have experience with.

With this book I have tried to show two things:

    1. How to design a microservices system.
    2. How to build such a

Read more...

Working full-time with getting Nancy running on CoreCLR

For the past three weeks I have been living the dream - full-time development of Nancy, while still picking up a salary. Not long after I wrote my blog post about "Support the development of Nancy financially" I was contacted by a company, that are invested in Nancy and wanted to discuss a potential win-win scenario.

A couple of conference calls later and the deal was signed for me to work, full-time, on fast-tracking our plans to make Nancy run on the CoreCLR. This has always been a goal of ours, but we have been holding back on it because it has been a very moving target and there have been plenty of other fish in the sea to focus on.

Read more...

Support the development of Nancy financially

Working on Nancy has always been a labor of love. We have never thought about charging for commercial use or in any other put up a pay wall that restricts your use of the framework. During the past five years, thousands of hours have been put into making Nancy what is it today and it makes us extremely proud that it is being used in production, all over the world and in a wide range of products.

That said, even though Nancy itself is free to use, the development of it is not. Each hour we spend working on Nancy is an hour less we could have spent working on other personal projects or spending time with friends and family.

As with most project, time is the most valuable commodity we have

Read more...

Nancy v1.4.2 will break the versioning schema

Usually when we put out a new version of Nancy, we also bump the version number of all other Nancy packages, even if they have not had any changes.

This approach has made it easy to know that you are using a version that is guaranteed to be compatible with the current Nancy version. It has made upgrading easy since you just update the Nancy package and it will update all other packages that has a dependency on the Nancy package.

However, now that the v1.x releases have officially entered maintenance mode, we have decided that the v1.4.2 release will break this tradition. For the v1.4.2 release we will only update the Nancy package it self and leave the remaining packages at v1.4.1.

Read more...

Our plans for Nancy 1.x and beyond

At the time that I write this, Nancy is less than two weeks (the 20th!) shy of turning 5 years old. For any open-source project that is quite an achievement and I dare to say that for one that is based on .NET it is amazing.

If we turn it into numbers, we put out 37 releases (a bit more than 7 per year), had 228 unique (only counting the main repository) contributors and 1237 closed pull-requests. We have had the pleasure of seeing the community embrace it, job ads pop up and people traveling to conferences, all over the world, to deliver sessions on our framework. Amazing!

In February, of this year, we put out the v1.0 release and just the other day we released v1.4.1 into the wild.

Read more...

I am now taking contract work for Nancy.

I am pleased to be able to announce that I am now able to accept Nancy based contract work (world wide).

If you are building products based on Nancy and you are looking for help with (but not limited to) code reviews, training / workshops, team coaching / mentoring, project implementations or problem solving, then you should drop me a line. I am based in Sweden so ideally looking for clients that are comfortable with remote workers, although I will also be available to occasionally work on-site.

On the legal side, all contracts will go through my employer, tretton37, which is one of the top consultancy agencies in Sweden, so you won't be dealing directly with a "one man band". Another

Read more...

Nancy 1.0 and the Book

In light of Nancy recently reaching 1.0 (and quickly thereafter 1.1), I thought it was appropriate to revisit my Nancy book, and the running code sample in it on Nancy 1.1. This post looks at what's changed and what I might have coded differently now.

But first,

Is the Book still Relevant?

Yes, I think the book is still relevant. Almost all the code works unchanged with Nancy 1.1, and Nancy still follows the same principals and philosophy. I still think the book is a quick way to get introduced to Nancys way of doing things, the DSLs it provides and it awesome extensibility.
(But then again, I may be slightly biased)

What Broke Between Then and Now?

After updating the Nancy packages in my copy of

Read more...

Using Nancy.Linker with Razor Views

First things first: I recommend that you use Nancy.Linker to generate link in the route handler not the view code, as described in my last post. If you insist on generating the links in the view code here is how to make Nancy.Linker work with Razor views.

Firstly you need to pass an instance on IResourceLinker and the NancyContext to your view. This works just like passing any other object from the handler to the view  - in your Nancy module you have your route handler pass the IResoureLinker and NancyContext objects as part of the model to the view you want to render:




The NancyContext must  passed along with the IResourceLinker, since Nancy.Linker needs it to generate links. Once

Read more...

Permament redirect to HTTPS with IIS

Google has just recently updated their search results to give higher ranking to sites with an SSL Certificate, than to sites without, which is one of the best changes Google has made in recent years. There really is no excuse for not having a cert now. (note, this is limited to small portion of sites but lets assume that this will be rolled out if Google proves it to be worth while)

googleonlinesecurity - https-as-ranking-signal_6.html

Unfortuntely for me it seems Github Pages does not support Certificates on custom domain names, yet... :( hopefully they will support this eventually so that I can avoid moving my blog.

So one thing that pops up in the Nancy channel on JabbR

Read more...

Using Nancy.Linker with Views

TL;DR

You have two options: 
  • The simplest is to use Nancy.Linker in your route handler to generate the links needed in the views, put them on the view model and pass the view model to the view as usual. 
  • The other is to pass IResourceLinker to the view and allow it to generate links as needed. For this to work you may need a little bit of web.config'ing to make Razor play nice. 
This post shows the former.

Nothing New

In the last post I introduced Nancy.Linker, showed how to use it to create links to named routes and place them on a model object returned by a Nancy route handler.

In essence; given this module:


This route handler will return a model with a link to the route in the

Read more...