小编tux*_*ear的帖子

EventSourcing应用程序中的用户身份验证

我正在研究使用DDD + CQRS + EventSourcing制作应用程序,我在确定如何进行用户身份验证方面遇到了一些麻烦.

用户本质上是我的域的一部分,因为他们负责客户.我正在使用ASP.NET MVC 4,我希望只使用SimpleMembership.由于登录和授权用户是同步操作,如何在最终一致的架构中解决这个问题?

我是否必须滚动自己的auth系统,在读取端保留非规范化的auth表?如何处理这个的安全性?我最终会在我的事件存储区和视图表中存储密码哈希值吗?

这么多问题,如果有人能说清楚,我会非常感激:)

tldr; 你如何在EventSource应用程序中进行用户身份验证?

authentication authorization cqrs event-sourcing event-store

15
推荐指数
2
解决办法
3301
查看次数

接口中是否缺少async关键字会破坏C#5.0中的DI?

我很高兴用C#5.0创建我的第一个应用程序,我想使用async/await关键字来减轻异步数据调用的痛苦.

我有点困惑的是,接口不允许async关键字成为合同的一部分,因为await关键字仅适用于异步标记方法.这意味着不可能通过接口引用调用异步方法.这也适用于抽象方法.我在这里错过了什么吗?这意味着我的常规DI内容将不再有效:

IAsyncRepository<T> {
 Task<IList<T>> GetAsync(); // no 'async' allowed
}

abstract class AsyncRepositoryBase<T> {
 public abstract Task<IList<T>> GetAsync(); // no 'async' allowed
Run Code Online (Sandbox Code Playgroud)

//客户端代码:

IAsyncRepository<Model> repo = ioc.Resolve<IAsyncRepository<Model>>();
var items = await repo.GetAsync(); // DOOOOOH, will not compile!
Run Code Online (Sandbox Code Playgroud)

这是我目前的解决方案:

public abstract class AsyncRepositoryBase<T>
{
    protected Task<IList<T>> _fetcherTask;

    protected AsyncRepositoryBase(Task<IList<T>> fetcherTask)
    {
        _fetcherTask = fetcherTask;
    }

    public virtual async Task<IList<T>> GetASync()
    {
        return await _fetcherTask;
    }
}
Run Code Online (Sandbox Code Playgroud)

我是否必须在抽象和语言功能之间做出选择?请告诉我,我错过了什么.

c#

6
推荐指数
1
解决办法
323
查看次数