Go to file
Ryan Nowak a51c78da06 Remove dictionary alloc in routing
This changes TemplateMatcher to mutate RouteData.Values directly instead
of creating a new dictionary and then merging in values. This is one the
biggest single costs in routing in terms of both allocations and execution
time.

So Match now becomes TryMatch. This will dirty the state of the RVD, so
the caller needs to snapshot it before calling into it (handled
inside the TreeRouter or RouteCollection).

Some subtle changes were needed to how/when values are added to be
compatible with the existing tests. The general idea is that we add null
values for non-parameter defaults or catchalls, but only if they don't
trounce an existing value. This logic used to live in MergeValues but now
it's in TryMatch since TryMatch might be working from existing data.

Also fixed the .sln to avoid building a package that we use as shared
source.
2016-04-08 08:46:00 -07:00
samples/RoutingSample.Web
src Remove dictionary alloc in routing 2016-04-08 08:46:00 -07:00
test Remove dictionary alloc in routing 2016-04-08 08:46:00 -07:00
tools
.gitattributes
.gitignore
.travis.yml
CONTRIBUTING.md
LICENSE.txt
NuGet.config Updating to release. 2016-04-06 09:47:24 -07:00
NuGetPackageVerifier.json
README.md
Routing.sln Remove dictionary alloc in routing 2016-04-08 08:46:00 -07:00
Settings.StyleCop
appveyor.yml
build.cmd
build.ps1 Updating to release. 2016-04-06 09:47:24 -07:00
build.sh Updating to release. 2016-04-06 09:47:24 -07:00
global.json

README.md

ASP.NET Routing

AppVeyor: AppVeyor

Travis: Travis

Contains routing middleware for routing requests to application logic.

This project is part of ASP.NET Core. You can find samples, documentation and getting started instructions for ASP.NET Core at the Home repo.