Using a Middleware to log Api Requests in ASP.NET Core is a no brainer.
If you have given a try to gRPC, probably you want to follow the same technique and you will wish that the experience was the same.
I've faced this challenge, in order to log the requests to my RPC services and I've been looking for a solution where:
- I can use Serilog to log the requests
- I know all the requests made to my services
- I know how long each request takes to respond
- I know the response status
- I can correlate each log entry using a Correlation ID
If you are moving to .net Core and you want to implement a versioning strategy in your application, now you have an awesome alternative to the good old fellow "AssemblyInfo".
The alternative is the Directory.build.props file. If you place these file in the root folder that contains your source code, when MSBuild runs will add to every project the properties defined in the Directory.build.props.
In this post, we will see how to quickly setup a solution with multiple projects and use Directory.build.props with Cake to build and increment the version number.
This post is my interpretation of the Container metaphor and how I use it to understand the concepts and explain containers to others.
Containers is one of the hot topics in the Software Development world and Docker is the technology that everyone wants to play with.
Thanks to this hype, everyone has at least a brief idea of what a container is. The problem is that we can easily be confused about what containers really are and the advantages of it.
I faced the same problem and, in my case, explore the container metaphor helped me to understand it.
So, why containers?
Do you know the JSON Patch format? The RFC6902 defines the structure to express a list of operations to apply over a JSON Document. This format is designed to be the payload of an HTTP PATCH method.
The format isn't difficult, you can easily understand the rules and build it manually. But, I confess that sometimes I struggle with it, specially when I'm testing a PATCH to a complex object. So... I built a Tool to help me.
Have you heard about Prefer Header for HTTP? The RFC-7240 defines how this header can be used by a client, in order to request that certain behaviors be employed by a server while processing a request.
Why does it matter? You probably have consumed API's where you use the HTTP POST or PUT method to modify a resource and the server returns a complete representation of the resource. In other cases the API only returns the Identifier of the resource created, for example.
What if you want to defer to the client to specify which optional behavior is preferred? That's why you need to know about the HTTP Prefer Header.
Imagine that you are working on a code base that you are really proud of. Everything is building up together with great quality and you reach the moment where you need to send a mail. Simple task to you for sure.
You know that eventually you will need to send emails in other points of your application and because you master the DRY principle you decide to write an "Utils" class.
Good idea, isn't it? NO!!!! Absolutely no!
Why not? What's wrong with an "Utils" folder or an Utility class?
Do you know that index management is under your responsibility and you need to pay attention to how fragmented they are? If you are reading this post, probably you know that (I hope that you didn't find it in the hard way).
Azure SQL Database takes care of a lot of maintenance tasks, but keeping your Indexes healthy isn't one of them.
Indexes get fragmented and fragmented indexes is a performance killer. The good news is that I can help you dealing with that.
Have you taken a look into Cake Build?! It's awesome, isn't it?
Probably you are already convinced, but you are having trouble convincing your boss that it's worth to give him a chance.
To help you I give you here five compelling reasons they can't argue with.
You can find here the slides and demos that have been used, as well as some references related to the theme.
Topshelf is an amazing framework that let you easily host and build Windows services.
Topshelf is really extensible, but recently I struggled to find how to configure a custom argument to the service.
This post is simple tip to help you create custom arguments to a Topshelf service and use it in the command line.