Foundatio.AzureStorage 10.7.1

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

// Install Foundatio.AzureStorage as a Cake Tool
#tool nuget:?package=Foundatio.AzureStorage&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. 打开Visual Studio的Foundatio.sln解决方案文件。

使用Foundatio

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

缓存

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

  1. InMemoryCacheClient:一个内存缓存客户端实现。这种缓存实现仅对于进程的生命周期是有效的。值得注意的是,内存缓存客户端具有通过MaxItems属性缓存最后X个项的能力。我们在Exceptionless中使用了它,以保证只能保留最后250个解析的GeoIP结果
  2. HybridCacheClient:此缓存实现同时使用一个ICacheClientInMemoryCacheClient,并使用一个IMessageBus来保持进程间缓存的同步。如果在本地缓存中找到该项,这将带来巨大的性能提升,因为您将省略序列化和调用远程缓存的步骤。
  3. RedisCacheClient:一个Redis缓存客户端实现。
  4. RedisHybridCacheClient:一个使用RedisCacheClient作为ICacheClientRedisMessageBus作为IMessageBusHybridCacheClient实现。
  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 Service Bus队列实现。
  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 Service Bus实现。
示例
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<T>。然后,您可以通过在作业上调用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. 工作项工作负载:工作项工作负载将在工作项池中与其他工作项工作负载一起运行。此类作业非常适合那些不经常发生但应包含在工作负载中的事情(例如:删除具有许多子项的实体)。当您在消息总线上发布消息时,它会被触发。此作业必须继承自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. MetricsNETClient: Metrics.NET实现。
  5. AppMetricsClient: AppMetrics实现。
  6. CloudWatchMetricsClient: AWS CloudWatch实现。

我们建议将所有 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 Standard 的信息。

NuGet 包 (2)

显示依赖于 Foundatio.AzureStorage 的前两个 NuGet 包

下载
SoftwarePioniere.Fx.Hosting

包描述

ReCloud.Business.Lgm

ReCloud 商业类库

GitHub 仓库 (1)

显示依赖于 Foundatio.AzureStorage 的最热门的 GitHub 仓库

仓库 明星
exceptionless/Exceptionless
Exceptionless 应用程序
版本 下载 最后更新
10.7.1 4,877 3/27/2024
10.7.0 3,724 1/5/2024
10.6.1 9,700 6/23/2023
10.6.0 5,264 1/1/2023
10.5.0 10,905 5/18/2022
10.4.0 4,172 3/8/2022
10.3.0 3,949 1/20/2022
10.2.0 9,380 7/8/2021
10.1.0 1,397 6/16/2021
10.0.2 26,461 1/20/2021
10.0.0 5,331 9/16/2020
10.0.0-beta9 1,061 8/25/2020
10.0.0-beta8 998 8/3/2020
10.0.0-beta7 947 7/29/2020
10.0.0-beta6 1,066 7/8/2020
10.0.0-beta3 1,080 6/14/2020
10.0.0-beta2 1,047 6/6/2020
10.0.0-beta10 1,002 9/15/2020
10.0.0-beta1 1,001 5/26/2020
9.0.0 21,652 1/16/2020
8.1.1537 113,807 8/30/2019
8.0.1530 14,936 5/14/2019
8.0.1528 1,463 4/16/2019
8.0.1525 2,215 2/24/2019
8.0.1523 1,347 2/22/2019
7.0.1507 22,816 9/7/2018
7.0.1505 2,398 5/9/2018
6.0.1479 9,559 11/30/2017
5.1.1460 4,371 7/4/2017
5.1.1456 1,756 5/5/2017
5.0.1336 2,013 3/14/2017
5.0.1334 1,659 3/13/2017
5.0.1331 1,633 3/12/2017
5.0.1329-pre 1,377 3/12/2017
5.0.1328-pre 1,384 3/12/2017
5.0.1327-pre 1,387 3/12/2017
5.0.1326-pre 1,412 3/12/2017
5.0.1324-pre 1,381 3/12/2017
4.3.1323-pre 1,365 3/11/2017
4.3.1319 1,731 3/1/2017
4.3.1317 1,677 2/23/2017
4.3.1316 1,686 2/22/2017
4.3.1315 1,704 2/22/2017
4.3.1314 1,660 2/20/2017
4.3.1312 1,618 2/20/2017
4.3.1311-pre 1,399 2/20/2017
4.3.1307 1,686 2/16/2017
4.3.1306 1,685 2/15/2017
4.3.1305 1,667 2/15/2017
4.3.1304-pre 1,396 2/15/2017
4.3.1303-pre 1,410 2/14/2017
4.3.1301 1,642 2/14/2017
4.3.1299 1,624 2/14/2017
4.3.1293 1,665 2/12/2017
4.3.1292 1,684 2/10/2017
4.3.1291 1,648 2/10/2017
4.3.1290 1,703 2/10/2017
4.3.1289 1,690 2/9/2017
4.3.1288 1,697 2/9/2017
4.3.1286 1,749 2/8/2017
4.3.1282 1,710 2/5/2017
4.3.1281 1,666 2/5/2017
4.3.1280 1,703 2/5/2017
4.3.1276-pre 1,368 2/5/2017
4.3.1177-pre 1,518 9/2/2016
4.3.1164-pre 1,454 8/21/2016
4.2.1205-pre 1,822 9/19/2016
4.2.1183 2,526 9/9/2016
4.2.1179 1,667 9/8/2016
4.2.1176 1,682 9/2/2016
4.2.1172 1,686 9/1/2016
4.2.1171-pre 1,428 9/1/2016
4.2.1169 1,724 8/22/2016
4.2.1167-pre 1,434 8/22/2016
4.2.1166-pre 1,435 8/22/2016
4.2.1161 1,710 8/10/2016
4.2.1156-pre 1,421 8/2/2016
4.2.1155 1,672 8/1/2016
4.2.1150 1,873 7/20/2016
4.2.1149-pre 1,420 7/19/2016
4.2.1148-pre 1,439 7/19/2016
4.2.1147-pre 1,450 7/19/2016
4.2.1146-pre 1,405 7/19/2016
4.2.1137 1,699 7/19/2016
4.2.1129-pre 1,471 7/19/2016
4.2.1128-pre 1,433 7/19/2016
4.2.1127-pre 1,376 7/19/2016
4.2.1126-pre 1,394 7/19/2016
4.2.1125-pre 1,447 7/19/2016
4.2.1123-pre 1,432 7/19/2016
4.2.1119-pre 1,441 7/18/2016
4.2.1113-pre 1,433 7/16/2016
4.2.1108-pre 1,418 7/15/2016
4.2.1107-pre 1,458 7/15/2016
4.2.1104-pre 1,604 7/13/2016
4.2.1099-pre 1,578 7/12/2016
4.2.1098-pre 1,607 7/12/2016
4.2.1093-pre 1,484 7/8/2016
4.2.1091-pre 1,425 7/8/2016
4.2.1090-pre 1,505 7/8/2016
4.2.1089-pre 1,469 7/7/2016
4.2.1087-pre 1,446 7/7/2016
4.2.1083-pre 1,493 7/6/2016
4.2.1082-pre 1,494 7/6/2016
4.2.1081-pre 1,435 7/6/2016
4.2.1079-pre 1,466 7/6/2016
4.2.1078-pre 1,420 7/6/2016
4.2.1073-pre 1,456 7/5/2016
4.2.1070-pre 1,393 7/5/2016
4.2.1069-pre 1,415 7/1/2016
4.2.1059-pre 1,420 7/1/2016
4.2.1046-pre 1,412 6/24/2016
4.2.1031-pre 1,422 6/24/2016
4.2.1028-pre 1,452 6/24/2016
4.2.1027-pre 1,429 6/24/2016
4.1.1009 2,141 6/15/2016
4.1.1002-pre 1,729 6/14/2016
4.1.995-pre 1,619 6/13/2016
4.1.989-pre 1,760 5/26/2016
4.1.983-pre 1,419 5/25/2016
4.1.982-pre 1,427 5/25/2016
4.1.978-pre 1,479 5/6/2016
4.1.977-pre 1,467 5/5/2016
4.1.975-pre 1,436 5/5/2016
4.0.958 1,840 5/1/2016
4.0.957 1,894 4/29/2016
4.0.956 1,857 4/29/2016
4.0.955 1,692 4/28/2016
4.0.941 1,927 4/27/2016
4.0.940 1,938 4/27/2016
4.0.925 1,771 4/27/2016
4.0.922 1,722 4/27/2016
4.0.909 1,882 4/20/2016
4.0.880 1,759 4/7/2016
4.0.869 1,743 3/30/2016
4.0.864 1,678 3/29/2016
4.0.861 1,707 3/29/2016
4.0.860 1,712 3/29/2016
4.0.857 1,683 3/29/2016
4.0.855 1,689 3/29/2016
4.0.846 1,751 3/22/2016
4.0.842 1,958 3/21/2016
4.0.836 1,723 3/18/2016
4.0.835 1,681 3/18/2016
4.0.834 1,668 3/17/2016
4.0.832 1,659 3/17/2016
4.0.831 1,639 3/16/2016
4.0.829 1,681 3/16/2016
4.0.828 1,676 3/15/2016
4.0.827 1,727 3/15/2016
4.0.826 1,692 3/15/2016
4.0.825 1,779 3/13/2016
4.0.821 1,728 3/11/2016
4.0.819 1,699 3/11/2016
4.0.818 1,699 3/11/2016
4.0.816 1,735 3/11/2016
4.0.815 1,729 3/11/2016
4.0.814 1,791 3/11/2016
4.0.813 1,782 3/10/2016
4.0.812 1,771 3/10/2016
4.0.811 1,735 3/10/2016
4.0.810 1,716 3/10/2016
4.0.809 1,654 3/10/2016
4.0.805 1,713 3/9/2016
4.0.797 1,729 3/9/2016
4.0.796 1,670 3/9/2016
4.0.794 1,680 3/9/2016
4.0.793 1,704 3/9/2016
4.0.792 1,651 3/8/2016
4.0.791 1,684 3/8/2016
4.0.790 1,663 3/8/2016
4.0.788 1,717 3/8/2016
4.0.774 1,722 3/2/2016
4.0.773 1,758 3/1/2016
4.0.772 1,694 3/1/2016
4.0.770 1,768 3/1/2016
4.0.769 1,768 3/1/2016
4.0.762 1,682 3/1/2016
4.0.761 1,866 3/1/2016
4.0.760 1,706 2/29/2016
4.0.759 1,781 2/29/2016
4.0.758 1,765 2/29/2016
4.0.757 1,628 2/29/2016
4.0.756 1,913 2/27/2016
4.0.755 1,847 2/27/2016
4.0.754 1,673 2/27/2016
4.0.753 2,125 2/27/2016
4.0.752 2,058 2/27/2016
4.0.750 1,897 2/27/2016
4.0.749 1,746 2/27/2016
4.0.747 1,793 2/26/2016
4.0.746 1,982 2/26/2016
4.0.744 1,977 2/26/2016
4.0.743 1,796 2/26/2016
4.0.742 1,856 2/26/2016
4.0.741 2,067 2/26/2016
4.0.739 2,054 2/25/2016
4.0.738 2,069 2/25/2016
4.0.734 1,978 2/25/2016
4.0.733-预览版 1,599 2/25/2016
4.0.672 1,836 2/16/2016
4.0.669 1,855 2/11/2016
4.0.668 1,755 2/11/2016
3.0.654 1,733 2/10/2016
3.0.646 1,767 2/5/2016
3.0.645 1,652 2/5/2016
3.0.644 1,647 2/5/2016
3.0.639 1,700 2/3/2016
3.0.638 1,717 2/2/2016
3.0.637 1,701 2/1/2016
3.0.635 1,647 2/1/2016
3.0.633 1,679 1/27/2016
3.0.632 1,692 1/27/2016
3.0.629 1,720 1/18/2016
3.0.626 1,613 1/18/2016
3.0.625 1,844 1/18/2016
3.0.624 1,864 12/17/2015
3.0.623 1,708 12/9/2015
3.0.622 1,653 12/9/2015
3.0.621 1,686 12/9/2015
3.0.620 1,664 12/8/2015
3.0.613 1,748 12/4/2015
3.0.611 1,914 12/3/2015
3.0.610 1,919 11/30/2015
3.0.606 1,883 11/30/2015
3.0.605 1,720 11/25/2015
3.0.603 1,793 11/23/2015
3.0.601 1,735 11/23/2015
3.0.600 1,760 11/19/2015
3.0.599 1,697 11/19/2015
3.0.598 1,706 11/17/2015
3.0.592 1,678 11/12/2015
3.0.589 1,658 11/10/2015
3.0.588 1,757 11/10/2015
3.0.586 1,724 11/10/2015
3.0.584 1,703 11/10/2015
3.0.583 1,631 11/10/2015
3.0.581 1,695 11/6/2015
3.0.579 1,606 11/6/2015
3.0.576 1,667 11/5/2015
3.0.575 1,648 11/4/2015
3.0.574 1,635 11/4/2015
3.0.569 1,660 11/3/2015
3.0.568 1,594 11/3/2015
3.0.566 1,678 11/3/2015
3.0.545 1,807 10/28/2015
3.0.538 1,752 10/22/2015
3.0.537 1,694 10/21/2015
3.0.536 1,750 10/21/2015
3.0.534 1,726 10/21/2015
3.0.532 1,768 10/21/2015
3.0.531 1,717 10/21/2015
3.0.524 1,669 10/15/2015
3.0.523 1,741 10/10/2015
3.0.522 1,612 10/10/2015
3.0.520 1,668 10/9/2015
3.0.519 1,916 10/9/2015
3.0.518 1,852 10/9/2015
3.0.517 1,927 10/9/2015
3.0.516 1,882 10/7/2015
3.0.514 1,898 10/6/2015
3.0.513 2,026 10/6/2015
3.0.512 1,820 10/6/2015
3.0.509 1,841 10/1/2015
3.0.507 1,806 10/1/2015
3.0.505 1,790 9/30/2015
3.0.503 1,813 9/30/2015
3.0.502 1,793 9/30/2015
3.0.479 1,785 9/25/2015
3.0.476 1,714 9/24/2015
3.0.471 1,749 9/24/2015
3.0.470 1,821 9/24/2015
3.0.469 1,725 9/24/2015
3.0.468 1,688 9/24/2015
3.0.467 1,700 9/24/2015
3.0.465 1,728 9/24/2015
3.0.459 1,678 9/23/2015
3.0.456 1,680 9/23/2015
3.0.455 1,788 9/22/2015
3.0.454 1,808 9/19/2015
3.0.453 1,784 9/19/2015
3.0.452 1,736 9/18/2015
3.0.451 1,705 9/18/2015
3.0.450 1,697 9/18/2015
3.0.447 1,776 9/18/2015
2.0.378 1,830 9/5/2015
2.0.372 1,753 9/4/2015
2.0.370 1,701 9/4/2015
2.0.368 1,670 9/4/2015
2.0.365 1,770 9/3/2015
2.0.363 1,625 9/3/2015
2.0.361 1,681 9/3/2015
1.0.360 1,718 9/1/2015
1.0.359 1,685 9/1/2015
1.0.358 1,690 9/1/2015
1.0.356 1,678 8/31/2015
1.0.355 1,637 8/31/2015
1.0.354 1,745 8/29/2015
1.0.305 1,699 8/19/2015
1.0.299 2,074 8/8/2015
1.0.293 1,758 7/20/2015
1.0.292 1,868 7/20/2015
1.0.289 1,872 7/10/2015
1.0.288 1,640 7/10/2015
1.0.286 1,814 7/7/2015
1.0.285 1,761 7/7/2015
1.0.284 1,705 7/7/2015
1.0.282 1,679 7/6/2015
1.0.281 1,720 7/6/2015
1.0.279 1,733 7/6/2015
1.0.277 1,723 6/18/2015
1.0.276 1,690 6/8/2015
1.0.275 1,666 6/8/2015
1.0.274 1,645 6/8/2015
1.0.272 2,144 6/1/2015
1.0.269 1,731 5/25/2015
1.0.268 1,697 5/24/2015
1.0.266 1,765 5/24/2015
1.0.263 1,737 5/21/2015
1.0.258 1,689 5/19/2015
1.0.257 1,735 5/18/2015
1.0.256 1,809 5/17/2015
1.0.254 1,638 5/13/2015
1.0.253 1,660 5/13/2015
1.0.250 1,657 5/13/2015
1.0.249 1,730 5/12/2015
1.0.248 1,672 5/12/2015
1.0.245 1,683 5/12/2015
1.0.241 1,691 5/12/2015
1.0.240 1,673 5/12/2015
1.0.237 1,700 5/11/2015
1.0.234 1,762 5/9/2015
1.0.233 1,682 5/9/2015
1.0.231 1,647 5/7/2015
1.0.230 1,723 5/7/2015
1.0.229 1,683 5/7/2015
1.0.226 1,703 5/7/2015
1.0.217 1,910 4/28/2015
1.0.215 1,832 4/27/2015
1.0.213 1,913 4/23/2015
1.0.210 1,806 4/23/2015
1.0.209 1,780 4/15/2015
1.0.202 1,719 4/15/2015
1.0.201 1,699 4/15/2015
1.0.198 1,666 4/15/2015
1.0.197 1,701 4/15/2015
1.0.196 1,778 4/15/2015
1.0.195 1,692 4/15/2015
1.0.194 1,727 4/15/2015
1.0.193 1,717 4/15/2015
1.0.192 1,738 4/15/2015
1.0.191 1,799 4/14/2015
1.0.189 1,741 4/10/2015
1.0.187 1,742 4/9/2015
1.0.186 1,742 4/8/2015
1.0.185 1,812 4/6/2015
1.0.183 1,673 4/3/2015
1.0.181 1,781 4/3/2015
1.0.180 1,719 4/2/2015
1.0.178 1,730 4/1/2015
1.0.177 1,731 4/1/2015
1.0.175 1,696 4/1/2015
1.0.171 1,666 3/31/2015
1.0.170 1,706 3/31/2015
1.0.168 1,688 3/31/2015
1.0.164 1,744 3/30/2015
1.0.162 1,725 3/28/2015
1.0.160 1,712 3/27/2015
1.0.159 1,693 3/26/2015
1.0.156 1,897 3/24/2015
1.0.154 1,635 3/24/2015
1.0.152 1,791 3/24/2015
1.0.151 1,664 3/24/2015
1.0.150 1,693 3/23/2015
1.0.149 1,731 3/23/2015
1.0.148 1,723 3/23/2015
1.0.147 1,695 3/21/2015
1.0.146 1,768 3/20/2015
1.0.145 1,725 3/19/2015
1.0.143 1,756 3/18/2015
1.0.142 1,847 3/12/2015
1.0.141 1,709 3/12/2015
1.0.140 1,732 3/5/2015
1.0.139 1,796 3/5/2015
1.0.138 1,753 3/4/2015
1.0.137 2,075 3/3/2015
1.0.134 1,703 3/3/2015
1.0.129 1,994 3/3/2015
1.0.128 1,839 3/3/2015
1.0.125 1,785 2/28/2015
1.0.124 1,858 2/28/2015
1.0.122 1,682 2/28/2015
1.0.119 2,258 2/25/2015
1.0.117 2,285 2/24/2015
1.0.115 1,899 2/24/2015
1.0.114 2,008 2/23/2015
1.0.113 2,198 2/23/2015
1.0.112 2,149 2/23/2015
1.0.111 2,178 2/23/2015
1.0.110 1,979 2/23/2015
1.0.109 2,229 2/22/2015
1.0.108 1,896 2/22/2015
1.0.103 2,133 2/22/2015
1.0.0 2,326 2/21/2015