Commit Graph

2036 Commits

Author SHA1 Message Date
Ryan Nowak 128d74e2a0 Refactor Argument Binder
This change just rearranges some code in the argument binder with a mind
towards performance and clarity. We're removing a few Task<T>'s here as
well in certain cases, but not yet all of them. We additionally save a
dictionary in the case where you have bound properties.

Hopefully these changes break the code into more discrete and sensible
units without multiple levels of indirection without abstraction.
- Main 'driver' code
- BindModel
- ActivateProperty
2016-05-13 08:12:14 -07:00
Ryan Nowak 4d63ffa879 Make ValueProvider creation lazy
We want this change to avoid MVC eagerly reading the form. This is good
for general perf and also for scenarios where you want read the body
yourself (large file uploads).

We DO have scenarios where you want to configure the value providers
per-request or also to change the limits on the value providers (form) so
it's worth keeping these around on the context.
2016-05-13 08:11:21 -07:00
Kiran Challa e483478415 Merge branch 'release' into dev 2016-05-12 09:35:33 -07:00
Ryan Nowak fb5d92bdc0 Change our cached task to a field
This makes it more inlinable and saves a volatile lookup on netstandard.
2016-05-11 18:09:21 -07:00
Ryan Nowak 04ffc4d2eb Clean up DiagnosticSource code in invoker 2016-05-11 17:41:03 -07:00
Kiran Challa d6a9068008 [Fixes #4616] Filter caching is too aggressive 2016-05-11 16:58:45 -07:00
Ryan Nowak 7bd297c395 Remove unused field 2016-05-11 16:48:55 -07:00
Kiran Challa 3c2bdfd368 Merge branch 'release' into dev 2016-05-03 12:29:33 -07:00
Kristian Hellang f4679fe74f Changed RequireHttpsAttribute to default to 302 instead of 301 2016-05-03 12:11:18 -07:00
David Obando 742a9e3f3b Reduce the number of allocations during model validation
When the service receives a model (say, via a POST message) MVC validates it to ensure the model is in a correct state. Validation currently incurs in many allocations that can be avoided. This tackles two of them:
  1. We're now caching the generic `GetEnumerator<T>` method infos generated on the fly during collection validation, and
  2. We're now only initializing `ModelErrorCollection` on demand.

The first one incurs in the additional allocation of 1 long-lived dictionary object, which will grow only to the amount of `Collection<T>` types used by the model being validated. This is expected to be a small to medium number.

The second change assumes that class `ModelStateEntry` isn't thread safe, as model validation isn't multithreaded.

This resolves #4434 and #4435.
2016-05-02 19:28:20 -07:00
Ryan Brandenburg c6a6aae15f Merge branch 'release' into dev 2016-05-02 16:52:29 -07:00
Ryan Brandenburg 3aa42617a4 Add transitive reference 2016-05-02 16:49:57 -07:00
Pranav K 3d494fd732 Merge branch 'release' into dev 2016-05-02 14:58:54 -07:00
Pranav K 36146a6139 Fix build warnings 2016-05-02 14:52:02 -07:00
Kiran Challa d30290c310 Merge branch 'release' into dev 2016-05-02 13:36:35 -07:00
Kiran Challa ad065892fd [Fixes #4575] Logging ArgumentOutOfRangeException 2016-05-02 13:16:08 -07:00
jacalvar c85c22282b Merge branch 'release' into dev 2016-05-02 12:26:37 -07:00
jacalvar 059ec0f353 [Fixes #4525] Get rid of DNX services 2016-05-02 12:16:08 -07:00
Pranav K 0ff2f875d9 Avoid holding on to DependencyContext instance
Fixes #4527
2016-04-29 14:44:55 -07:00
mnltejaswini cba4d1dd0c [Perf] Reduce SelectListItem and other allocations when generating HTML for select lists
Fixes #3953
2016-04-29 11:58:02 -07:00
Filip W f567258f14 changed GetFormat to virtual 2016-04-27 18:08:45 -07:00
Doug Bunting d8d2e54506 Remove extra options to manipulate `JsonSerializerSettings`
- #4339: remove non-recommended JSON formatter constructors
 - affects `JsonInputFormatter`, `JsonOutputFormatter`, `JsonPatchInputFormatter`
 - `JsonOutputFormatter` cleanup also impacts `JsonHelper`
 - rename and make `SerializerSettingsProvider` class public; use it as appropriate
- #4409: make `SerializerSetings` properties get-only and `protected`
 - affects `JsonInputFormatter`, `JsonOutputFormatter`

Recommended patterns:
- change `JsonSerializerSettings` values in `MvcJsonOptions` for almost all customizations
- find `JsonOutputFormatter` in `MvcOptions.OutputFormatters` when limiting per-result formatters
- start with `JsonSerializerSettingsProvider.CreateSerializerSettings()` when customizing a per-result formatter
2016-04-27 14:48:16 -07:00
mnltejaswini 0788edbd4b [Perf] Cache the metadata for known type "object"
Fixes #4377
2016-04-25 13:03:52 -07:00
Pranav K b3a65b485f Simplify assembly load on CoreCLR
Fixes #4328
2016-04-25 09:45:23 -07:00
Ryan Nowak 756cd2dab8 Remove OperationBindingContext
This change trims a few concepts that aren't really needed inside
ModelBinders anymore, and removes the OperationBindingContext class.
2016-04-25 09:29:03 -07:00
Kiran Challa 4e8e30437f Merge branch 'release' into dev 2016-04-23 06:57:08 -07:00
Ryan Nowak af58c2e6b6 Streamlining action selection and route values
Removes a few concepts we don't need
Improves documentation
More things are IDictionary instead of other random types
2016-04-22 17:36:23 -07:00
Kiran Challa a259638d79 Filters provided by filter providers are made to never be cached
[Fixes #4504] Possible double-execution of filter providers
2016-04-22 16:56:08 -07:00
mnltejaswini f1fe5e26fc [Perf] RazorPage.CreateModelExpression is allocating expression names
Fixes #4469
2016-04-22 12:55:28 -07:00
Sebastien Ros 4b4d67e48e Merge branch 'release' into dev 2016-04-22 11:54:56 -07:00
Sébastien Ros 2c639f83c4 Fixing BindNever attribute and Type model binding
Fixes #4505
2016-04-22 11:52:08 -07:00
Ryan Nowak 8efd12187c Remove unused interface 2016-04-21 14:01:46 -07:00
jacalvar 683356ea59 Merge branch 'release' into dev 2016-04-21 10:39:45 -07:00
Ryan Nowak 87704c67e1 React to routing cleanup 2016-04-21 07:55:20 -07:00
jacalvar d9aacd0f87 [Fixes 4509] Stop registering disposable objects in our controller helper methods 2016-04-20 17:00:34 -07:00
mnltejaswini 73dc7bf48b [Perf] Check for Logger.IsEnabled in logging methods of MvcCoreLoggerExtensions
Fixes #4466
2016-04-19 11:49:56 -07:00
Doug Bunting 1492db35fa Merge branch 'release' into dev 2016-04-16 13:07:08 -07:00
mnltejaswini 4e97c72eeb [Perf]:Cache TypeConverters in SimpleTypeModelBinder
Fixes #4361
2016-04-15 18:23:49 -07:00
Doug Bunting 7a1ac034f9 Special-case use of `razorPage.Model` property in `ExpressionMetadataProvider`
- #3978
- better-aligns `ExpressionMetadataProvider` with `ExpressionHelper`

nit: mock less in `RazorPageCreateModelExpressionTest`
2016-04-15 17:15:33 -07:00
mnltejaswini a565f9ff58 [Perf] Reduce DefaultTagHelperContent allocations in LinkTagHelper and ScriptTagHelper
Fixes #4468
2016-04-15 13:29:49 -07:00
mnltejaswini fa34f61d46 [Perf] Avoid Service Provider lookups when activating common Singleton properties of a Razor Page
Fixes #4244
2016-04-14 16:52:25 -07:00
BrennanConroy 588abbc588 Merge branch 'release' into dev 2016-04-14 15:55:14 -07:00
BrennanConroy 010e8a4e37 Move dependency to netstandard only 2016-04-14 15:54:59 -07:00
BrennanConroy 4f8c1d49d0 Merge branch 'release' into dev 2016-04-14 13:53:24 -07:00
BrennanConroy b35814f035 Add serialization.primitives for Newtonsoft.Json 2016-04-14 13:53:10 -07:00
Ryan Nowak a73db1a9bd Fixes #4471 - Don't call Enum.ToString() 2016-04-14 10:15:55 -07:00
Doug Bunting ee2cfa1963 Merge remote-tracking branch 'origin/release' into dev 2016-04-13 16:04:14 -07:00
Doug Bunting eda647e270 Complete the doc comments for filters
- #3851
- add lots of words
- correct that vs. which confusion
2016-04-13 16:01:30 -07:00
Ryan Nowak cffc381a69 Update xproj output path 2016-04-13 14:03:44 -07:00
Eilon Lipton 0cf9a4b7f2 Merge branch 'release' into dev 2016-04-13 12:10:53 -07:00