Het Nancy webframework hosten op Heroku dankzij Owin

Eerder berichte ik al over Heroku’s PaaS dienst en vertelde ik ook al wat over Owin en Katana. Onlangs kwam ik erachter dat Heroku het Mono project ondersteunde. Mono is een opensource implementatie van Microsoft’s .NET en zorgt er onder andere voor dat je .NET applicaties onder Linux kan draaien. Doormiddel een speciaal buildpack kan Heroku voor jou je .NET applicatie rechtstreeks vanuit een Git repository compilen

Dankzij Owin is het nu mogelijk om self hosted applicaties te draaien die niet meer onder IIS moeten draaien en hierdoor volledig in Mono kunnen draaien zonder IIS. Microsoft heeft met haar eigen Owin implementatie genaamd Katana support voor WebApi en SignalR geleverd en deze kunnen dus zonder problemen binnen Owin draaien. Beide frameworks hebben zo snel van IIS/ASP.NET af kunnen stappen omdat hier vanaf het begin rekening mee is gehouden. Dat geldt helaas niet voor ASP.NET MVC, deze is te diep verbonden met ASP.NET welke weer zwaar op IIS ondersteuning leunt dat het maar de vraag is of ASP.NET MVC ooit in Owin zal draaien.

Gelukkig is er een ander web framework voor .NET genaamd Nancy. Nancy is vergelijkbaar met het Ruby framework Sinatra en is gemaakt voor websites en webservices zonder dat het in de weg zit met zogenaamde “plumbing“. Ondersteund Nancy ook MVC vraag je jezelf dan af? Jazeker maar het is niet verplicht om het MVC pattern te gebruiken. Uiteindelijk is Nancy maar een simpel endpoint dat naar Http Requests luistert. Gelukkig kan je ook gewoon MVC gebruiken zoals je dat wilt. Je kan Views laten serveren vanuit een Views map, Models aanmaken en je requests er naar toe mappen net zoals bij de reguliere ASP.NET MVC

Ik heb zelf een klein voorbeeld gemaakt welke een simpele Nancy applicatie door middel van Owin op Heroku gehost is. De source is hier op Github te vinden.

Hoe moet je het draaien?

1
2
3
4
5
git clone https://github.com/matthijsbreemans/nancy-owin-heroku.git
cd nancy-owin-heroku
heroku create
heroku config:add BUILDPACK_URL=https://github.com/friism/heroku-buildpack-mono/
git push heroku master

Niet vergeten een worker aan je Heroku app te koppelen en als het goed is kan je nu naar de app navigeren met je browser.

Self-hosted SignalR met Owin

Onlangs ben ik bezig geweest met het uitwerken van een nuttige toepassing van de C# Api voor WhatsApp (GitHub fork hier). Iedereen weet ondertussen dat de openheid en compatibiliteit het grote gemis is bij WhatsApp dus het leek me leuk om wat te gaan spelen met een zelf geschreven crossplatform client. Mijn keuze is uiteindelijk op een implementatie van WhatsApi geworden. Ook zocht ik al een tijdje naar een nuttige toepassing om SignalR te gaan gebruiken (op een simpele oldschool Ilse chat room na) en is mijn keuze uiteindelijk gevallen op een self hosted implementatie van Owin in combinatie met SignalR.

Nieuwsgierig wat SignalR en/of Owin nou precies inhoud?

Lees verder

Wat is de OpenSSL Heartbleed bug?

De OpenSSL Heartbleed bug, het gehele internet is er sinds maandag al in rep en roer over. OpenSSL wordt door meer dan de helft van alle servers gebruikt en een bug hierin kan serieuze gevolgen hebben. Het blijkt nu dus dat deze bug al 2 jaar in de broncode van OpenSSLzat! Grote sites die OpenSSL gebruiken waren hierdoor al 2 jaar onveilig ,onder andere Yahoo was vatbaar voor misbruik van deze bug.

Nieuwsgierig of je eigen site vatbaar is? Bekijk het hier

Lees verder

CloudFlare vs Incapsula: Site optimalisatie

Eerder schreef ik al over de verschillen tussen CloudFlare en Incapsula.Beide diensten bieden onder andere aan om je website te versnellen, onder nadere door middel van goede bereikbaarheid, minification en gzip. Een goede manier om dit te meten is Yahoo’s YSlow en Google’s Page Speed. Deze berekenen een score en adviseren hoe je pagina geoptimaliseerd kan worden.

Om dit eenvoudig te testen heb ik gebruik gemaakt van GTMetrix, deze combineert beide technieken om de snelheid van de pagina te meten. Totaal zijn er 3 verschillende testen uitgevoerd, een met CloudFlare, een met Incapsula en een zonder beide. Alle drie de testen werden uitgevoerd op de zelfde Wordpress site op de zelfde host

Lees verder