-
-
Notifications
You must be signed in to change notification settings - Fork 140
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
JasperFx Ecosystem Dependency Reorganization #954
Comments
Wolverine & Marten Compliance TestsTo help build more Event Sourcing + CQRS products with Wolverine as a baseline, let's start to pull a standard set of compliance tests for Wolverine extensions and possible future Marten alternatives. Some of this already exists, or "almost" exists, but put it in a publicly published Nuget so it's usable outside of the main Wolverine or Marten repositories:
|
Maybe a different take on this. What if Oakton 7.0 becomes what I wanted JasperFx.Framework to be? It's goofy naming, but in this case Oakton essentially becomes the foundational piece for JasperFx tools. It already has some things like the |
Latest Thinking (September 21st)JasperFx Repository
Streamlined "Stateful Resource" ModelHave a single place where you can set all the "should I build this on demand at runtime, or not" settings across By standardizing on this model across the board, some one off things in Marten & Wolverine should go away:
In all cases, use the // Helper for overriding in tests. If `generatedCodePath` isn't specified, but it under `Internal/Generated` of the designated
// assembly, assuming it's in a project named the same as the assembly
builder.Services.OverrideApplicationAssembly(assembly, string? generatedCodePath = null);
// Syntax for configuring the stateful resource model
builder.Services.ConfigureJasperFx(opts => {
// Shouldn't be needed very often, but *sometimes* people just want to do things differently
// instead of using idiomatic "Development" / "Testing" / "Production"
opts.DevelopmentEnvironmentNames = ["Development", "Testing"];
// This would be the default of either
opts.Development.AutoCreate = AutoCreate.CreateOrUpdate;
// Do *once* for all of the critters
opts.Development.TypeLoadMode = TypeLoadMode.Dynamic;
// Maybe make this auto. Probably make this a prop instead
opts.Development.ResourceSetupOnStartup();
// Default is false. Would apply to both AutoPurgeOnStartup() in Wolverine and Marten.ResetState()
// Development time helper!!!
// Could do stuff like delete all outstanding inbox/outbox messages, reset Marten state, purge queues
opts.Development.ResetAllStateOnStartup = true;
opts.Production.AutoCreate = AutoCreate.CreateOrUpdate;
// Maybe make this auto. Probably make this a prop instead
opts.Production.ResourceSetupOnStartup();
// Do *once* for all of the critters
opts.Production.TypeLoadMode = TypeLoadMode.Static;
}); Also, keep the current extension methods on Other Proposed Streamlining
JasperFx.EventStoreMORE HERE SOON |
UpdateWhat's shown as "JasperFx.Framework" and "JasperFx.Core" are being subsumed into a new library called just "JasperFx" as well as "Oakton". To avoid disturbing existing Oakton users too much, Oakton will be somewhat rebuilt as a shim over the newer "JasperFx". All this shuffling around hopefully helps us reduce the total number of Nugets floating around in our ecosystem and also make there be less wiring, configuration, and general overhead to set up projects. |
This is in Wolverine just because it needs to go somewhere, and because Wolverine is kind of at the top.
"Problems"
OptimizeArtifictWorkflow
between Marten & Wolverine, just so there's less repetitive junk going on in bootstrapping -- especially when there are becoming some many different things that should or could be different in Development vs Production modeToday
Some of the current dependencies between the greater JasperFx / Critter Stack world:
I've omitted Weasel, but it's of course there and would be impacted by this too.
Proposed Future
Okay, so this is going to require a full point Marten 8 and a new Wolverine as well. Maybe this doesn't exactly happen until Wolverine 4. Might help to start with some temporary [Obsolete] tags in especially Marten
Here's the big points, I think:
JasperFx.Framework
that will hold some newer stuff related to shared configuration helpers and logic that is very specific to Marten/Wolverine/future critter stack tools, but not generic enough to live in JasperFx.Core that's just utilities and more or less the "junk drawer"IEnvironmentCheck
andIStatefulResource
modelsFiner Grained Thoughts
GenerationRules
The text was updated successfully, but these errors were encountered: