我正在编写一个客户端模拟程序,其中所有模拟客户端都针对服务器运行一些预定义的例程 - 这是一个在具有四个实例的azure中运行的Web服务器.
连接到服务器后,所有模拟客户端都运行相同的例程.
在任何时候,我都希望使用我的程序模拟300到800个客户端.
我的问题是:我应该创建N个客户端类实例并在N个不同的线程中运行它们吗?要么
我应该使用任务库来做这些事吗?
我正在尝试使用实现数据处理管道TPL Dataflow.但是,我对数据流相对较新,并不完全确定如何正确使用它来解决我想要解决的问题.
问题:
我试图遍历文件列表并处理每个文件以读取一些数据,然后进一步处理该数据.每个文件大致700MB以1GB大小.每个文件都包含JSON数据.为了并行处理这些文件,而不是的运行内存,我试图使用IEnumerable<>与yield return再进一步处理数据.
获得文件列表后,我希望一次最多处理4-5个文件.我的困惑来自:
IEnumerable<>和yeild return使用async/await和数据流.碰上了这个答案由svick,但仍然不知道如何转换IEnumerable<>到ISourceBlock,然后所有块连接在一起,并跟踪完成.producer将非常快(通过文件列表),但consumer将非常慢(处理每个文件 - 读取数据,反序列化JSON).在这种情况下,如何跟踪完成情况.LinkTo数据块的功能来连接各种块吗?或者使用诸如OutputAvailableAsync()和之类的方法ReceiveAsync()将数据从一个块传播到另一个块.代码:
private const int ProcessingSize= 4;
private BufferBlock<string> _fileBufferBlock;
private ActionBlock<string> _processingBlock;
private BufferBlock<DataType> _messageBufferBlock;
public Task ProduceAsync()
{
PrepareDataflow(token);
var bufferTask = ListFilesAsync(_fileBufferBlock, token);
var tasks = …Run Code Online (Sandbox Code Playgroud) 我编写了一个C#包装器来支持我们公司项目的REST API.但是,这些API现在正在发生变化 - 就URL而言(可能会在URL中引入版本号)和它期望的数据对象并返回.
我想知道在我的c#wrapper中支持不同版本的REST API的最佳做法是什么.
我应该如何做 - 在代码设计和类定义方面 - 以便一个包装器可以与不同版本的API无缝协作 - 并且它也应该是可扩展的 - 以便将来可以轻松支持任何更新版本的API .
我编写的c#包装器正在使用我们的Web服务API.我已经在使用RestSharp客户端在c#wrapper中使用我们的Web服务API.
我想用单个生产者和多个消费者的模式实现多文件下载.
我有: - 找到要在循环中下载的新链接的代码 - 当找到新链接时 - 它调用下载功能 - 下载功能接受源文件路径和目标文件路径并下载文件.
我想做什么 - 我想同时下载X个文件(我不知道文件的总数) - 在任何时候我都应该能够同时下载X文件 - 只要1个X文件完成下载 - 调用函数应该能够立即添加新的下载 - 然后立即下载
举例非常感谢
c# ×4
api ×1
async-await ×1
ienumerable ×1
queue ×1
rest ×1
simulation ×1
tpl-dataflow ×1
version ×1
wrapper ×1
yield-return ×1