aspnet / Mvc

[Archived] ASP.NET Core MVC is a model view controller framework for building dynamic web sites with clean separation of concerns, including the merged MVC, Web API, and Web Pages w/ Razor. Project moved to https://github.com/aspnet/AspNetCore
Apache License 2.0
5.62k stars 2.14k forks source link

Relayer action discovery infrastructure #8735

Closed rynowak closed 5 years ago

rynowak commented 5 years ago

This change introduces a service facade for creating the application model, running conventions, validating the result, and flattening the model.

This is used in the ControllerActionDescriptorProvider and provides the existing functionality for now. The ControllerActionDescriptorProvider will process the results and turn each 'flattened' model into a single action descriptor.

The next change will introduce another consumer of this service, that turns the 'flattened' model into an EndpointModel so that it can be exposed via Endpoint Routing's convention system.


The main considerations here:

The flattening semantics of application model are pretty complicated :(

The validation that CADP does is actually pretty in depth and might be really low value... Errors with writing route templates do happen, and those will be caught by the routing system eventually.... Errors with duplicate route names are similar... Errors with 'mixed' attribute and conventional routing are not at all common. I don't think I've ever seen an issue get filed about this. I did the work to port all of this stuff forward but I'm not totally sure it's valuable - however, I don't really want to make an argument for its removal. These are just some random thoughts to keep in mind if you're reviewing this :+1:

rynowak commented 5 years ago

@pranavkm pingzo