小编Dan*_*tle的帖子

事件采购:将事件重新聚合到子实体

在为聚合重放事件时,您如何将Apply这些事件发送到子(非根)实体.

到目前为止,我有两个关于如何解决这个问题的想法.

  1. 获取聚合根以将事件路由到适当的实体
  2. 拥有一个通过id加载实体的Aggregate Loader并直接应用它们的事件

你采取了哪些方法,哪些方法有效,哪些无效?


在我的搜索中,我只发现了两个讨论问题的链接(两者都采用了第一种方法):

复合聚合结构(4.2.3.)
聚合根在事件源系统中协调其实体

c# event-sourcing

4
推荐指数
1
解决办法
1934
查看次数

NSubstitute和FSharp - 模拟FSharp函数

给定具有FSharp样式函数的接口.

type IUseless =
    abstract member Listify: string -> int -> string list
Run Code Online (Sandbox Code Playgroud)

你会如何嘲笑这个功能?

let substitute = NSubstitute.Substitute.For<IUseless>()
substitute.Listify.Returns(??? what would even go here ???)
Run Code Online (Sandbox Code Playgroud)

我不希望能够像普通方法一样模拟它,或者包含函数的值(虽然这就是它代表的东西).

所以我很好奇是否有人使用典型的.NET模拟库成功模拟了FSharp函数.

f# mocking

3
推荐指数
1
解决办法
209
查看次数

使用ForEach-Object的函数

使用该ForEach-Object功能时,有没有办法提供function而不是code block.

这将使我能够简化:

@(1, 2, 3, 4) | % { Add-One $_ }
Run Code Online (Sandbox Code Playgroud)

对此,或类似:

@(1, 2, 3, 4) | % Add-One
Run Code Online (Sandbox Code Playgroud)

为了完整性,这里是Add-One函数的当前定义

function Add-One($Number) {
    return $Number + 1
}
Run Code Online (Sandbox Code Playgroud)

编写一个函数process来做类似的事情很容易,如下所示:

@(1, 2, 3, 4) | Add-One
Run Code Online (Sandbox Code Playgroud)

但是,这意味着您必须重新实现循环和ValueFromPipeline每个函数,而不是重用ForEach-Object已提供的函数.所以简而言之,有一种方法可以使用标量函数ForEach-Object,避免将其包装在Code Block

powershell powershell-2.0

2
推荐指数
1
解决办法
725
查看次数

Azure中的后台任务

我想简化在Azure中创建后台任务的人.

在asp.net应用程序中,后台任务一直很困难.对于简单的场景,您可以定期调用URL或启动后台线程.这两个选项都存在问题,两者都远非理想.例如,在调用URL时,对请求可以运行的时间量有限制,它会中断与工作单元的请求关联,并且您需要在应用程序中管理外部组件.对于后台线程,它有点好,但IIS仍然是一个请求驱动的服务,并且在实现重复的后台任务时存在危险.目前正在开展工作以支持IIS本地的后台任务,但这仍然是在遥远的未来.今天推荐的方法是使用Windows服务,这很好,因为它不是PAAS,没有理由不使用整个服务器.

Azure在后台任务方面面临着类似的问题,简单的任务很容易,但如果你想要更大的任务,你就会一直跳到工作者角色.然而,即使你使用这些方法,他们仍然有一些问题.

可以使用Azure移动服务任务计划运行简单任务,但即使是那些也存在一些问题.比如任务长时间运行.它还意味着您在主应用程序中拥有一半的任务逻辑,一半以脚本的形式管理其余的工作.我想要一个可以在一个地方停留的后台服务.

工人角色在大多数时候都是公平的太重量级,坦率地说,他们通常是矫枉过正.当我更愿意通过网站和服务共享一个VM时,它们需要一个完整的专用虚拟机.然后,如果需要,可以独立扩展它们.

我认为azure需要第三种选择.使用可在共享或保留/标准环境中运行的PAAS部署服务的能力.这应该与当前的Azure网站完全相同,因为它可以在共享模式下运行,也可以在我在Azure中托管的其他网站上运行.然后,该服务和我的网站可以在一个虚拟机中运行,以实现具有成本效益的阶段性或尽可能多的专用虚拟机.

所以我有两个问题:

  1. 今天这样做的最佳方式是什么,有没有我错过的选择?

  2. Azure是否会在未来添加这样的服务?

asp.net scheduled-tasks azure

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

null 的组计数始终为 0(零)

在 TSql 中,对包含空值的数据进行分组的推荐方法是什么?

查询类型示例:

Select Group, Count([Group]) 
From [Data] 
Group by [Group]
Run Code Online (Sandbox Code Playgroud)

看来count(*) 和count(Group) 都会导致显示 的空组0

预期表数据示例:

Id, Group
---------
1 , Alpha
2 , Null
3 , Beta
4 , Null
Run Code Online (Sandbox Code Playgroud)

预期结果示例:

Group, Count
---------
Alpha, 1
Beta,  1
Null,  0
Run Code Online (Sandbox Code Playgroud)

这是可以通过 count(Id) 获得的期望结果。这是获得此结果的最佳方法吗?为什么count(*) 和count(Group) 返回“不正确”的结果?

Group, Count
---------
Alpha, 1
Beta,  1
Null,  2
Run Code Online (Sandbox Code Playgroud)

编辑:我不记得为什么我认为 count(*) 这样做了,这可能是我正在寻找的答案..

sql t-sql

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