Creating an Ubuntu developer VM on Hyper-V – Part 4


Introduction

We have been in the past and still are to a certain extent a .NET shop. Thus it is very important to us that we can develop our backend using ASP.NET Web API. ASP.NET vNext is now OSS and runs equally well on Windows, Linux and Mac. Well, at least that’s what the folks at Microsoft tell us. The goal of this post is to verify that we can indeed create a RESTful backend using ASP.NET vNext on Ubuntu.

Please make sure you have also read my previous posts about setting up a Ubuntu VM.

  • Creating an Ubuntu developer VM on Hyper-V 

    Installing ASP.NET vNext

    Please refer here for more details. But please be aware that at the time of writing the documentation is somewhat incomplete to say the least.

    Let’s first install the K version manager (KVM). With the following command we get the KVM setup

    Note that as a prerequisite we need to have Mono 3.4.1 or later installed as described in this post.

    We can now install the latest version of KVM like this (at the time of this writing it is v 1.0.0-beta1)

    kvm upgrade

    To test the whole thing I first create a new folder aps.net-vNext and navigate to it

    mkdir ~/dev/asp.net-vNext

    cd ~/dev/asp.net-vNext

    and then clone the ASP.NET Home directory from GitHub to it

    git clone https://github.com/aspnet/Home.git

    Running the Console sample application

    We can now try to play with the samples in the Home folder. Let’s start with the simplest one, the ConsoleApp. Let’s navigate to this folder

    cd ./Home/samples/ConsoleApp

    Creating the necessary certificates

    If we try to run kpm restore now directly as described here then we get loads of errors. The reason is that the .NET Framework on Windows uses the Windows Certificates store to check whether to accept an SSL certificate from a remote site. In Mono, there is no Windows Certificate store, it has its own store. By default, it is empty and we need to manage the entries ourselves. We can do this using the following script

    Having added all those certificates to the store we can now download/restore all nuget packages required by our sample app

    kpm restore

    and then run the sample

    k run .

    which gives us

    image

    Running the Web samples

    Running the Web samples is a bit more tricky. First of all we need kestrel, a development web server for ASP.NET vNext. At the time of writing there is an open issue with running Kestrel on Linux. Kestrel relies on libuv. To install a compatible version of libuv use the following script (that I found here)

    After all this we should be able to get our MVC and Web samples going. Navigate to the corresponding sample folder and restore the nuget packages

    kpm restore

    and then run the sample

    k kestrel

    which now should give this

    image

    with your browser navigate to localhost:5004 and enjoy 🙂

    image 

    We can stop Kestrel by pressing CTRL-z

    image

    Defining a REST API

    Now let’s add a simple REST API to the HelloMVC sample app. Add a file TodoController.cs to the Controllers directory and add the following code

    save and restart kestrel. In the browser navigate to http://localhost:5004/api/todo and you should see this

    image

    Well, well, that’s a good start…!

    Summary

    In the last four posts I have summarized all the necessary steps that are needed to setup a Ubuntu VM ready to develop Angular single page applications that are backed by either a Node JS or a .NET (Mono) backend. The backend relies on GetEventStore as a write model store and on Elastic Search and MongoDB as read model stores. Thus we are now ready to implement an end-to-end sample. This will be the topic of my next few posts. Stay tuned.

← Creating an Ubuntu developer VM on Hyper-V – Part 3
Creating an Angular application end-2-end – Part 1 →