Skip to content

Latest commit

 

History

History
985 lines (508 loc) · 19.4 KB

File metadata and controls

985 lines (508 loc) · 19.4 KB

RELEASE

Notes :

  • it does not strictly follow the semver convention.
  • no technical debt : code that's need to be refactored/broken, will be.
  • when something breaks, it's documented and a migration guide is provided.
  • no long-term support or backports for major versions, just stick to the latest update.
  • found a bug or way to optimize, feel free to submit a patch.

Roadmap / (2026-??-??)

  • docker template
  • dotnet template
  • captcha module
  • HTTP/3 quic

v26.0.0-beta - (2026-??-??)

This version is a major release :

  • a complete rewrite of the project (start from scratch no more netcoreserver override)
  • the core is simple as possible and delivers good performances !
  • there is a very good extensibility.
  • so there are addons !

breakingChange

There is a complete migration guide. But for short : even if some high level classes/methods has been renamed, your understanding of their role remains quite the same and the bump version should not be a pain. I've migrated a full project (thirty controllers / four hundred methods) on a couple of hours.

feature / comparison

You can find a complete list of features.

  • NET8 but should consider NET9/NET10 for better perfs and RAM usage under heady load (e.g: NET8 400Mo, NET9 100Mo, NET10 70Mo)|
  • Middleware
  • Modules
  • Extensibility : middleware, module, callback, subclass
  • Response Builder : status, contentType, contentLength, headers, body, cookies, compression
  • Handler (Expression Tree): sync and async + RequestAborted
  • Routing : minimal, attribute, querystring, path, wildcard
  • Minimal API
  • Controllers
  • SSL / HTTPS : SslContext and mutual authentication
  • WebSocket smart broadcast using "rooms"
  • Server-Sent Events (SSE)
  • Basic Auth
  • JWT auth
  • Unix socket
  • Static files : Cache, FileWatcher, Last-Modified, Etag
  • Cross-Origin Resource Sharing (CORS)
  • Body parsing : JSON, form-urlencoded, multipart/form-data
  • WebUser / Identity
  • Custom JSON engine
  • HTTP pipelining
  • Idle Timeout
  • Request Protection
  • Observability : traces, metrics, enrich per SimpleWServer instance
  • Documentation : simplew.net
  • Tests
  • Support: Discord
  • Addons : Chaos, Firewall, Hosting, Latency, OpenID, Razor, Swagger

v16.1.0 / (2025-11-02)

Maintenance, rewritten some parts of the code and documentation for easier use.

breakingChange

  • moved the Controller.MakeAccessResponse() to HttpResponse.MakeAccessResponse() (see example)

