w i th - digicomp€¦ · mvc + webapi + web pages asp.net core. faster deployment cycles. tooling....

62

Upload: others

Post on 27-May-2020

21 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {
Page 2: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

with

Cross Platform WebAPIs

ASP.NET Core

Page 3: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {
Page 4: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {
Page 5: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

@FabianGosebrink

Page 6: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {
Page 7: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

What is ASP.NET Core?

Page 8: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

MVC + WebAPI + Web Pages

ASP.NET Core

Page 9: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {
Page 10: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

FasterDeployment

Cycles

Page 11: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {
Page 12: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

Tooling

Page 13: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

DOTNET CLIfabian gosebrink

Page 14: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } }

Page 15: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

DOTNET CLIfabian gosebrink

Page 16: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); }

public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .Build(); }

Page 17: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

Program.cs

1. public class Program 2. { 3. public static void Main(string[] args) 4. { 5. BuildWebHost(args).Run(); 6. } 7. 8. public static IWebHost BuildWebHost(string[] args) => 9. WebHost.CreateDefaultBuilder(args) 10. .UseStartup<Startup>() 11. .Build(); 12. }

Page 18: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

public class Program { public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .Build();

host.Run(); } }

Page 19: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

DependencyInjection

Page 20: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

Startup.cs

1. public class Startup 2. { 3. public Startup(IConfiguration configuration) 4. { 5. Configuration = configuration; 6. } 7. 8. public IConfiguration Configuration { get; set; } 9. 10. public void ConfigureServices(IServiceCollection services) 11. { 12. services.AddOptions(); 13. services.AddCors(...); 14. 15. services.AddSingleton<IFoodRepository, FoodRepository>(); 16

Page 21: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

Kestrel

Page 22: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {
Page 23: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

REST

Page 24: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

Whatis

Rest?

Page 25: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

Restis not

WebAPI

Page 26: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

Restis not

HTTP

Page 27: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {
Page 28: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

Architectural

Style

Page 29: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

RestConstraints

Page 30: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

RichardsonMaturityModel

Page 31: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {
Page 32: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

STATUSCODES

Page 33: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

2XX

Page 34: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

4XX

Page 35: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

5XX

Page 36: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

GET /api/orders/

GET /api/orders/1

POST /api/orders/

PUT /api/orders/1

Page 37: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

The Controller

1. [Route("api/[controller]")] 2. public class FoodController : Controller 3. { 4. private readonly IFoodRepository _foodRepository; 5. 6. public FoodController(IFoodRepository foodRepository) 7. { 8. _foodRepository = foodRepository; 9. } 10. 11. [HttpGet] 12. public IActionResult Get() 13. { 14. ICollection<FoodItem> foodItems = _foodRepository.GetAll(); 15. IEnumerable<FoodItemDto> dtos = foodItems 16 Select(x => Mapper Map<FoodItemDto>(x));

Page 38: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

DocumentationSWAGGER

Page 39: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {
Page 40: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

VERSIONING

Page 41: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

document.docx

Page 42: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

document-�nal.docx

Page 43: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

document-�nal-�nal.docx

Page 44: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

document-really-�nal.docx

Page 45: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

document-really-�nal-end-of-

discussion.docx

Page 46: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

document-really-�nal-approved-by-

customer.docx

Page 47: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

document-really-�nal-approved-by-

customer-with-alterations-

suggested-by-his-assistant.docx

Page 48: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

document-really-�nal-approved-by-customer-

with-alterations-suggested-by-his-

assistant-and-his-wife-cause-apparently-she-thinks-she-knows-all-about-good-api-design

Page 49: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

document-really-�nal-approved-by-customer-

with-alterations-suggested-by-his-

assistant-and-his-wife-cause-apparently-she-thinks-she-knows-all-

Page 50: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {
Page 51: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

API-VERSION: 2.0/API/V2/HOUSES

Page 52: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

DEMO

Page 53: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

/api/houses?page=4&pageSize=10

Page 54: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

/api/houses?orderby=Id

Page 55: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

/api/houses?fields=street,number

Page 56: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

SignalR

Page 57: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {
Page 58: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {
Page 59: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {
Page 60: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

Le Fin

Page 61: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

@FabianGosebrink

https://swissangular.comhttps://github.com/FabianGosebrinkhttps://github.com/FabianGosebrink/AS

WebAPI-Sample

Page 62: w i th - Digicomp€¦ · MVC + WebAPI + Web Pages ASP.NET Core. Faster Deployment Cycles. Tooling. DOTNET CLI fabian gosebrink. class Program { static void Main(string[] args) {

Resourceshttps://www.thefamouspeople.com/pro�les/images/og-donald_trump_�ag.jpghttps://timedotcom.�les.wordpress.com/2017/07/gettyimages-810247620.jpg?w=720&quality=85https://media.giphy.com/media/xUPOqFfyBzvODVNTNu/giphy.gifhttps://cdn.vox-

cdn.com/thumbor/5BOvGGpVyW4hSPLTAEYvHng6JlQ=/0x0:2931x1649/1200x800/�lters:focal(1239x265:1707x733)/ccdn.com/uploads/chorus_image/image/55610995/GettyImages_810247620.0.jpg

https://media.giphy.com/media/1BXa2alBjrCXC/giphy.gifhttp://img0.joyreactor.com/pics/post/photo-india-it-programmer-548432.jpeg