Developer blogs – dotnet-forum. de

The last years, I loved to use the Command and Query Segregation pattern. Sql server 2008 express r2 Using this pattern in every new project, requires to have the same infrastructure classes in this projects. Migrate sql express to sql server This is why I started to create a small and reusable library, which now supports ASP.NET Core and is written to match .NET Standard 1.6. Sql server cost About that CQSThe idea behind CQS is to separate the query part (the read part / fetching-the-data-part) from the command part (the write part / doing-things-with-the-data-part). Sql server pricing This enables you to optimize both parts in different ways. Sql server 2000 sp4 You are able to split the data flow into different optimized pipes.
From my perspective, the other most important benefit of it is, that this approach enforce you, to split your business logic into pretty small peaces of code. Sql server express 2005 This is because each command and each query only does one single thing:
E. Sql server tools g. As en sql server if you press a button, you probably want to save some data. Ms sql server 2000 You will create a SaveDataCommand with the data to save in it. Sql server classes You’ll pass that command to the CommandDispatcher and this guy will delegate the command to the right CommandHandler, which is just responsible to save that specific data to the database, or what ever you want to do with that data. & in sql server You think you’ll also add a log entry with the same command? No problem: Just create another CommandHandler using the same command. Use database sql server With this approach you’ll have two small components, one to save the data and another one to add a log entry, which are completely independent and can be tested separately.
What about fetching the data? Just create a “Query” with the data used as a filter criteria. Sql server 2005 sp2 Pass the Query to the QueryProcessor, which delegates the Query to the right QueryHandler. Micro sql server in this QueryHandler, you are able to select the data from the data source, map it to the result you expect and return it back.
Each Handler, both the QuerHandlers and the CommandHandlers, are isolated peaces of code, if you use Dependency Injection in it. Sql server performance tuning This means unit tests are as easy as the implementation itself. Into sql server What is inside the library?
This library contains a CommandDispatcher and a QueryProcessor to delegate commands and queries to the right handlers. Sql server agent The library helps you to write your own commands and queries, as well as your own command handlers and query handlers. Odbc sql server driver There are two main NameSpaces inside the library: Command and Query
The Command part contains the CommandDispatcher, an ICommand interface and two more interfaces to define command handlers ( ICommandHandler) and async command handlers ( IAsyncCommandHandler):
The Query part contains the QueryProcessor, a generic IQuery, which defines the result in the generic argument and two different QueryHandlers.