feature

  • feature: add headers parameter to HttpResponse.MakeResponse() (#71)
  • feature: add new HttpResponse.MakeResponse(object content) methods (#75)
  • chore: inject Session in Response (#73)
  • feature(test): add unit test for custom headers and compress types (#80)
  • feature: avoid PerformServerUpgrade there is no websocket route defined (#79)
  • refactor: move MakeAccessResponse() into HttpResponse class (#76)

fix

  • fix(NetCoreServer): WebSocket.PerformServerUpgrade() set MakeErrorResponse() when Connection: "keep-alive" (#77)

v16.0.0 / (2025-10-21)

Major release, including extensive rewrites and significant performance improvements (+9% req/s)

breakingChange

  • removed the Newtonsoft.Json dependency from the SimpleW nuget package. The default json engine is now System.Text.Json. To switch back, set Newtonsoft as the JsonEngine and install the a new SimpleW.Newtonsoft nuget package to (see example)
  • "X-*" headers are not trusted by default. To allow them, set the TrustXHeaders server property to true (see example).
  • in Controller, all Make*Response() methods have been replaced by Response.Make*Response() (see example)
  • removed Controller.SendResponseAsync()
  • the cache in AddStaticContent() is now disabled by default. Set the timeout parameter to enable caching (see example)

feature

  • feature: add new JsonEngine property in Server and Netcoreserverextension (#49)
  • feature: add new package SimpleW.Newtonsoft to support Newtonsoft.Json as JsonEngine (#50)
  • chore: remove the Newtonsoft.Json dependency from the SimpleW package
  • feature: use JsonEngine for Inline Func return serialization (#58)
  • feature: support Accept-Encoding br (Brotli) on HttpResponse (#51)
  • chore: move all Make*Response from Controller to HttpResponse partial class (#44)
  • feature: support CORS in AddStaticContent() response (#60)
  • feature: AddStaticContent() with no cache (#46)
  • feature: improve overall performances in Router, StaticContent and DynamicContent
  • feature(test): add unit and integration tests.

fix

v15.1.0 / (2025-09-19)

Maintenance

feature

  • chore: expose the Server as a property from the Session (#47)
  • feature: support minimal API with new MapGet() and MapPost() methods in server class (#45)

v15.0.0 / (2025-09-13)

Major release

breakingChange

  • telemetry is now disabled by default. To enable it, set EnableTelemetry property to true (#42)

fix

  • fix: AutoIndex must sort directory first then file (#11)
  • chore: add missing constructor from NetCoreServer (#43)
  • chore: throw exception when using component while the server is already started (#41)

feature

  • feature: handle unix socket (#38), PR by philippseith
  • feature: add new server EnableTelemetry property to enable telemetry (#42)

v14.0.1 / (2025-07-22)

Maintenance

fix

  • fix possible null exception in BroadcastSSESessions() (#37)

feature

  • feature: support CORS in Server Sent Events with MakeServerSentEventsResponse() (#40)

v14.0.0 / (2025-07-20)

Major release

feature

  • create a documentation website
  • feature: support Server Sent Events SSE (#34)
  • chore: update nuget package informations (description, tags, logo, url)

breakingChange

  • refactor: rename all properties WebUsers to WebSocketUsers in ISimpleWServer (#36)

v13.1.0 / (2025-04-21)

Maintenance

fix

  • fix payload parsing for 64 byte payloads (#32), PR by baris-btcturk

feature

v13.0.0 / (2025-02-14)

Major release

fix

  • fix: possible header mismatch when upgrading to websocket connection (#27)

feature

  • chore: bump to NET8 (#26)

v12.0.1 / (2024-12-26)

Maintenance

feature

  • backport fix from Microsoft.IO.RecyclableMemoryStream v3.0.1 to v2.3.
  • backport fix into HttpMultipartDataParser v8.4.0

v12.0.0 / (2024-05-02)

Major release

feature

  • support HTTPS protocol using the new SimpleWSServer() class.

v11.9.0 / (2024-02-15)

Maintenance

breakingChange

  • the getWebUserCallback delegate set with SimpleW.SetToken() is new call by Controller.JwtToWebUser() to redress Controller.webuser on each request.

v11.8.0 / (2024-02-14)

Maintenance

breakingChange

  • refactor: remove unused expiration parameter from NetCoreServerExtension.ValidateJwt() (#19)
  • refactor: remove unused Controller.TokenExpiration property (#18)

feature

  • refactor: change jwt default create expiration from 30min to 15min (#20)

v11.7.0 / (2024-02-02)

Maintenance

breakingChange

  • rename WebSocketMessage.data to WebSocketMessage.body (#17)

feature

  • documentation

v11.6.0 / (2024-02-02)

Maintenance

breakingChange

  • remove NetCoreServerExtension.GetBearer() method.

feature

  • Controller.GetJwt() is now virtual and can be overrided in subclass.
  • documentation

v11.5.0 / (2024-01-14)

Maintenance

breakingChange

  • rename SimpleW.SetTokenWebUserCallback() method to SimpleW.SetToken() and reorder parameters (#3).
  • rename Controller.OnBeforeHandler() method to Controller.OnBeforeMethod().

fix

  • fix(AutoIndex): do not show ".." in root path (#10).

feature

  • feature(WebSocket): handle multiple socket endpoints and not just once (#9).
  • documentation

v11.4.0 / (2024-01-04)

Maintenance

feature

  • property RegExpEnabled must be explicitly enabled to allow regular expression in route path (#2).
  • refactor(Router): use Dictionnary<Key, Route> when RegExpEnabled is false, performances improvement (#1)

v11.3.3 / (2023-12-24)

Maintenance

feature

  • update nuget package settings

v11.3.2 / (2023-12-23)

Maintenance

feature

  • update nuget package settings

v11.3.1 / (2023-12-23)

Maintenance

fix

  • fix wrong label and status for OnWsDisconnected logging

v11.3.1 / (2023-12-23)

Maintenance

fix

  • fix wrong label and status for OnWsDisconnected logging

feature

  • add release-notes
  • enhance logging

v11.3.0 / (2023-12-15)

Maintenance

breakingChange

  • remove Prefix property from RouteAttribute class

feature

  • add new AutoIndex property to list documents when defaultDocument does not exists
  • add new property RegExpEnabled to force Router handle regular expression in Routes

v11.2.0 / (2023-12-09)

Maintenance

feature

  • sync with upstream (NetCoreServer fix websocket closing)
  • split Route with a new Router class
  • rename ObjectMethodExecutor to ControllerMethodExecutor
  • use StringComparison.OrdinalIgnoreCase

v11.1.0 / (2023-11-07)

Maintenance

feature

  • clean code
  • add documentation
  • add license
  • include LitJWT sources in projet files

v11.0.0 / (2023-11-01)

Major release

fix

  • fix huge performances degradation due to old Trace.Trace*() methods

v10.0.0 / (2023-10-22)

Maintenance

breakingChange

  • rename AddApiContent() to AddDynamicContent()

v9.0.1 / (2023-10-22)

Maintenance

fix

  • throw error on starting static server when containing file which size is 0

feature

  • reorganize CompileHandler() method
  • refactor ObjectMethodExecutor.Controllers()
  • add some check to AddApiContent() and AddWebSocketContent() methods
  • refactor RouteAttribute.SetPrefix()
  • clean code

v9.0.0 / (2023-10-12)

Maintenance

feature

  • refactor mimeTable
  • add NetCoreServer Official Readme
  • sync with upstream (HttpMultipartDataParser to v8.2.0)

v8.1.2 / (2023-10-12)

Maintenance

feature

  • compliant to OpenTelemetry http semantic convention

v8.1.1 / (2023-10-12)

Maintenance

feature

  • convert old trace to system.diagnostics.Activity for OpenTelemetry

v8.1.0 / (2023-10-12)

Maintenance

feature

  • preliminary support of system.diagnostics.Activity for OpenTelemetry

v8.0.8 / (2023-08-17)

Maintenance

feature

  • change scope from protected to public for Controller.MakeResponse*()

v8.0.7 / (2023-08-16)

Maintenance

feature

  • add new MakeDownloadResponse(MemoryStream content)

v8.0.6 / (2023-05-15)

Maintenance

breakingChange

  • change MakeRedirectResponse() scope to private

v8.0.5 / (2023-05-15)

Maintenance

feature

  • add new helper Controller.MakeRedirectResponse()

v8.0.4 / (2023-03-30)

Maintenance

feature

  • clean code

v8.0.3 / (2023-03-29)

Maintenance

feature

  • support DateOnly in Controller.Method() parameter

v8.0.2 / (2023-03-19)

Maintenance

feature

  • sync with upstream (Newtonsoft v13.0.3)
  • BodyMap/JsonMap/BodyMapAnonymous : add new json custom converter for hh:mm timeonly

v8.0.1 / (2023-02-16)

Maintenance

feature

  • add new Controller.MakeResponse()

v7.0.0 / (2023-01-25)

Major release

breakingChange

  • refactor SimpleW with BodyMap(), BodyMapAnonymous() and BodyFile()

feature

  • comment

v7.0.0 / (2022-12-01)

Major release

feature

  • sync with upstream (NetCoreServer v7.0.0)
  • sync with upstream (LitJWT v2.0.2)
  • sync with upstream (Newtonsoft v13.0.2)
  • retargeting to NET7

v6.2.4 / (2022-11-30)

Maintenance

feature

  • uniformize http and websocket log

v6.2.3 / (2022-11-30)

Maintenance

feature

  • comment
  • replace special char " in logging url

v6.2.1 / (2022-10-20)

Maintenance

fix

  • logging error and exception

v6.2.0 / (2022-10-05)

Maintenance

feature

  • refactor Controller.GetWebUser() into SetWebUser() and JwtToWebUser()
  • support JWT in WebSocket connexion

v6.1.0 / (2022-10-04)

Maintenance

feature

  • refactor SimpleWServer.AddWebSocketContent()
  • support JWT in WebSocket

v6.0.0 / (2022-10-02)

New Major Version

fix

  • fix null exception in Controller.GetJwt() when parsing request url

feature

  • support Websocket
  • support Route for websocket
  • refactor SimpleWSession/Controller with (SimpleWServer)Session.Server

v5.0.0 / (2022-09-30)

New Major Version

breakingChange

  • rename AddRESTContent to AddApiContent

feature

  • remove exception message output when http 500 error

v4.4.5 / (2022-09-28)

Maintenance

feature

  • sync with upstream (NetCoreServer v6.6.0)
  • sync with upstream (Http-Multipart-Data-Parser v7.0.0)

v4.4.4 / (2022-09-27)

Maintenance

feature

  • support CORS
  • add new HttpResponse.MakeCORSResponse() method

v4.4.3 / (2022-08-29)

Maintenance

fix

  • replace X-Scheme header by X-Forwarded-Proto

feature

  • handle X-Forwarded-Host header in log

v4.4.2 / (2022-08-24)

Maintenance

feature

  • support X-Scheme request header for logging

v4.4.1 / (2022-08-24)

Maintenance

feature

  • log full request url for file in cache and normalize log url
  • log real remote ip
  • refactor Route with the new FQURL() method

v4.4.0 / (2022-08-24)

Maintenance

fix

  • shouldSerializeContractResolver() handle nested class

v4.3.2 / (2022-08-12)

Maintenance

fix

  • sync with upstream (NetCoreServer v6.5.0 fix websocket regression)

v4.3.1 / (2022-08-12)

Maintenance

feature

  • add new parameter description to RouteAttribute

v4.3.0 / (2022-08-11)

Maintenance

feature

  • sync with upstream (NetCoreServer v6.4.0 with Span/Memory)

v4.2.8 / (2022-07-29)

Maintenance

fix

  • sync with upstream NetCoreServer (fix deadlock in websocker/wssession)
  • sync with upstream NetCoreServer (Add HTTP cookie SameSite=Strict mode)

feature

  • comment
  • add new parameter excepts to SimpleW.AddRESTContent() to exclude controllers
  • support wildcard in RouteAttribute

v4.2.7 / (2022-06-28)

Maintenance

feature

  • sync with upstream package LitJWT from v1.2.0 to v2.0.1

v4.2.6 / (2022-06-28)

Maintenance

breakingChange

feature

  • enhance http logging (time, status, user_agent...)

v4.2.5 / (2022-06-14)

Maintenance

feature

  • add new parameter expiration to NetCoreServerExtension.CreateJwt() to control JWT expiration

v4.2.4 / (2022-04-27)

Maintenance

feature

  • enhance http logging (time, status, user_agent...)

v4.2.3 / (2022-04-27)

Maintenance

feature

  • add new paremeter refresh in CreateJwt() to control how Session should refresh the underlying 'IWebUser'

v4.2.2 / (2022-04-07)

Maintenance

breakingChange

  • rename NetCoreServerExtension.PostMap() to NetCoreServerExtension.JsonMap()

v4.2.1 / (2022-04-07)

Maintenance

breakingChange

  • rename NetCoreServerExtension.GetBearerToken() to NetCoreServerExtension.GetBearer()

v4.2.0 / (2022-04-04)

Maintenance

feature

  • replace logging console.log by system.diagnostics

v4.1.0 / (2022-03-22)

Maintenance

breakingChange

  • change some method scope of Route class to private
  • rename Route.Parse() to Route.ParseQueryString()

feature

  • JWT HTTP Header can be override by a jwt querystring in url
  • comment
  • add new NetCoreServerExtension.CreateJwt(IWebUser webuser)
  • refactor ValidateJwt with Generic
  • refactor and simplify TokenWebUser class

v4.0 / (2022-03-21)

New Major Version

breakingChange

  • rename class Controller to ControllerBase

feature

  • add new parameter TokenExpiration to TokenWebUser

v3.2.2 / (2022-03-20)

Maintenance

breakingChange

  • rename DelegateSetTokenWebUser(string login=null) to DelegateSetTokenWebUser(Guid id = new Guid())

v3.1.2 / (2022-03-10)

Maintenance

fix

  • ignore case when parsing http header authorization

v3.1.1 / (2022-03-08)

Maintenance

feature

  • add new ControllerBase MakeForbiddenResponse() and MakeAccessResponse()

v3.1.0 / (2022-02-22)

Maintenance

feature

  • replace InvariantCulture with Ordinal
  • remove JsonSerializerSettingsDefaultCulture from NetCoreServerExtension.PostMap()
  • enhance exception message in NetCoreServerExtension.PostMap()
  • add comment

v3.0.0 / (2022-02-21)

Maintenance

feature

  • retargeting to NET6

v2.3.0 / (2022-02-11)

Maintenance

feature

  • add Http-Multipart-Data-Parser

v2.2.1 / (2022-02-03)

Maintenance

fix

  • remove debug message

v2.2 / (2022-02-03)

Maintenance

fix

  • fix NetCoreServer FileCache.InsertFileInternal() ReadAllBytes() error

v2.1.1 / (2022-01-31)

Maintenance

fix

  • fix correct timestamp in console log

v2.1 / (2022-01-30)

Maintenance

fix

  • fix netcoresever FileCache
  • fix compressTypes in ControllerBase.SendResponseAsync()

v2.0 / (2022-01-23)

New Major Version

feature

  • sync with upstream (NetCoreServer v6.1.0)

v1.1.1 / (2022-01-03)

Maintenance

refactor

  • refactor SimpleWServer.AddWebSocketContent()

v1.1.0 / (2021-12-26)

Initial nuget package release

breakingChange

  • rename PostUpdate() to PostMap()

v1.0.15 / (2021-12-16)

Maintenance

feature

  • support Guid parameter in Controller.Method()

v1.0.14 / (2021-12-16)

Maintenance

fix

  • parameter null converter in Controller.Method()

v1.0.12 / (2021-11-10)

Initial stable release

features

  • serve Statics Files
  • serve REST API
  • routes
  • set default document
  • set custom mime type
  • log with console.writeline