Skip to content

pencil42be/workshop-netcore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Glossary - https://docs.microsoft.com/en-us/dotnet/standard/glossary

.net standard

.net core

.net core is dus 1 van de 'implementaties' van .net standard

  • is een runtime met superset van netstandard API (zie versie tabel)
  • is cross-platform (linux, mac, win - Supported OS'es)
  • CLI tools + VS tools (Full VS, VSCode, VS for Mac)

Documentatie-urls

Zie ook deze lijst van .net core libraries, tools etc... https://github.com/thangchung/awesome-dotnet-core

.net core of .Net Framework? https://docs.microsoft.com/en-us/dotnet/standard/choosing-core-framework-server

asp.net core

Vroeger gekend als ASP.NET 5 en de start van .NET core. Er is geen web api meer, alleen nog mvc.

Razor Pages

Razor pages vs MVC

  • Razor =~ MVVM
  • MVC kan makkelijk de combo maken tussen server-side pages en client-side javascript apps
  • Razor = enkel server-side
  • Razor is eenvoudiger, minder gebaseerd op naming conventions (e.g. 'Home' View + HomeController)
  • Razor doet denken aan klassieke 'Web Forms' maar er is geen postback

(opinie) Razor is een tegenreactie tegen de soms complexe structuur van MVC apps waarbij je vaak moet zoeken in de src code op basis van naming conventions. Mogelijke aanpak =

in VS2017

in VSCode

in VS for Mac

asp.net core of classic asp.net? Wat te kiezen?

Configuratie & Startup

Het config model van asp.net core is verschillend van dat van web.config

Dependency Injection (DI)

Middleware

Wat vroeger de asp.net pipeline was, is nu middleware

Achtergrond taken

.net core ondersteunt 'hosted services' als background processing. Zowel in console app als in asp.net core.

Zie dit msdn artikel

Hou er rekening mee dat dit verschilt tussen .net core 2.0 en 2.1 (geunificeerde api voor console en webapp)

EF Core

Setup ActiveMQ

Setup RabbitMQ in docker

https://gist.github.com/yetanotherchris/c954d1e8b688845c2dcdb3b33c94b2d2

docker run -d --hostname my-rabbit --name some-rabbit -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 15672:15672 rabbitmq
docker exec some-rabbit rabbitmq-plugins enable rabbitmq_management

(met dank aan lv :)

Amqp clients

Het voorbeeld is geschreven met AmqpNetLite, maar het is mogelijk dat de RabbitMQ client interessanter is.

run SQL server 2017 in docker

PakjesDienst Project

Als voorbeeld gebruiken we een fictieve pakjesdienst. Een verzender kan een pakje registreren, te verzenden via een koerierdienst en te leveren aan een bestemmeling. De koerierdienst kan de status en voorziene levertijd van het pakje aanpassen. De bestemmeling kan berichten ontvangen wanneer de status of levertijd van het pakje aangepast wordt.

References

De applicatie bestaat uit een database, een queue of eventhub, een web api en een web applicatie. Alles kan in containers ge-deployed worden.

Een ander domein kan ook gerust gebruikt worden. Maak het niet te complex om mee te beginnen en voeg dan naar eigen smaak technische of functionele complexiteit toe.

Oefeningen

(niet in volgorde, niet exhaustief, pick & mix & voeg zelf toe wat je wil)

  • bouw de apps op vanaf 0, op basis van bovenstaande uitleg
  • of gebruik het voorbeeld en breid het uit
  • voeg automapper toe
  • voeg een javascript front-end toe die de rest api aanspreekt en de signalr berichten ontvangt en toont
  • stuur de signalr berichten enkel naar specifieke gebruikers
    • gebruik de signalr ConnectionId en de naam van de Bestemmeling
  • deploy een amqp compatibele server in een container (activemq of rabbitmq)
  • zet de 'environment' voor asp.net core in de container of container orchestrator/host
  • voeg authenticatie toe, e.g. op basis van identityserver4
  • voeg in de api razorpages toe voor de verzender en koerier of bouw een aparte app die de api aanspreekt
  • transformeer de appsettings.production.json in een build/release flow waarbij enkel de tool de juiste config kent
  • maak een uwp of xamarin app die libraries van deze app hergebruikt
  • een andere amqp client gebruiken bijvoorbeeld RabbitMQ)
  • pub/sub doen ipv queues, bijvoorbeeld met RabbitMQ
  • 1 of meer relaties toevoegen aan het model
    • laat een Verzender pakjes volgen
    • laat een Bestemmeling eerdere pakjes opvragen
    • laat een Verzender of een Koerier meerdere pakjes bundelen in een Levering
    • laat een Verzender kiezen uit een lijst van Koeriers
    • ...

NSwag

Swagger-ui voor je API

  • Makkelijk te gebruiken als developer interface, configureerbaar
  • Injecteerbaar als middleware
  • Kan user authenticatie faciliteren in UI
  • Kan ook enkel docs genereren ipv ook de API aan te roepen (ReDoc)
  • Kan dienen als developer portal / SDK

Home: https://github.com/RSuter/NSwag Gebruiken in asp.net core: https://github.com/RSuter/NSwag/wiki/Middlewares

AutoMapper

Veelgebruikte lib voor Dto's die extern 'contract' mappen op interne types

SignalR

Real-time communicatie naar clients

Lectuur achteraf

e-Shop on containers is een demo applicatie van Microsoft specifiek gericht op microservices.

Microservices book beschrijft een aantal technieken voor microservices op het .net core platform en maakt gebruik van eShopOnContainers als voorbeeld.

Deploy naar Openshift Platform

oc new-app registry.access.redhat.com/dotnet/dotnet-20-rhel7~https://github.com/pencil42be/workshop-netcore --context-dir=src --name=pakjes-dienst-api-YOURNAMEHERE --build-env=DOTNET_STARTUP_PROJECT=Pencil42.PakjesDienst.Api/Pencil42.PakjesDienst.Api.csproj

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •