Foundatio.AzureServiceBus 10.7.1

前缀已保留
dotnet add package Foundatio.AzureServiceBus --version 10.7.1                
NuGet\Install-Package Foundatio.AzureServiceBus -Version 10.7.1                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="Foundatio.AzureServiceBus" Version="10.7.1" />                
对于支持 PackageReference 的项目,请将此 XML 节点复制到项目文件中以引用包。
paket add Foundatio.AzureServiceBus --version 10.7.1                
#r "nuget: Foundatio.AzureServiceBus, 10.7.1"                
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。将此内容复制到交互工具或脚本的源代码中,以引用包。
// Install Foundatio.AzureServiceBus as a Cake Addin
#addin nuget:?package=Foundatio.AzureServiceBus&version=10.7.1

// Install Foundatio.AzureServiceBus as a Cake Tool
#tool nuget:?package=Foundatio.AzureServiceBus&version=10.7.1                

FoundatioFoundatio

Build status NuGet Version feedz.io Discord

为构建松散耦合的分布式应用程序的可插拔基础块。

包括 Redis、Azure、AWS、RabbitMQ、Kafka 和内存内的实现(用于开发)。

为什么是 Foundatio?

在构建几个大型云应用程序时,我们发现缺乏伟大的解决方案(这并不意味着没有解决方案)来构建可扩展的分布式应用程序,同时保持开发体验简单。以下是为什么我们构建和使用 Foundatio 的几个示例:

  • 希望使用抽象接口进行构建,以便我们可以轻松更改实现。
  • 希望块具有依赖注入友好性。
  • 缓存:最初我们使用开源的 Redis 缓存客户端,但后来它变成了一种具有高许可成本的商业产品。不仅如此,还没有内存实现,因此每个开发者都需要设置和配置 Redis。
  • 消息总线:我们最初考虑了 NServiceBus(出色的产品),但它有较高的许可费用(他们也需要赚钱),而且不友好于开源软件。我们还调查了 MassTransit(另一个出色的产品),但当时发现Azure支持不足,本地设置很痛苦(针对内存)。我们想要一个简单的消息总线,只需要在本机或云端上运行。
  • 存储:我们没有找到任何现有的项目是解耦的并支持内存、文件存储或Azure Blob存储。

总结一下,如果您想要无忧的开发和测试,同时允许您的应用程序进行扩展,请使用Foundatio!

实现

入门(开发)

您可以通过 NuGet包管理器 安装Foundatio。如果您需要帮助,请 提交问题 或加入我们的 Discord聊天室。如果您有任何问题,我们随时都在这里帮助您!

本节仅供开发目的使用!如果您尝试使用Foundatio库,请从NuGet获取它们。

  1. 您需要安装 Visual Studio Code
  2. 打开 Foundatio.sln Visual Studio解决方案文件。

使用Foundatio

下面的部分包含Foundatio可能性的一个小子集。我们建议您查看源代码以获得更多信息。如果您有任何问题或需要帮助,请告知我们!

缓存

缓存允许您以闪电般的速度存储和访问数据,节省您创建或获取数据的昂贵操作。我们提供了四种不同的缓存实现,这些实现是从ICacheClient接口派生的

  1. InMemoryCacheClient:一个内存缓存客户端实现。这个缓存实现只适用于进程的生命周期。值得注意的是,内存缓存客户端可以通过MaxItems属性缓存最后X个条目。我们在Exceptionless中使用它,以仅保留最后250个解析的geoip结果
  2. HybridCacheClient:此缓存实现使用ICacheClientInMemoryCacheClient,并使用IMessageBus在不同进程之间同步缓存。这可以通过在本地缓存中存在项时节省序列化操作和远程缓存的调用来带来巨大的性能提升
  3. RedisCacheClient:Redis缓存客户端实现。
  4. RedisHybridCacheClient:这是一个实现了 HybridCacheClient 的实现,它使用 RedisCacheClient 作为 ICacheClient,并使用 RedisMessageBus 作为 IMessageBus
  5. ScopedCacheClient:此缓存实现接受一个 ICacheClient 实例和一个字符串 scope。该作用域会被添加到每个缓存键的前面。这使得管理和轻松删除所有作用域的缓存键变得非常容易。