Sql server restore It also contains two more interfaces to define query handlers ( IHandleQuery) and async query handlers ( IHandleQueryAsync) public interface IQueryProcessor
After you installed the library using Nuget, you need to register the the QueryProcessor and the CommandDispatcher to the dependency injection. Sql server integration services You can do it manually in the ConfigureSerices method or just by using AddCqsEngine() public void ConfigureServices(IServiceCollection services)
The methods AddQueryHandlers and AddCommandHandlers are just methods to encapsulate the registrtion of your Handlers, and are propably written by you as a user of this library. Get sql server The method could look like this: public static IServiceCollection AddQueryHandlers(this IServiceCollection services)
The method AddCqsEngine is overloaded to add your QueryHandlers and yor CommandHandlers to the dependnecy injection. Sql server 2005 developer There is no real magic behind that method. Sql server 2005 standard It is just to group the additional dependencies: services.AddCqsEngine(s =>
This library makes heavily use of dependency injection and uses the IServiceProvider, which is used and provided in ASP.NET Core. Sql server express limits If you replace the built in DI container with different one, you should ensure that the IServiceProvider is implemented and registered with that container. Sql server & Query the data
Getting all the speakers out of the storage is a pretty small example. Sql server express advanced services I just need to create a small class called AllSpeakersQuery and to implement the generic interface IQuery: public class AllSpeakersQuery : IQuery>
Now let’s have a look into the QueryHandlers, which are called by the QueryProcessor. Sql server s This handlers will contain your business logic. Versions of ms sql server This are small classes, implementing the IHandleQuery interface or the IHandleQueryAsync interface, where TQuery is a IQuery. Sql server version history This class usually retrieves a data source via dependency injection and an Execute or ExecuteAsync method, with the specific Query as argument: public class AllSpeakersQueryHandler :
Sometimes I handle multiple queries in a single class, this is possible by just implementing multiple IHandleQuery interfaces. Sql server 11 I would propose to do this only, if you have really small Execute methods. Sql server certification Executing Commands
Let’s assume we need to create a new speaker and we need to update a speakers email address. Sql server web To do this we need to define two specific commands public class AddSpeakerCommand : ICommand
The CommandHandlers are small classes which are implementing the ICommandHandler or the IAsyncCommandHandler where TCommand is a ICommand. Sql server 2003 Thise handlers contain a Handle or a HandleAync method with the specific Command as argument. Sql server analysis services As equal to the query part, you usually will also get a data source from the dependency injection: public class AddSpeakerCommandHandler : ICommandHandler
What about validatig the commands? Sometimes it is needed to check authorization or to validate the command values before executing the commands. Goto sql server You can do the checks inside the handlers, but this is not always a good idea. Learn ms sql server This increases the size and the complexity of the handlers and the validation logic is not reusable like this.
This is why the CommandDispatcher supports precondition checks. Sql server uses As equal to the command handlers, you just need to write command preconditions ( ICommandPrecondition) od async command preconditions ( ICommandPrecondition). Sql server 20 This interfaces contain a Chack or ChackAsync method which will be executed before the command handlers are executed. Sql server user group You can hava as many preconditions as you want for a single command. T sql sql server If you register the preconditions to the DI container, the command dispatcher will find and execute them: public class ValidateChangeUsersNameCommandPrecondition : ICommandPrecondition
The whole speaker database application is built like this: Using handlers to create small components, which are handling queries to fetch data or which are executing commands to do something with the data.
This library is hosted on GitHub in the “develop” branch. Sql server definition I would be happy about any type contribution on GitHub. Or en sql server Feel free to try id out and let me know about issues, tips and improvements 🙂

Some days ago, Damien Bowden wrote a pretty cool post about, how to contribute to an open source software project hosted on GitHub, like the AspLabs. Go sql server He uses Git Extensions in his great and pretty detailed post. Who manufactures sql server Also a nice fact about this post is, that he uses a AspLabs as the demo project. Sql server stored procedure Because we both worked on that on the hackathon at the MVP Summit 2016, together with Glen Condron and Andrew Stanton-Nurse from the ASP.NET Team.
At that Hackathon we worked on the HealthChecks for ASP.NET Core. Sql server 2008 express The HealthChecks can be used to check the heath state of dependent sub systems in an e. As sql server g. Database sql server 2008 micro service environment, or in any other environment where you need to know the health of depending systems. When in sql server A depending systems could be a SQL Server, an Azure Storage service, the Hard drive, a Web-/REST-Service, or anything else you need to run your application. Ms sql server download Using the HealthChecks you are able to do something, if a service is not available or unhealthy.
Because Damien Bowden also worked on that project, my idea was to do the same post. Sql server 2008 r2 express edition So asked him to “fork” the original post, but use the Git CLI in the console instead of Git Extensions. Sql server and or Because this is a fork, some original words are used in this post 😉
Why using the console? Because I’m a console junkie since a few years and from my perspective, no Git UI is as good as the simple and clean Git CLI 🙂 Anyway, feel free to use the tool that fits your needs. Sql server 2008 wiki Maybe someone will write the same post using SourceTree or using the Visual Studio Git integration. Sql server release history 😉
As a result this post is a also simple guideline on how you could contribute to OSS projects hosted on GitHub using fork and upstream. Sql 2012 server This is even not the only way to do it. Sql server trigger In this demo I’m going to use the console and the basic git commands. Sql server security As same as Damien did, I’ll also use the aspnet/AspLabs project from Microsoft as the target Repository.
Before you can make your contribution, you need to create a fork of the repository where you want to make your contribution. Sql 2000 server Open the project on GitHub, and click the “Fork” button in the top right corner.
Open a console and cd to the location where you want to place your projects. Sql server 2000 enterprise manager It is c:git in my case. What is sql server database Write git clone followed by the URL to the repository and press enter.
Now you have a local master branch and also a server master branch (remote) of your forked repository. Sql server 2008 versions The next step is to configure the remote upstream branch to the original repository. Sql server express 2014 This is required to synchronize with the parent repository, as you might not be the only person contributing to the repository. Sql server 2012 advanced services This is done by adding another remote to that git repository. Sql server 2012 express with tools On GitHub copy the clone URL the the original repository aspnet/AspLabs. Sql server express edition 2012 Go back to the console and type git remote add upstream followed by the URL of the original repository:
Now you can pull from the upstream repository. Sql server express commercial use You pull the latest changes from the upstream/master branch to your local master branch. Different versions of sql server Due to this you should NEVER work on your master branch. Sql server editions Then you can also configure your git to rebase the local master with the upstream master if preferred. Sql server express edition 2008 Start working on the code
Once you have pulled from the upstream, you can push to your remote master, i. Sql server express edition 2008 r2 e. Sql server 2000 developer edition the forked master. For sql server Just to mention it again, NEVER WORK ON YOUR LOCAL FORKED MASTER, and you will save yourself hassle.
When your work is finished on the branch, you need to push your branch to your remote repository by calling git push Now you are ready to create a pull request. Sql database server Go to your repository on GitHub, select your branch and and click on the “Compare & pull request” button:
NOTE: If your branch was created from an older master commit than the actual master on the parent, you need to pull from the upstream and rebase your branch to the latest commit. Sql server compact edition This is easy as you do not work on the local master. Sql server migration Or update your local master with the latest changes from the upstream, push it to your remote and merge your local master into your feature branch.
If you are contributing to any Microsoft repository, you will need to sign an electronic contribution license agreement before you can contribute. Sql server express server name This is pretty easy and done in a few minutes.
If you are working together with a maintainer of the repository, or your pull request is the result of an issue, you could add a comment with the GitHub name of the person that will review and merge, so that he or she will be notified that you are ready. Why sql server They will receive a notification on GitHub as soon as you save the pull request.
Now just wait and fix the issues as required. Sql server 2008 Once the pull request is merged, you need to pull from the upstream on your local forked repository and rebase if necessary to continue with you next pull request.
I got a .NET challenge coin in recognition of my contributions to .NET #dotnet #AspNetCore #mvpsummit— Ben Adams (@ben_a_adams) 8. Ms sql server enterprise November 2016 The console I use
I often get the question what type console I use. And sql server I have four consoles installed on my machine, in addition to the cmd.exe and PowerShell. Sql server 2008 developer edition I also installed the bash for Windows. Sql server last version But my favorite console is the Cmder, which is a pretty nice ConEmu implementation. Sql server latest I like this console because it is easy to use, easy to customize and it has a nice color theme too. Msft sql server Thanks