Explicit static cctors cause the C# compiler to not mark types as
beforefieldinit, which means the JIT will add checks to each static
method and instance constructors of the type to make sure that the
static constructor was previously called. This can be avoided by
removing explicit static constructors and initializing static fields
inline.
- Add allocation free parsing of int32, int64
- Improve performance of converting int64 to string
- Add parsing of seconds from header values
- Add check for existence of cache directives
- Expose CacheControlHeaderValue constants
- #561
- new `SetCookieHeaderValue.AppendToStringBuilder()` method; avoids per-call `StringBuilder` allocation
- `ResponseCookies` uses `ObjectPool<StringBuilder>` that `ResponseCookiesFeature` provides
- `ResponseCookies` works fine if no `ObjectPoolProvider` is available
- `IHttpContextFactory` instance is a singleton instantiated from CI
- make `HttpContextFactory` `ObjectPoolProvider` and `ResponseCookiesFeature`-aware
- apply same pattern to sample `PooledHttpContextFactory`
- pool is not currently configurable; defaults are fine for response cookies
- if we need (policy) configuration, would add an `IOptions<HttpContextFactorySettings>`
nit: Add some doc comments
- aspnet/Coherence-Signed#187
- remove `<RootNamespace>` settings but maintain other unique aspects e.g. `<DnxInvisibleContent ... />`
- in a few cases, standardize on VS version `14.0` and not something more specific
The main intent is cleanup using C# 6 operators and normalization of
type aliases. While there are no intended functional changes here, it
does eliminate a few tight race conditions as a bonus (not a real-win
since this isn't thread-safe all over, simply noting).