Commit Graph

798 Commits

Author SHA1 Message Date
Ryan Nowak f8b3b73ca7 Remove EndpointConstraints
Adds IEndpointSelectorPolicy so that MVC can plug in to the
EndpointSelector to run action constraints.
2018-07-28 19:03:12 -07:00
James Newton-King f870503cdd
Fix HttpMethodMetadata debug string (#666) 2018-07-28 11:13:30 +12:00
Ryan Nowak 54e5370e8f Add CORS support to HttpMethodMatcherPolicy
Also removes HttpMethodEndpointConstraint, since it's been fully
replaced.
2018-07-26 23:01:11 -07:00
James Newton-King c68c5befc7
Remove ChangeToken from EndpointDataSource (#662) 2018-07-26 11:06:54 +12:00
Kiran Challa e0294f1d1b Upgraded dependencies.props 2018-07-25 06:17:54 -07:00
Ryan Nowak 19f24cad16 fix silly constructor 2018-07-24 21:54:24 -07:00
James Newton-King 1340f9c26b
Add EndpointSelectorCandidate ctor to not break MVC (#661) 2018-07-25 16:03:26 +12:00
James Newton-King fdff66054f
Missing ChangeToken -> GetChangeToken updates (#660) 2018-07-25 14:35:41 +12:00
Ryan Nowak 147c9527f3
Implement EndpointSelector and MatcherPolicy (#646)
Implement EndpointSelector and MatcherPolicy

This change makes the EndpointSelector API more concrete, and is the
beggining of removing EndpointConstraint by making it obsolete.

To that end, I'm introducing MatcherPolicy, which is a
feature-collection API for registering policies that interact with the
DfaMatcher. The two policies that we'll need to start are:
- ability to order endpoints
- ability to append 'policy' nodes to the graph

These two concepts together replace EndpointConstraint. Extending our
graph representation is a really efficient way to processing most common
scenarios.

---

In general this helps with common cases where 4 or so endpoints match
the URL, but with different HTTP methods supported on each. Today we
have to process route values and call into some 'policy' to make a
decision about which one is the winner. This change pushes this
knowledge down into the graph so that it's roughly as cheap as a
dictionary lookup, and can be done allocation-free.

The big savings here is ability to remove more candidates *before*
collecting route data.

---

Along with this change, I also built 'rejection' into the DFA node
model, you can see an example with the HTTP Method handling that I
implemented. I implemented a policy that can treat failure to resolve an
HTTP method as a 405 response by returning a failure endpoint. This is
at the heart of much of the feedback we've gotten in this area around
versioning and http method handling. We also have a version of this
feature in MVC for [Consumes].
2018-07-24 17:31:51 -07:00
Kiran Challa f37ca0d2e9 Show list of endpoints in CompositeEndpointDataSource's DebuggerDisplayString
[Fixes #633] Show list of registered endpoints as debugger display string
2018-07-24 17:22:43 -07:00
Kiran Challa 6f4c10a664 PR feedback 2018-07-24 17:17:08 -07:00
Kiran Challa 71cb933a08 Show a flattened tree in LinkGenerationDecisionTree's DebuggerDisplayString
[Fixes #636] Flatten the LinkGenerationDecisionTree to show as debugger display string
2018-07-24 17:11:53 -07:00
Kiran Challa 34499dbe24 Added support for suppressing link generation for endpoints 2018-07-24 16:47:34 -07:00
Nate McMaster deddb336b7
Merge branch 'release/2.1' into release/2.2 2018-07-24 11:47:18 -07:00
Eilon Lipton d255d1510f
Update CONTRIBUTING.md 2018-07-24 10:55:29 -07:00
Kiran Challa 7da1baf9d8 Do not use decision tree for named routes in RouteValuesBasedEndpointFinder 2018-07-24 05:33:19 -07:00
Kiran Challa 5f1631ab46 Added support for configuring route options with LinkGenerator 2018-07-24 04:45:33 -07:00
Nate McMaster a6fe68a301
Cleanup branch revert 2018-07-23 10:25:16 -07:00
Nate McMaster 42e9b58bb7
Revert "Merge branch 'master' into release/2.2"
This reverts commit 52e5852e48, reversing
changes made to 1e807240ea.
2018-07-23 09:34:06 -07:00
Ryan Nowak 2c325440de Remove AddDispatcher/UseDispatcher 2018-07-22 20:35:10 -07:00
Ryan Nowak 52e5852e48
Merge branch 'master' into release/2.2 2018-07-22 19:29:30 -07:00
James Newton-King 1e807240ea
Add GetChangeToken to EndpointDataSource (#649) 2018-07-23 13:46:22 +12:00
Ryan Nowak b9df95831d Change Branding
For preview one the branding is:

new thing = UseGlobalRouting/UseEndpoint
old thing = UseRouter

We're going to drop the name Dispatcher everywhere and make sure that we
position our new work as 'new and improved routing' instead of
introducing a new product/concept name.

We're not totally sure of the term Global yet, but it's what we're doing
for preview 1. Suggestions welcome for dicussion after we do the first
preview :)
2018-07-22 16:41:59 -07:00
ASP.NET CI 554a9d5528 Update dependencies.props
[auto-updated: dependencies]
2018-07-22 13:13:07 -07:00
ASP.NET CI c89c2c643b Update dependencies.props
[auto-updated: dependencies]
2018-07-22 12:25:31 -07:00
Ryan Nowak ef60a60ee1
Merge pull request #643 from aspnet/release/2.2
Merge RoutePattern changes to master
2018-07-20 15:40:08 -07:00
Ryan Nowak a330c920d7 Support overrides on using P2P references for benchmarks 2018-07-20 13:25:23 -07:00
Ryan Nowak f1c060bf3d RoutePattern everywhere 2018-07-20 13:04:34 -07:00
James Newton-King 4e915b4ac9
Merge branch 'merge/release/2.2-to-master' 2018-07-20 18:55:38 +12:00
James Newton-King 90395c933d
Implement IRoutingFeature on EndpointFeature for back-compat (#641) 2018-07-20 18:23:14 +12:00
Kiran Challa 1e9640fcad Merge branch 'merge/release/2.2-to-master' 2018-07-19 14:56:07 -07:00
Kiran Challa 41f56dbbed Minor fix to DefaultLinkGenerator and enabled constraint related tests in DefaultLinkGeneratorTest 2018-07-19 09:11:50 -07:00
Ryan Nowak ddc416387a
Merge pull request #632 from dotnet-maestro-bot/merge/release/2.2-to-master
[automated] Merge branch 'release/2.2' => 'master'
2018-07-18 08:37:35 -07:00
Ryan Nowak 477296a3cc Make DFA matcher the default 2018-07-18 07:50:27 -07:00
Ryan Nowak 47516ea207
Merge pull request #626 from dotnet-maestro-bot/merge/release/2.2-to-master
[automated] Merge branch 'release/2.2' => 'master'
2018-07-17 20:10:49 -07:00
Ryan Nowak 400d243f42
Fix remaining feature gaps in DfaMatcher (#621)
* Fix remaining feature gaps in DfaMatcher

* addressed minor feedback

* missed one
2018-07-17 19:22:46 -07:00
Kiran Challa 28d278cff5 Merge branch 'merge/release/2.2-to-master' 2018-07-17 10:12:51 -07:00
Kiran Challa 1196349bf4 [Fixes #583] Handle change events in RouteValueBaseEndpointFinder 2018-07-17 05:54:11 -07:00
Kiran Challa aed2e24483 Allow to pass in HttpContext when generating links 2018-07-17 05:16:57 -07:00
Ryan Nowak 1b4eb54e33
Merge pull request #617 from dotnet-maestro-bot/merge/release/2.2-to-master
[automated] Merge branch 'release/2.2' => 'master'
2018-07-16 21:30:34 -07:00
Ryan Nowak f079d41257
Merge branch 'master' into merge/release/2.2-to-master 2018-07-16 21:24:08 -07:00
Ryan Nowak 02e1d78319 Minor fixes for MatchProcessorFactory
Fixing minor issues found doing DFA integration.
2018-07-16 21:06:35 -07:00
Ryan Nowak 5f29e8b062 Hoist path out of loop in BarebonesMatcher
This is an oopsie from a previous change.
2018-07-16 20:43:31 -07:00
ASP.NET CI ad3497dfb9 Update dependencies.props
[auto-updated: dependencies]
2018-07-15 20:10:49 +00:00
ASP.NET CI 0cd41c5544 Update dependencies.props
[auto-updated: dependencies]
2018-07-15 12:26:23 -07:00
Ryan Nowak 4334feacb0
Merge pull request #615 from dotnet-maestro-bot/merge/release/2.2-to-master
[automated] Merge branch 'release/2.2' => 'master'
2018-07-14 17:28:48 -07:00
Ryan Nowak b2e4743c7d
Change benchmarks (#612)
Add benchmarks that include some HTTP method matching.

Clean up names and name like-kinded benchmarks alphabetically.

Matcher*Benchmark -> E2E including HTTP method selection
MatcherSelectCandidates*Benchmark -> Focused on just URL path processing
2018-07-14 17:21:05 -07:00
James Newton-King 497a38035d
Add application startup check that dispatcher is added to request pipeline (#614) 2018-07-15 11:50:55 +12:00
James Newton-King 1f12c894eb
Merge branch 'merge/release/2.2-to-master' 2018-07-14 18:54:38 +12:00
James Newton-King 73e4d55d7b
Check dispatcher services registered (#610) 2018-07-14 18:20:42 +12:00