例如,我有这段代码
public class ProductService{
private IProductDataSource _dataSource = DependencyManager.Get<IProductDataSource>();
public Product Get(int id){
return _dataSource.Select(id);
}
}
Run Code Online (Sandbox Code Playgroud)
我有2个不同的数据源:
所以我为IProductDataSource创建了2个实现,用于各种数据源.但是如何将所需语言发送到SQL数据源?
也许我的第一个解决方案并不好.
我有这个ViewModel
public class CustomerSuscribeViewModel : IValidatableObject
{
[DataMember(IsRequired = true)]
[DataType(DataType.Text)]
public string Name { get; set; }
public string SurName { get; set; }
[DataMember(IsRequired = true)]
[DataType(DataType.Password)]
public string Password { get; set; }
[DataMember(IsRequired = true)]
[DataType(DataType.Password)]
public string ConfirmPassword { get; set; }
[DataMember(IsRequired = true)]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[Inject]
public IDataUsers DataUsers { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if(DataUsers.Get(new UserFilter() {Email = Email}).Any())
{
yield return new …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用DDD和CQRS.
我得到了这两个解决方案:
将AggregateId添加到我的命令/事件中.我可以使用我的命令作为我的web服务的参数,我也可以将我的命令的一些实例返回到我的表单中,说"你可以执行此命令,这是他的一个和这个"
将我的完整聚合添加到我的命令/事件中.这很好,因为我确定如果有很多事件发生,我将不会加载我的聚合100次,我只是传递我的引用(例如我不会在我的命令的验证器中加载它我的命令处理程序).但我会添加为每个命令创建一个参数类,只有id.
现在我在命令中有id和事件中的完整模型(我相信我的工作单元用于缓存Load(aggregateId),所以我不会为1命令执行相同的请求100).
有没有正确/更好的方式?
我观看了这个视频:https://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2287.所以我试图在控制器中实现async/await的使用.所以这基本上是我做的:
public class HomeController : Controller
{
private static WebClient _webClient = new WebClient();
public async Task<ActionResult> IndexAsync()
{
var data = await _webClient.DownloadStringTaskAsync("http://stackoverflow.com/");
return View("Index", (object)data);
}
public ActionResult Index()
{
var data = _webClient.DownloadString("http://stackoverflow.com/");
return View("Index", (object)data);
}
}
Run Code Online (Sandbox Code Playgroud)
然后我使用了Apache Benchmark并进行了以下两项测试:
ab -n 100 -c 100 http://localhost:53446/Home/index
Run Code Online (Sandbox Code Playgroud)
和
ab -n 100 -c 100 http://localhost:53446/Home/indexasync
Run Code Online (Sandbox Code Playgroud)
我得到了完全相同的性能(我有8个CPU核心).这是为什么 ?