Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: Version 4 #6

Merged
merged 21 commits into from
Feb 18, 2024
Merged

WIP: Version 4 #6

merged 21 commits into from
Feb 18, 2024

Conversation

Garados007
Copy link
Owner

@Garados007 Garados007 commented Sep 11, 2022

The next major release is coming and with it a ton of changes. Some of them will add behavior, some will change it and some will break support with older releases. Here is a small list of all changes that will be included in this major release:

Api Changes

Added

  • Constructor MaxLib.WebServer.HttpFileDataSource(string path)

Renamed or Changed

  • Method MaxLib.WebServer.HttpDataSource.WriteStreamInternal(Stream stream, long start, long? stop) has been changed to WriteStreamInternal(Stream stream).
  • The base class of MaxLib.WebServer.HttpFileDataSource has been changed from MaxLib.WebServer.HttpDataSource to MaxLib.WebServer.HttpStreamDataSource
  • Type of the property MaxLib.WebServer.HttpFileDataSource.File has been changed from FileStream? to FileStream
  • Type of the property MaxLib.WebServer.HttpFileDataSource.Path has been changed from string? to string
  • Property MaxLib.WebServer.HttpFileDataSource.Path is no longer virtual and now read only
  • Type of the property MaxLib.WebServer.HttpHeader.HeaderParameter has been changed from Dictionary<string, string> to ObservableDictionary<string, string>
  • Type of the property MaxLib.WebServer.HttpRequestHeader.FieldAccept has been changed from List<string> to ReadOnlyCollection<string>
  • Type of the property MaxLib.WebServer.HttpRequestHeader.FieldAcceptCharset has been changed from List<string> to ReadOnlyCollection<string>
  • Type of the property MaxLib.WebServer.HttpRequestHeader.FieldAcceptEncoding has been changed from List<string> to ReadOnlyCollection<string>
  • The type MaxLib.WebServer.Remote.MarshalContainer got the same changes as the API in MaxLib.WebServer.HttpDataSource.
  • Type of the property MaxLib.WebServer.SSL.DualSecureWebServerSettings.Certificate has been changed from X509Certificate? to X509Certificate

Deprecated

  • Everything in the MaxLib.WebServer.Api.* namespace. Use the Builder system in MaxLib.WebServer.Builder.* instead. This is done because both contained similar features and in favor of the Builder system the less feature rich Api system is now deprecated.
  • Class MaxLib.WebServer.Services.StandardDocumentLoader. If you are really in need of this feature you can build your own with the Builder system or WebService in some lines. This class was just some code that nobody really need it.

Removed

  • Property MaxLib.WebServer.HttpDataSource.CanAcceptData and in every inherited class.
  • Property MaxLib.WebServer.HttpDataSource.CanProvideData and in every inherited class.
  • Method MaxLib.WebServer.HttpDataSource.ReadStreamInternal(Stream stream, long? length)
  • Method MaxLib.WebServer.HttpDataSource.WriteStream(Stream stream, long start, long? stop)
  • Method MaxLib.WebServer.HttpDataSource.ReadStream(Stream stream, long? length)
  • Property MaxLib.WebServer.HttpDataSource.RangeStart
  • Property MaxLib.WebServer.HttpDataSource.RangeEnd
  • Property MaxLib.WebServer.HttpDataSource.TransferCompleteData
  • Constructor MaxLib.WebServer.HttpFileDataSource(string? path, bool readOnly)
  • Property MaxLib.WebServer.HttpStreamDataSource.ReadOnly
  • Constructor MaxLib.WebServer.HttpStreamDataSource(Stream stream, bool readOnly)
  • Constructor MaxLib.WebServer.SSL.DualSecureWebServerSettings(string settingsFolderPath)
  • Constructor MaxLib.WebServer.SSL.SecureWebServerSettings(string settingsFolderPath)
  • Class MaxLib.WebServer.Services.HttpHeaderPostParser. The behavior is moved to the Header itself and will be lazy evaluated.
  • Property MaxLib.WebServer.WebServerSettings.DefaultFileMimeAssociation. Same behavior can provide MaxLib.WebServer.MimeType
  • Property MaxLib.WebServer.WebServerSettings.SettingsPath
  • Method MaxLib.WebServer.WebServerSettings.LoadSettingFromData(string data)
  • Method MaxLib.WebServer.WebServerSettings.LoadSetting(string path)
  • Method MaxLib.WebServer.WebServerSettings.Load_Mime(IniFile set)
  • Method MaxLib.WebServer.WebServerSettings.Load_Server(IniFile set)
  • Constructor MaxLib.WebServer.WebServerSettings(string settingFolderPath)

Behind the Scenes

  • Add support for dotnet 8.0
  • Remove support for deprecated dotnet standard 3.1
  • Restructure test and example Projects in the repository. These have now their own directories.
  • The behavior of MaxLib.WebServer.HttpDataSource has been changed.
    • In the past it was possible to read and write data to it. In this version it was changed so only reading from them is possible.
    • In the past the consumer could select the range of data that should be read. In this version only the full content can be read. If one needs a specific range they can use MaxLib.WebServer.HttpPartialSource.
  • Better Cache handling in MaxLib.WebServer.HttpHeader
  • The NuGet Package holds now the complete readme and not a single snippet.
  • Update dependencies
  • Remove Dependency MaxLib.Ini

@Garados007 Garados007 added this to the Version 4.0 milestone Sep 11, 2022
@Garados007
Copy link
Owner Author

I am finishing up this PR and create a new version for new features or fixes.

@Garados007 Garados007 force-pushed the version-4 branch 3 times, most recently from 00925eb to 098804f Compare February 18, 2024 09:21
@Garados007 Garados007 marked this pull request as ready for review February 18, 2024 09:39
@Garados007 Garados007 merged commit e12d0e3 into main Feb 18, 2024
1 check passed
@Garados007 Garados007 deleted the version-4 branch February 18, 2024 09:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant