石家庄网站app制作,推广文章的步骤,中国最好的工业设计公司,广州做网站哪家强简介Foundatio - 用于构建分布式应用程序的可插拔基础块•想要针对抽象接口进行构建#xff0c;以便我们可以轻松更改实现。希望这些块对依赖注入友好。•缓存#xff1a;我们最初使用的是开源 Redis 缓存客户端#xff0c;但后来它变成了具有高许可成本的商业产品。不仅如此… 简介Foundatio - 用于构建分布式应用程序的可插拔基础块•想要针对抽象接口进行构建以便我们可以轻松更改实现。希望这些块对依赖注入友好。•缓存我们最初使用的是开源 Redis 缓存客户端但后来它变成了具有高许可成本的商业产品。不仅如此而且没有任何内存实现因此每个开发人员都需要设置和配置 Redis。•消息总线我们最初关注的是NServiceBus伟大的产品但它的许可成本很高他们也必须吃但对 OSS 不友好。我们还研究了MassTransit但发现缺少 Azure 支持并且本地设置很麻烦。我们想要一个可以在本地或云中运行的简单消息总线。•存储我们找不到任何在内存、文件存储或 Azure Blob 存储中解耦和支持的现有项目。总而言之如果您希望在允许应用扩展的同时进行无痛开发和测试请使用 Foundatio使用功能•Caching•Queues•Locks•Messaging•Jobs•File Storage•MetricsCaching缓存允许您快速存储和访问数据ICacheClient我们提供了四种不同的从接口派生的缓存实现•InMemoryCacheClient内存缓存客户端实现。此缓存实现仅在进程的生命周期内有效•HybridCacheClient此缓存实现同时使用 anICacheClient和 theInMemoryCacheClient并使用 anIMessageBus来保持缓存跨进程同步•RedisCacheClientRedis 缓存客户端实现•RedisHybridCacheClientHybridCacheClient使用RedisCacheClientasICacheClient和RedisMessageBusas的实现IMessageBus-ScopedCacheClient此缓存实现采用一个实例ICacheClient和一个字符串scope。范围是每个缓存键的前缀。这使得确定所有缓存键的范围并轻松删除它们变得非常容易。using Foundatio.Caching;
ICacheClient cache new InMemoryCacheClient();
await cache.SetAsync(test, 1);
var value await cache.GetAsyncint(test);Queues队列提供先进先出 (FIFO) 消息传递。IQueue我们提供了四种不同的从接口派生的队列实现•InMemoryQueue内存队列实现。此队列实现仅在进程的生命周期内有效。•RedisQueue一个 Redis 队列实现。•AzureServiceBusQueueAzure 服务总线队列实现。•AzureStorageQueueAzure 存储队列实现。•SQSQueueAWS SQS 实施。using Foundatio.Queues;IQueueSimpleWorkItem queue new InMemoryQueueSimpleWorkItem();await queue.EnqueueAsync(new SimpleWorkItem {Data Hello
});var workItem await queue.DequeueAsync();Locks锁确保在任何给定时间只能由一个消费者访问资源。ILockProvider我们提供了两种从接口派生的不同锁定实现•CacheLockProvider使用缓存在进程之间进行通信的锁实现。•ThrottlingLockProvider一种只允许一定数量的锁通过的锁实现。您可以使用它来限制对某些外部服务的 api 调用它会在所有请求该锁的进程中限制它们。•ScopedLockProvider这个锁实现需要一个实例ILockProvider和一个字符串scope。范围是每个锁定键的前缀。这使得确定所有锁的范围并轻松释放它们变得非常容易。using Foundatio.Lock;ILockProvider locker new CacheLockProvider(new InMemoryCacheClient(), new InMemoryMessageBus());var testLock await locker.AcquireAsync(test);// ...await testLock.ReleaseAsync();ILockProvider throttledLocker new ThrottlingLockProvider(new InMemoryCacheClient(), 1, TimeSpan.FromMinutes(1));var throttledLock await throttledLocker.AcquireAsync(test);// .await throttledLock.ReleaseAsync();Messaging允许您发布和订阅流经您的应用程序的消息。IMessageBus我们提供了四种不同的从接口派生的消息总线实现•InMemoryMessageBus内存消息总线实现。此消息总线实现仅在进程的生命周期内有效。•RedisMessageBus : Redis 消息总线实现。•RabbitMQMessageBus : RabbitMQ 实现。•AzureServiceBusMessageBusAzure 服务总线实现。using Foundatio.Messaging;IMessageBus messageBus new InMemoryMessageBus();await messageBus.SubscribeAsyncSimpleMessageA(msg {// Got message});await messageBus.PublishAsync(new SimpleMessageA { Data Hello });Jobs所有作业都必须从IJob接口派生。我们还有一个可以派生的JobBase基类它提供 JobContext 和日志记录。然后您可以通过调用RunAsync()作业或创建JobRunner类的实例并调用其中一个 Run 方法来运行作业。JobRunner 可用于轻松地将您的作业作为 Azure Web 作业运行。using Foundatio.Jobs;public class HelloWorldJob : JobBase {public int RunCount { get; set; }protected override TaskJobResult RunInternalAsync(JobContext context) { RunCount; return Task.FromResult(JobResult.Success);}}File StorageIFileStorage我们提供从接口派生的不同文件存储实现•InMemoryFileStorage内存文件实现。此文件存储实现仅在进程的生命周期内有效。•FolderFileStorage使用硬盘驱动器进行存储的文件存储实现。•AzureFileStorageAzure Blob 存储实现。•S3FileStorageAWS S3 文件存储实现。•RedisFileStorage : Redis 文件存储实现。•MinioFileStorage Minio文件存储实现。•AliyunFileStorage : 一个阿里云文件存储实现。•SshNetFileStorage一个 SFTP 文件存储实现。 using Foundatio.Storage;IFileStorage storage new InMemoryFileStorage();await storage.SaveFileAsync(test.txt, test);string content await storage.GetFileContentsAsync(test.txt)MetricsIMetricsClient我们提供了五个从接口派生的实现•InMemoryMetricsClient内存中的指标实现。•RedisMetricsClient一个 Redis 指标实现。•StatsDMetricsClient一个 statsd 指标实现。•MetricsNETClient一个Metrics.NET实现。•AppMetricsClient一个AppMetrics实现。•CloudWatchMetricsClientAWS CloudWatch实施。IMetricsClient metrics new InMemoryMetricsClient();metrics.Counter(c1);metrics.Gauge(g1, 2.534);metrics.Timer(t1, 50788);Github地址https://github.com/FoundatioFx/Foundatio 最后大家如果喜欢我的文章还麻烦给个关注并点个赞, 希望net生态圈越来越好