w i th - digicomp€¦ · mvc + webapi + web pages asp.net core. faster deployment cycles. tooling....
TRANSCRIPT
with
Cross Platform WebAPIs
ASP.NET Core
@FabianGosebrink
What is ASP.NET Core?
MVC + WebAPI + Web Pages
ASP.NET Core
FasterDeployment
Cycles
Tooling
DOTNET CLIfabian gosebrink
class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } }
DOTNET CLIfabian gosebrink
public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); }
public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .Build(); }
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. }
public class Program { public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .Build();
host.Run(); } }
DependencyInjection
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
Kestrel
REST
Whatis
Rest?
Restis not
WebAPI
Restis not
HTTP
Architectural
Style
RestConstraints
RichardsonMaturityModel
STATUSCODES
2XX
4XX
5XX
GET /api/orders/
GET /api/orders/1
POST /api/orders/
PUT /api/orders/1
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));
DocumentationSWAGGER
VERSIONING
document.docx
document-�nal.docx
document-�nal-�nal.docx
document-really-�nal.docx
document-really-�nal-end-of-
discussion.docx
document-really-�nal-approved-by-
customer.docx
document-really-�nal-approved-by-
customer-with-alterations-
suggested-by-his-assistant.docx
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
document-really-�nal-approved-by-customer-
with-alterations-suggested-by-his-
assistant-and-his-wife-cause-apparently-she-thinks-she-knows-all-
API-VERSION: 2.0/API/V2/HOUSES
DEMO
/api/houses?page=4&pageSize=10
/api/houses?orderby=Id
/api/houses?fields=street,number
SignalR
Le Fin
@FabianGosebrink
https://swissangular.comhttps://github.com/FabianGosebrinkhttps://github.com/FabianGosebrink/AS
WebAPI-Sample
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