示例
using Foundatio.Caching;

ICacheClient cache = new InMemoryCacheClient();
await cache.SetAsync("test", 1);
var value = await cache.GetAsync<int>("test");

队列

队列提供先进先出(FIFO)的消息传递。我们提供了四个来自 IQueue 接口 的不同队列实现。

  1. InMemoryQueue:一个内存队列实现。此队列实现仅对进程生命周期有效。
  2. RedisQueue:一个 Redis 队列实现。
  3. AzureServiceBusQueue:一个 Azure 服务总线队列实现。
  4. AzureStorageQueue:一个 Azure 存储队列实现。
  5. SQSQueue:一个 AWS SQS 实现。
示例
using Foundatio.Queues;

IQueue<SimpleWorkItem> queue = new InMemoryQueue<SimpleWorkItem>();

await queue.EnqueueAsync(new SimpleWorkItem {
    Data = "Hello"
});

var workItem = await queue.DequeueAsync();

锁确保资源在任何给定时间只被一个消费者访问。我们提供了两个来自 ILockProvider 接口 的不同锁实现。

  1. CacheLockProvider:一个使用缓存进行进程间通信的锁实现。
  2. ThrottlingLockProvider:一个仅允许一定数量的锁通过的锁实现。您可以使用它来限制对某些外部服务的 API 调用,并将它们在所有请求该锁的进程中限制。
  3. ScopedLockProvider:此锁实现接受一个 ILockProvider 实例和一个字符串 scope。该作用域会被添加到每个锁键的前面。这使得管理和轻松释放所有作用域的锁变得非常容易。

值得注意的是,所有锁提供者都接受一个 ICacheClient。这允许您确保您的代码可以在多台机器上正确锁。

示例
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();

消息传递

允许您发布和订阅应用程序中流动的消息。我们提供了四个来自 IMessageBus 接口 的不同消息总线实现。

  1. InMemoryMessageBus:一个内存消息总线实现。此消息总线实现仅对进程生命周期有效。
  2. RedisMessageBus:一个 Redis 消息总线实现。
  3. RabbitMQMessageBus:一个 RabbitMQ 实现。
  4. KafkaMessageBus:一个 Kafka 实现。
  5. AzureServiceBusMessageBus:一个 Azure 服务总线实现。
示例
using Foundatio.Messaging;

IMessageBus messageBus = new InMemoryMessageBus();
await messageBus.SubscribeAsync<SimpleMessageA>(msg => {
  // Got message
});

await messageBus.PublishAsync(new SimpleMessageA { Data = "Hello" });

工作

允许您运行长期运行的过程(进程内或进程外)而不用担心它会被提前终止。我们根据您的使用场景提供三种定义作业的不同方式

  1. 作业:所有作业都必须继承自IJob接口。我们还有一个您可以从之继承的基本类JobBase,它提供作业上下文和日志记录。您可以通过在作业上调用RunAsync()或者创建一个JobRunner类的实例并调用其Run方法来运行作业。JobRunner可用于轻松地将作业作为Azure Web Jobs运行。
示例
using Foundatio.Jobs;

public class HelloWorldJob : JobBase {
  public int RunCount { get; set; }

  protected override Task<JobResult> RunInternalAsync(JobContext context) {
     RunCount++;
     return Task.FromResult(JobResult.Success);
  }
}
var job = new HelloWorldJob();
await job.RunAsync(); // job.RunCount = 1;
await job.RunContinuousAsync(iterationLimit: 2); // job.RunCount = 3;
await job.RunContinuousAsync(cancellationToken: new CancellationTokenSource(10).Token); // job.RunCount > 10;
  1. 队列处理作业:队列处理器作业非常适合与来自队列数据驱动的作业一起工作。队列处理器作业必须继承自QueueJobBase。然后您可以通过在作业上调用RunAsync()或者将其传递给JobRunner来运行作业。JobRunner可用于轻松地将作业作为Azure Web Jobs运行。
示例
using Foundatio.Jobs;

public class HelloWorldQueueJob : QueueJobBase<HelloWorldQueueItem> {
  public int RunCount { get; set; }

  public HelloWorldQueueJob(IQueue<HelloWorldQueueItem> queue) : base(queue) {}

  protected override Task<JobResult> ProcessQueueEntryAsync(QueueEntryContext<HelloWorldQueueItem> context) {
     RunCount++;

     return Task.FromResult(JobResult.Success);
  }
}

public class HelloWorldQueueItem {
  public string Message { get; set; }
}
 // Register the queue for HelloWorldQueueItem.
container.AddSingleton<IQueue<HelloWorldQueueItem>>(s => new InMemoryQueue<HelloWorldQueueItem>());

// To trigger the job we need to queue the HelloWorldWorkItem message.
// This assumes that we injected an instance of IQueue<HelloWorldWorkItem> queue

IJob job = new HelloWorldQueueJob();
await job.RunAsync(); // job.RunCount = 0; The RunCount wasn't incremented because we didn't enqueue any data.

await queue.EnqueueAsync(new HelloWorldWorkItem { Message = "Hello World" });
await job.RunAsync(); // job.RunCount = 1;

await queue.EnqueueAsync(new HelloWorldWorkItem { Message = "Hello World" });
await queue.EnqueueAsync(new HelloWorldWorkItem { Message = "Hello World" });
await job.RunUntilEmptyAsync(); // job.RunCount = 3;
  1. 工作项作业:工作项作业将在与其他工作项作业一起的工作池中运行。此类型作业非常适合那些不经常发生但应在作业中处理的事情(例如:删除具有许多子实体的实体)。它将在您在message bus上发布消息时触发。作业必须继承自WorkItemHandlerBase。然后您可以通过JobRunner运行所有共享作业。JobRunner可用于轻松地将作业作为Azure Web Jobs运行。
示例
using System.Threading.Tasks;
using Foundatio.Jobs;

public class HelloWorldWorkItemHandler : WorkItemHandlerBase {
  public override async Task HandleItemAsync(WorkItemContext ctx) {
    var workItem = ctx.GetData<HelloWorldWorkItem>();

    // We can report the progress over the message bus easily.
    // To receive these messages just inject IMessageSubscriber
    // and Subscribe to messages of type WorkItemStatus
    await ctx.ReportProgressAsync(0, "Starting Hello World Job");
    await Task.Delay(TimeSpan.FromSeconds(2.5));
    await ctx.ReportProgressAsync(50, "Reading value");
    await Task.Delay(TimeSpan.FromSeconds(.5));
    await ctx.ReportProgressAsync(70, "Reading value");
    await Task.Delay(TimeSpan.FromSeconds(.5));
    await ctx.ReportProgressAsync(90, "Reading value.");
    await Task.Delay(TimeSpan.FromSeconds(.5));

    await ctx.ReportProgressAsync(100, workItem.Message);
  }
}

public class HelloWorldWorkItem {
  public string Message { get; set; }
}
// Register the shared job.
var handlers = new WorkItemHandlers();
handlers.Register<HelloWorldWorkItem, HelloWorldWorkItemHandler>();

// Register the handlers with dependency injection.
container.AddSingleton(handlers);

// Register the queue for WorkItemData.
container.AddSingleton<IQueue<WorkItemData>>(s => new InMemoryQueue<WorkItemData>());

// The job runner will automatically look for and run all registered WorkItemHandlers.
new JobRunner(container.GetRequiredService<WorkItemJob>(), instanceCount: 2).RunInBackground();
 // To trigger the job we need to queue the HelloWorldWorkItem message.
 // This assumes that we injected an instance of IQueue<WorkItemData> queue

 // NOTE: You may have noticed that HelloWorldWorkItem doesn't derive from WorkItemData.
 // Foundatio has an extension method that takes the model you post and serializes it to the
 // WorkItemData.Data property.
 await queue.EnqueueAsync(new HelloWorldWorkItem { Message = "Hello World" });

文件存储

我们提供了多种来自IFileStorage接口的文件存储实现

  1. InMemoryFileStorage:一个内存文件实现。此文件存储实现仅在进程的生命周期内有效。
  2. FolderFileStorage:一个使用硬盘存储的文件存储实现。
  3. AzureFileStorage:一个Azure Blob存储实现。
  4. S3FileStorage:一个AWS S3文件存储实现。
  5. RedisFileStorage:一个Redis文件存储实现。
  6. MinioFileStorage:一个Minio文件存储实现。
  7. AliyunFileStorage:一个阿里云文件存储实现。
  8. SshNetFileStorage:一个SFTP文件存储实现。

