-
Notifications
You must be signed in to change notification settings - Fork 65
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
Create a shared services library #235
Conversation
With the current layering, the FrameworkServices and CoreServices libraries have some shared source. This is fine for internal implementations, but for public types, this causes two types to exist. This is not an issue in the main case (i.e. in an application) as they will never depend on each other. However, the problem arises when a user wants to develop an implementation on a shared, public service that would then be consumed by both the framework services and core services. An example is the ISessionKeySerializer, that a user may want to customize for themselves, but the framework and core services have identical interfaces, but in different assemblies. These are logically the same service, and should therefore have the same identity (i.e. same assembly).
e864c4f
to
f6ba6ab
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM except that I'm not entirely sold on the name. A couple other comments inline.
src/Services/Microsoft.AspNetCore.SystemWebAdapters.Services.csproj
Outdated
Show resolved
Hide resolved
src/Services/Microsoft.AspNetCore.SystemWebAdapters.Services.csproj
Outdated
Show resolved
Hide resolved
Based on feedback, I've updated the package to be This also allows the abstractions to be .NET Standard 2.0 so libraries that extend the types should be even simpler to produce. |
With the current layering, the FrameworkServices and CoreServices libraries have some shared source. This is fine for internal implementations, but for public types, this causes two types to exist with the same name but different assemblies. This is not an issue in the main case (i.e. in an application) as they will never depend on each other.
However, the problem arises when a user wants to develop an implementation on a shared, public service that would then be consumed by both the framework services and core services. An example is the ISessionKeySerializer, that a user may want to customize for themselves, but the framework and core services have identical interfaces, but in different assemblies. These are logically the same service, and should therefore have the same identity (i.e. same assembly).