This post originated from an RSS feed registered with .NET Buzz
by Christian Horsdal.
Original Post: Packaging OWIN Middleware
Feed Title: Horsdal
Feed URL: http://www.horsdal-consult.dk/feeds/posts/default
Feed Description: A blog that will be about code, architecture, design, and .NET.
Following on from the last post about building OWIN middleware directly as functions this post shows how to package such middleware up in an easy to consume package. Doing so is quite easy, so this post is quite short.
The request logging middleware developed in the last post looks like this:
To use this application developers will have to add that function to their OWIN pipeline. Doing so in pure OWIN, without resorting to APIs specific to a given server implementation, is a matter of calling the build function with the middleware function. The server implementation is responsible for providing the build function.
Using the ASP.NET 5 API for obtaining an OWIN build function and assuming the requestLoggingMiddleware is in scope adding middleware through the build function looks like this:
Nice and simple. What we might add on top of this is a simple extension method to the build function:
turning the code for adding the middleware to the pipeline into this:
The advantage of this is that
the requestLoggingMiddleware variable need not be in scope in the application code
the extension method provides a convenient place for application startup code to pass in parameters to the middleware - like say logging configuration parameters or whatever else might be relevant
the extension method returns the build function allowing application code a convenient way of chaining pipeline setup
Now sharing the middleware a across a number of services (and teams) is a matter of sharing the class above through e.g. NuGet.