我们推荐使用所有IFileStorage实现为单例。

示例
using Foundatio.Storage;

IFileStorage storage = new InMemoryFileStorage();
await storage.SaveFileAsync("test.txt", "test");
string content = await storage.GetFileContentsAsync("test.txt")

度量

我们提供了五个来自IMetricsClient接口的实现

  1. InMemoryMetricsClient:一个内存指标实现。
  2. RedisMetricsClient:Redis度量实现。
  3. StatsDMetricsClient:statsd度量实现。
  4. MetricsNETClientMetrics.NET实现。
  5. AppMetricsClientAppMetrics实现。
  6. CloudWatchMetricsClient:AWS CloudWatch实现(AWS云监控)

我们建议使用所有IMetricsClient实现作为单例。

示例
IMetricsClient metrics = new InMemoryMetricsClient();
metrics.Counter("c1");
metrics.Gauge("g1", 2.534);
metrics.Timer("t1", 50788);

示例应用

我们提供了演示文稿示例应用,展示如何使用Foundatio。

感谢所有贡献者

contributors

产品 兼容和额外的计算目标框架版本。
.NET net5.0已计算。 net5.0-windows已计算。 net6.0已计算。 net6.0-android已计算。 net6.0-ios已计算。 net6.0-maccatalyst已计算。 net6.0-macos已计算。 net6.0-tvos已计算。 net6.0-windows已计算。 net7.0已计算。 net7.0-android已计算。 net7.0-ios已计算。 net7.0-maccatalyst已计算。 net7.0-macos已计算。 net7.0-tvos已计算。 net7.0-windows已计算。 net8.0已计算。 net8.0-android已计算。 net8.0-browser已计算。 net8.0-ios已计算。 net8.0-maccatalyst已计算。 net8.0-macos已计算。 net8.0-tvos已计算。 net8.0-windows已计算。
.NET Core netcoreapp2.0已计算。 netcoreapp2.1已计算。 netcoreapp2.2已计算。 netcoreapp3.0已计算。 netcoreapp3.1已计算。
.NET Standard netstandard2.0兼容。 netstandard2.1已计算。
.NET Framework net461 已计算。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。
MonoAndroid monoandroid 已计算。
MonoMac monomac 已计算。
MonoTouch monotouch 已计算。
Tizen tizen40 已计算。 tizen60 已计算。
Xamarin.iOS xamarinios 已计算。
Xamarin.Mac xamarinmac 已计算。
Xamarin.TVOS xamarintvos 已计算。
Xamarin.WatchOS xamarinwatchos 已计算。
兼容目标框架
包含的目标框架(在包内)
了解更多关于 目标框架.NET 标准化

NuGet 包 (1)

显示依赖 Foundatio.AzureServiceBus 的前 1 个 NuGet 包

下载
SoftwarePioniere.Fx.Hosting

包描述

GitHub 仓库

此包未使用任何流行的 GitHub 仓库。

