Pluggable foundation blocks for building distributed apps.
Full Changelog: https://github.com/FoundatioFx/Foundatio/compare/v8.1...v9.0.0
With the 8.0 release we focused on adding new features, improving the build process using containers, and squashing some bugs.
IStartupAction
and have a method called on startup.HostedJobService
implementation. This new functionality allows you to register jobs to run jobs as background tasks in ASP.NET Core. You can find this new functionality in the Foundatio.Hosting
NuGet package. Below are some of the awesome things we enabled out of the box:
services.AddJob<MyJob>()
services.AddCronJob<MyJob>("* * * * *")
app.UseWaitForStartupActionsBeforeServingRequests()
.Unhealthy
health checks if startup actions haven't completed. You can enable this by calling services.AddHealthChecks().AddCheckForStartupActionsComplete()
GetPagedFileListAsync
to the IFileStorage
interface to allow to allow for efficient paging.DeleteFilesAsync
to get more insight into delete operations.RemoveAsync
, RemoveIfEqualAsync
, and ReplaceIfEqualAsync
to the ICacheClient
interface.IQueueActivity
interface to queue implementations. This allows you easily check when something has last occurred. We are using this interface for quick health checks.SafeSleepAsync
methods to SystemClock
. This ensured a common pattern for safely recovering from sleep operations once a token had been cancelled.CacheLockProvider
not cleaning up AsyncAutoResetEvents
after calling AcquireAsync
.CacheLockProvider
. You need to be sure you are releasing the lock you acquired and not someone elses lock.ILockProvider
interface signatures quite a bit in this release. We changed ReleaseAsync
and RenewAsync
methods to take an actual lock instance to prevent someone from releasing someone else lock.ILock
interface signatures a tiny bit by updating argument names and added some additional read only properties. We feel like this change will give us better control over assuring you a lock is unique as well as give us better insights into lock timings.GetFileListAsync
from IFileStorage. It's now an extension method that calls into GetPagedFileListAsync
.Please take a look at the change log for a full list of the changes.
We made many other improvements to ensure your apps run fast when using Foundatio, too many to be listed here. If you’re already using it, just update your NuGet package to the latest version to take advantage of these improvements. If you’re not using it yet, try it out. It’s worth a shot, we promise!
Once you’ve given it a go, please let us know what you like, or what you hate, by posting a issue.
Until next time, happy coding!
With the 7.0 release we focused on performance and reliability while adding new implementations.
Foundatio.JsonNet
and Foundatio.Utf8Json
. We also introduced a marker interface for serializers that do text based serialization ITextSerializer
(Contrib @edwardmeng).IncrementAsync
, SetIfHigherAsync
, and SetIfLowerAsync
which are now take long
and double
types making your life a little bit easier.SetUnixTimeMillisecondsAsync
and GetUnixTimeMillisecondsAsync
which makes it much easier to deal with timestamps.run-all
. This makes it really easy to have one docker image that can run one job or all of them in a single process.IMessageBus
messages on a dedicated thread(s) to ensure they are delivered and don't starve the thread pool. This greatly improves reliability and deliverability.MessagePack
instead of JSON.NET
for much improved performance.FolderFileStorage
by reducing the number of IO Lookups and CreateDirectories (Contrib @edwardmeng #116)MessagePackSerializer
instead of using JSON.NET
. If you want to use JSON.NET for your serialization needs you can install the Foundatio.JsonNet
NuGet package and use Foundatio.Serializer.JsonNetSerializer
. Here is how we are registering it in our app: container.AddSingleton<ISerializer>(s => new JsonNetSerializer());
. Please note that we also added a ITextSerializer
marker interface, so you could use both Binary Serialization with the default implementation using MessagePack
and Text Serialization using JSON.NET
.ISerializer.Serialize
method to return void
instead of byte[]
.Please take a look at the change log for a full list of the changes.
We made many other improvements to ensure your apps run fast when using Foundatio, too many to be listed here. If you’re already using it, just update your NuGet package to the latest version to take advantage of these improvements. If you’re not using it yet, try it out. It’s worth a shot, we promise!
Once you’ve given it a go, please let us know what you like, or what you hate, by posting a issue.
Until next time, happy coding!
With the 6.0 release we focused on performance as well as improving the .NET Core support.
ILogger
and ILoggerFactory
implementations and moved to Microsoft.Logging.Extensions
.Please take a look at the change log for a full list of the changes.
We made many other improvements to ensure your apps run fast when using Foundatio, too many to be listed here. If you’re already using it, just update your NuGet package to the latest version to take advantage of these improvements. If you’re not using it yet, try it out. It’s worth a shot, we promise!
Once you’ve given it a go, please let us know what you like, or what you hate, by posting a issue.
Until next time, happy coding!
Moves all implementation libraries into their own repositories.
With the 5.0 release we focused on adding support for .NET Core as well as performance improvements.
void IMessageSubscriber.Subscribe(...)
method signature was changed to Task IMessageSubscriber.SubscribeAsync(...)
.Please take a look at the change log for a full list of the changes.
We made many other improvements to ensure your apps run fast when using Foundatio, too many to be listed here. If you’re already using it, just update your NuGet package to the latest version to take advantage of these improvements. If you’re not using it yet, try it out. It’s worth a shot, we promise!
Once you’ve given it a go, please let us know what you like, or what you hate, by posting a issue.
Until next time, happy coding!
Version 4.2.1 includes a work around for a bug that could cause the NuGet packages to fail to install.
Please take a look at the change log for a full list of the changes.
We made many other improvements to ensure your apps run fast when using Foundatio, too many to be listed here. If you’re already using it, just update your NuGet package to the latest version to take advantage of these improvements. If you’re not using it yet, try it out. It’s worth a shot, we promise!
Once you’ve given it a go, please let us know what you like, or what you hate, by posting a issue.
Until next time, happy coding!