我有一个我从另一个开发人员继承的Windows服务,它运行速度非常慢,并且对eBay API有很多慢速调用.我希望在没有太多重构的情况下加快速度.
我刚刚开始考虑使用c#async/await尝试使用这些慢速调用来运行异步.这就是我想要实现的目标:
我有一个非常繁忙的方法,可以进行如下调用:
getProducts
getCategories
getVehicles
getImages
Run Code Online (Sandbox Code Playgroud)
我的想法是我可以简单地将方法更改为async并添加Task<T>到返回类型,如下所示:
public async Task<String> ProcessAdditionalProductDetialsAsync(ItemType oItem)
{
String additionalProductDetails = string.Empty;
if (oItem.ItemSpecifics.Count > 0)
{
foreach (NameValueListType nvl in oItem.ItemSpecifics)
{
if (nvl.Value.Count > 0)
{
foreach (string s in nvl.Value)
{
additionalProductDetails += "<li><strong>" + nvl.Name + ":</strong> " + s + "</li>";
}
}
}
}
return additionalProductDetails;
}
Run Code Online (Sandbox Code Playgroud)
然后等待调用它们:
Task<String> additionalProductDetials = ebayPartNumbers.ProcessAdditionalProductDetialsAsync(item);
Task<PartNumberCollection> partNumberCollection = ebayPartNumbers.ProcessPartNumbersAsync(item);
await Task.WhenAll(partNumberCollection, additionalProductDetials);
Run Code Online (Sandbox Code Playgroud)
如何获取返回的类型以便我可以使用它们?我尝试过只使用partNumberCollection但它只有await可用的属性.
我正在改进用VB.Net和c#编写的asp.net解决方案的单元测试.单元测试需要验证当前的功能,并检查未来的重大变化.
该解决方案包括:
1个用vb.net编写的MVC web项目(不要问,这是遗产)
10个其他支持项目,每个项目包含用C#编写的逻辑分组功能,每个项目包含存储库和DAL
所有类都是紧密耦合的,因为在任何地方都没有实现控制反转(IOC).
目前要测试控制器有以下堆栈:
第一个问题,为了正确地进行单元测试,我会设置1个测试项目并从中运行所有测试,还是应该为每个项目设置1个测试项目来测试该DLL的功能?
第二个问题,我是否需要实施IOC才能使用MOQ?
第三个问题,是否有可能将IOC重构为这样一个巨大的解决方案?
第四个问题,有什么其他选择可以尽快完成这项工作?
c# vb.net unit-testing dependency-injection inversion-of-control