版本 下载 最后更新
10.7.1 3,939 3/27/2024
10.7.0 25,594 1/5/2024
10.6.0 44,171 1/1/2023
10.5.0 23,599 5/18/2022
10.4.0 1,372 3/8/2022
10.3.0 1,306 1/20/2022
10.2.2 1,351 9/23/2021
10.2.0 32,537 7/8/2021
10.1.0 766 6/16/2021
10.0.2 2,069 1/20/2021
10.0.0 1,957 9/16/2020
10.0.0-beta9 423 8/25/2020
10.0.0-beta8 364 8/3/2020
10.0.0-beta7 400 7/29/2020
10.0.0-beta6 444 7/8/2020
10.0.0-beta5 564 6/20/2020
10.0.0-beta3 489 6/14/2020
10.0.0-beta2 482 6/6/2020
10.0.0-beta10 403 9/15/2020
10.0.0-beta1 455 5/26/2020
9.0.0 39,584 1/16/2020
8.1.1518 76,233 8/30/2019
8.0.1512 11,249 5/14/2019
8.0.1510 844 4/16/2019
8.0.1507 898 2/24/2019
8.0.1505 804 2/22/2019
7.0.1490 1,159 5/9/2018
6.0.1467 1,352 11/30/2017
5.1.1454 1,186 5/5/2017
5.0.1336 1,195 3/14/2017
5.0.1334 1,009 3/13/2017
5.0.1331 1,064 3/12/2017
5.0.1329-pre 771 3/12/2017
5.0.1328-pre 804 3/12/2017
5.0.1327-pre 789 3/12/2017
5.0.1326-pre 804 3/12/2017
5.0.1324-pre 807 3/12/2017
4.3.1323-pre 792 3/11/2017
4.3.1319 1,077 3/1/2017
4.3.1317 1,020 2/23/2017
4.3.1316 1,059 2/22/2017
4.3.1315 1,066 2/22/2017
4.3.1314 1,076 2/20/2017
4.3.1312 1,055 2/20/2017
4.3.1311-pre 840 2/20/2017
4.3.1307 1,119 2/16/2017
4.3.1306 1,118 2/15/2017
4.3.1305 1,092 2/15/2017
4.3.1304-pre 789 2/15/2017
4.3.1303-pre 800 2/14/2017
4.3.1301 1,064 2/14/2017
4.3.1299 1,039 2/14/2017
4.3.1293 1,076 2/12/2017
4.3.1292 1,057 2/10/2017
4.3.1291 1,101 2/10/2017
4.3.1290 1,074 2/10/2017
4.3.1289 1,062 2/9/2017
4.3.1288 1,052 2/9/2017
4.3.1286 1,045 2/8/2017
4.3.1282 1,051 2/5/2017
4.3.1281 1,071 2/5/2017
4.3.1280 1,046 2/5/2017
4.3.1276-pre 779 2/5/2017
4.3.1177-pre 817 9/2/2016
4.3.1164-pre 827 8/21/2016
4.2.1205-pre 1,154 9/19/2016
4.2.1183 1,187 9/9/2016
4.2.1179 1,067 9/8/2016
4.2.1176 1,056 9/2/2016
4.2.1172 1,073 9/1/2016
4.2.1171-pre 831 9/1/2016
4.2.1169 1,089 8/22/2016
4.2.1167-pre 789 8/22/2016
4.2.1166-pre 795 8/22/2016
4.2.1161 1,064 8/10/2016
4.2.1156-pre 818 8/2/2016
4.2.1155 1,093 8/1/2016
4.2.1150 1,142 7/20/2016
4.2.1149-pre 804 7/19/2016
4.2.1148-pre 808 7/19/2016
4.2.1147-pre 823 7/19/2016
4.2.1146-pre 792 7/19/2016
4.2.1137 1,146 7/19/2016
4.2.1129-pre 795 7/19/2016
4.2.1128-pre 839 7/19/2016
4.2.1127-pre 786 7/19/2016
4.2.1126-pre 808 7/19/2016
4.2.1125-pre 798 7/19/2016
4.2.1123-pre 818 7/19/2016
4.2.1119-pre 831 7/18/2016
4.2.1113-pre 843 7/16/2016
4.2.1108-pre 837 7/15/2016
4.2.1107-pre 851 7/15/2016
4.2.1104-pre 986 7/13/2016
4.2.1099-pre 1,001 7/12/2016
4.2.1098-pre 988 7/12/2016
4.2.1093-pre 865 7/8/2016
4.2.1091-pre 838 7/8/2016
4.2.1090-pre 866 7/8/2016
4.2.1089-pre 858 7/7/2016
4.2.1087-pre 879 7/7/2016
4.2.1083-pre 861 7/6/2016
4.2.1082-pre 857 7/6/2016
4.2.1081-pre 840 7/6/2016
4.2.1079-pre 863 7/6/2016
4.2.1078-pre 870 7/6/2016
4.2.1073-pre 861 7/5/2016
4.2.1070-pre 817 7/5/2016
4.2.1069-pre 831 7/1/2016
4.2.1059-pre 843 7/1/2016
4.2.1046-pre 794 6/24/2016
4.2.1031-pre 808 6/24/2016
4.2.1028-pre 808 6/24/2016
4.2.1027-pre 853 6/24/2016
4.1.1009 1,446 6/15/2016
4.1.1002-pre 1,116 6/14/2016
4.1.995-pre 1,238 6/13/2016
4.1.989-pre 838 5/26/2016
4.1.983-pre 830 5/25/2016
4.1.982-pre 858 5/25/2016
4.1.978-pre 839 5/6/2016
4.1.977-pre 839 5/5/2016
4.1.975-pre 809 5/5/2016
4.0.958 1,087 5/1/2016
4.0.957 1,259 4/29/2016
4.0.956 1,263 4/29/2016
4.0.955 1,100 4/28/2016
4.0.941 1,369 4/27/2016
4.0.940 1,342 4/27/2016
4.0.925 1,231 4/27/2016
4.0.922 1,249 4/27/2016
4.0.909 1,267 4/20/2016
4.0.880 1,097 4/7/2016
4.0.869 1,047 3/30/2016
4.0.864 1,073 3/29/2016
4.0.861 1,108 3/29/2016
4.0.860 1,100 3/29/2016
4.0.857 1,069 3/29/2016
4.0.855 1,073 3/29/2016
4.0.846 1,099 3/22/2016
4.0.842 1,266 3/21/2016
4.0.836 1,098 3/18/2016
4.0.835 1,118 3/18/2016
4.0.834 1,104 3/17/2016
4.0.832 1,107 3/17/2016
4.0.831 1,066 3/16/2016
4.0.829 1,086 3/16/2016
4.0.828 1,146 3/15/2016
4.0.827 1,115 3/15/2016
4.0.826 1,084 3/15/2016
4.0.825 1,182 3/13/2016
4.0.821 1,203 3/11/2016
4.0.819 1,096 3/11/2016
4.0.818 1,153 3/11/2016
4.0.816 1,200 3/11/2016
4.0.815 1,153 3/11/2016
4.0.814 1,175 3/11/2016
4.0.813 1,067 3/10/2016
4.0.812 1,183 3/10/2016
4.0.811 1,148 3/10/2016
4.0.810 1,096 3/10/2016
4.0.809 1,151 3/10/2016
4.0.805 1,071 3/9/2016
4.0.797 1,080 3/9/2016
4.0.796 1,097 3/9/2016
4.0.794 1,104 3/9/2016
4.0.793 1,073 3/9/2016
4.0.792 1,090 3/8/2016
4.0.791 1,058 3/8/2016
4.0.790 1,063 3/8/2016
4.0.788 1,098 3/8/2016
4.0.774 1,137 3/2/2016
4.0.773 1,278 3/1/2016
4.0.772 1,288 3/1/2016
4.0.770 1,058 3/1/2016
4.0.769 1,146 3/1/2016
4.0.762 1,097 3/1/2016
4.0.761 1,072 3/1/2016
4.0.760 1,122 2/29/2016
4.0.759 1,070 2/29/2016
4.0.758 1,077 2/29/2016
4.0.757 1,375 2/29/2016
4.0.756 1,430 2/27/2016
4.0.755 1,496 2/27/2016
4.0.754 1,478 2/27/2016
4.0.753 1,531 2/27/2016
4.0.752 1,204 2/27/2016
4.0.750 1,530 2/27/2016
4.0.749 1,609 2/27/2016
4.0.747 1,501 2/26/2016
4.0.746 1,484 2/26/2016
4.0.744 1,501 2/26/2016
4.0.743 1,199 2/26/2016
4.0.742 1,463 2/26/2016
4.0.741 1,323 2/26/2016
4.0.739 1,480 2/25/2016
4.0.738 1,329 2/25/2016
4.0.734 1,472 2/25/2016
4.0.733-beta 1,151 2/25/2016
4.0.672 1,112 2/16/2016
4.0.669 1,183 2/11/2016
4.0.668 1,203 2/11/2016
3.0.654 1,140 2/10/2016
3.0.646 1,082 2/5/2016
3.0.645 1,119 2/5/2016
3.0.644 1,076 2/5/2016
3.0.639 1,132 2/3/2016
3.0.638 1,124 2/2/2016
3.0.637 1,091 2/1/2016
3.0.635 1,077 2/1/2016
3.0.633 1,062 1/27/2016
3.0.632 1,087 1/27/2016
3.0.629 1,167 1/18/2016
3.0.626 1,155 1/18/2016
3.0.625 1,258 1/18/2016
3.0.624 1,045 12/17/2015
3.0.623 1,221 12/9/2015
3.0.622 1,132 12/9/2015
3.0.621 1,110 12/9/2015
3.0.620 1,104 12/8/2015
3.0.613 1,414 12/4/2015
3.0.611 1,414 12/3/2015
3.0.610 1,459 11/30/2015
3.0.606 1,396 11/30/2015
3.0.605 1,287 11/25/2015
3.0.603 1,192 11/23/2015
3.0.601 1,179 11/23/2015
3.0.600 1,177 11/19/2015
3.0.599 1,155 11/19/2015
3.0.598 1,147 11/17/2015
3.0.592 1,154 11/12/2015
3.0.589 1,132 11/10/2015
3.0.588 1,129 11/10/2015
3.0.586 1,196 11/10/2015
3.0.584 1,143 11/10/2015
3.0.583 1,148 11/10/2015
3.0.581 1,124 11/6/2015
3.0.579 1,138 11/6/2015
3.0.576 1,148 11/5/2015
3.0.575 1,128 11/4/2015
3.0.574 1,147 11/4/2015
3.0.569 1,126 11/3/2015
3.0.568 1,142 11/3/2015
3.0.566 1,118 11/3/2015
3.0.545 1,060 10/28/2015
3.0.538 1,139 10/22/2015
3.0.537 1,113 10/21/2015
3.0.536 1,089 10/21/2015
3.0.534 1,088 10/21/2015
3.0.532 1,152 10/21/2015
3.0.531 1,094 10/21/2015
3.0.524 1,110 10/15/2015
3.0.523 1,205 10/10/2015
3.0.522 1,108 10/10/2015
3.0.520 1,164 10/9/2015
3.0.519 1,203 10/9/2015
3.0.518 1,154 10/9/2015
3.0.517 1,097 10/9/2015
3.0.516 1,435 10/7/2015
3.0.514 1,248 10/6/2015
3.0.513 1,474 10/6/2015
3.0.512 1,372 10/6/2015
3.0.509 1,239 10/1/2015
3.0.507 1,239 10/1/2015
3.0.505 1,234 9/30/2015
3.0.503 1,242 9/30/2015
3.0.502 1,239 9/30/2015
3.0.479 1,238 9/25/2015
3.0.476 1,201 9/24/2015
3.0.471 1,193 9/24/2015
3.0.470 1,189 9/24/2015
3.0.469 1,169 9/24/2015
3.0.468 1,170 9/24/2015
3.0.467 1,158 9/24/2015
3.0.465 1,183 9/24/2015
3.0.459 1,207 9/23/2015
3.0.456 1,188 9/23/2015
3.0.455 1,195 9/22/2015
3.0.454 1,226 9/19/2015
3.0.453 1,225 9/19/2015
3.0.452 1,152 9/18/2015
3.0.451 1,200 9/18/2015
3.0.450 1,193 9/18/2015
3.0.447 1,165 9/18/2015
2.0.378 1,205 9/5/2015
2.0.372 1,147 9/4/2015
2.0.370 1,187 9/4/2015
2.0.368 1,129 9/4/2015
2.0.365 1,154 9/3/2015
2.0.363 1,136 9/3/2015
2.0.361 1,122 9/3/2015
1.0.360 1,119 9/1/2015
1.0.359 1,123 9/1/2015
1.0.358 1,130 9/1/2015
1.0.356 1,117 8/31/2015
1.0.355 1,231 8/31/2015
1.0.354 1,160 8/29/2015
1.0.305 1,159 8/19/2015
1.0.299 1,465 8/8/2015
1.0.293 1,170 7/20/2015
1.0.292 1,174 7/20/2015
1.0.289 1,168 7/10/2015
1.0.288 1,178 7/10/2015
1.0.286 1,181 7/7/2015
1.0.285 1,167 7/7/2015
1.0.284 1,171 7/7/2015
1.0.282 1,177 7/6/2015
1.0.281 1,165 7/6/2015
1.0.279 1,152 7/6/2015
1.0.277 1,118 6/18/2015
1.0.276 1,197 6/8/2015
1.0.275 1,185 6/8/2015
1.0.274 1,100 6/8/2015
1.0.272 1,176 6/1/2015
1.0.269 1,145 5/25/2015
1.0.268 1,163 5/24/2015
1.0.266 1,129 5/24/2015
1.0.263 1,152 5/21/2015
1.0.258 1,159 5/19/2015
1.0.257 1,133 5/18/2015
1.0.256 1,327 5/17/2015
1.0.254 1,131 5/13/2015
1.0.253 1,128 5/13/2015
1.0.250 1,138 5/13/2015
1.0.249 1,159 5/12/2015
1.0.248 1,105 5/12/2015
1.0.245 1,118 5/12/2015
1.0.241 1,160 5/12/2015
1.0.240 1,121 5/12/2015
1.0.237 1,151 5/11/2015
1.0.234 1,177 5/9/2015
1.0.233 1,111 5/9/2015
1.0.231 1,117 5/7/2015
1.0.230 1,158 5/7/2015
1.0.229 1,138 5/7/2015
1.0.226 1,147 5/7/2015
1.0.217 1,379 4/28/2015
1.0.215 1,301 4/27/2015
1.0.213 1,353 4/23/2015
1.0.210 1,293 4/23/2015
1.0.209 1,246 4/15/2015
1.0.202 1,225 4/15/2015
1.0.201 1,233 4/15/2015
1.0.198 1,213 4/15/2015
1.0.197 1,184 4/15/2015
1.0.196 1,223 4/15/2015
1.0.195 1,244 4/15/2015
1.0.194 1,217 4/15/2015
1.0.193 1,202 4/15/2015
1.0.192 1,233 4/15/2015
1.0.191 1,250 4/14/2015
1.0.189 1,209 4/10/2015
1.0.187 1,187 4/9/2015
1.0.186 1,214 4/8/2015
1.0.185 1,208 4/6/2015
1.0.183 1,198 4/3/2015
1.0.181 1,259 4/3/2015
1.0.180 1,221 4/2/2015
1.0.178 1,209 4/1/2015
1.0.177 1,203 4/1/2015
1.0.175 1,243 4/1/2015
1.0.171 1,172 3/31/2015
1.0.170 1,154 3/31/2015
1.0.168 1,174 3/31/2015
1.0.164 1,191 3/30/2015
1.0.162 1,129 3/28/2015
1.0.160 1,172 3/27/2015
1.0.159 1,182 3/26/2015
1.0.157 1,159 3/24/2015
1.0.156 1,181 3/24/2015
1.0.154 1,116 3/24/2015
1.0.152 1,161 3/24/2015
1.0.151 1,177 3/24/2015
1.0.150 1,208 3/23/2015
1.0.149 1,187 3/23/2015
1.0.148 1,168 3/23/2015
1.0.147 1,171 3/21/2015
1.0.146 1,152 3/20/2015
1.0.145 1,148 3/19/2015
1.0.143 1,263 3/18/2015
1.0.142 1,192 3/12/2015
1.0.141 1,158 3/12/2015
1.0.140 1,397 3/5/2015
1.0.139 1,198 3/5/2015
1.0.138 1,293 3/4/2015
1.0.137 1,124 3/3/2015
1.0.134 1,126 3/3/2015
1.0.129 1,411 3/3/2015
1.0.128 1,555 3/3/2015
1.0.125 1,435 2/28/2015
1.0.124 1,172 2/28/2015
1.0.122 1,655 2/28/2015
1.0.119 1,594 2/25/2015
1.0.117 1,524 2/24/2015
1.0.115 1,359 2/24/2015
1.0.114 1,484 2/23/2015
1.0.113 1,539 2/23/2015
1.0.112 1,567 2/23/2015
1.0.111 1,571 2/23/2015
1.0.110 1,611 2/23/2015
1.0.109 1,456 2/22/2015
1.0.108 1,506 2/22/2015
1.0.103 1,609 2/22/2015