标签: aggregator

asp.net 的事件聚合器

我的需求

我希望我们的内部标准产品在事情发生时触发不同的事件。在不同自定义解决方案的 global asax 中,我想在需要时连接这些事件并做出反应。

现有模块

我一直在寻找用于 asp.net 的事件聚合器,但我不确定要使用什么。我读过 Prism,但它似乎针对 WPF/Silverlight 而不是 asp.net。

然后是这个人,他似乎将聚合器移植到他自己的版本中,独立于 WPF:http : //weblogs.asp.net/rashid/archive/2009/03/05/use-event-aggregator-to-使您的应用程序更可扩展.aspx

有没有人在 asp.net 上使用事件聚合器的经验?这是用于生产用途,所以我不想使用网络上随机人员提供的一些家庭编码聚合器:)

先感谢您。

编辑 1: 看起来,NServiceBus 为此目的有点矫枉过正。我创建了一个单独的 EventAggregator 类来解决这个问题。

班上:

/// <summary>
/// A event aggregator.
/// </summary>
public class EventAggregator
{
/// <summary>The object to use when locking.</summary>
private readonly object _lock = new object();
/// <summary>Holder of registered event handlers</summary>
private readonly Dictionary<Type, List<object>> _handlers = new Dictionary<Type, List<object>>();
/// <summary>Registers the specified handler.</summary>
/// <typeparam name="T"></typeparam>
/// …
Run Code Online (Sandbox Code Playgroud)

c# asp.net events aggregator

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

使用SlickGrid聚合/列的总和

我只是想总结一列并在表格的底部显示总数.从查看示例看,使用聚合器似乎是最好的方法.但是,当我简单地添加

dataView.setAggregators([ new Slick.Data.Aggregators.Sum("value") ], false);

什么都没发生.我已经尝试了几个小时来让一个简单的聚合器基于分组示例工作,但分组示例太复杂了,我无法准确地告诉我需要什么.

编辑:替代修复:对于其他任何人,我最终没有使用聚合器.这些数据在Javascript中可用,这使得生活变得更加容易.总计可以从那里计算出来.

sum aggregation aggregator slickgrid

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

当调用一个调用代理来聚合来自多个端点的数据的方法时,我可以使用什么模式来部分成功?

作为一个例子,假设我有以下课程:

public class FruitBasket {
    private List<Apple> apples;
    private List<Orange> oranges;
    // getters and setters...
}
Run Code Online (Sandbox Code Playgroud)

现在假设我还有一个方法可以获取FruitBasket.

public FruitBasket getFruitBasket() {
    //...
}
Run Code Online (Sandbox Code Playgroud)

现在进一步假设该getFruitBasket方法聚合来自两个不同源的数据,这些数据是通过代理访问的。例如,有一个服务器AppleTree用于获取类型 的对象Apple,还有一个服务器OrangeTree用于获取类型 的对象Orange,并且两者都通过名为 的代理进行访问OrchardGate。这就是为什么我想编写一个getFruitBasket方法而不是getApplesand的原因getOranges,以最大限度地减少从我的应用程序调用OrchardGate.

Apple在成功检索对象和对象的情况下Orange,没有问题,我可以直接返回FruitBasket. 如果访问 或 内部或两者OrchardGate中出现问题,我还可以通过抛出 的后代(或者甚至是,如果我将其添加到适当的子句中)来处理此问题。AppleTreeOrangeTreeRuntimeExceptionExceptiongetFruitBasket throws

然而,在部分成功的情况下会发生什么呢?如果我可以正常访问服务器,但由于 和 之间的某些传输问题而无法AppleTree访问服务器,会发生什么情况?OrangeTreeOrchardGateOrangeTree

据我所知,只有四种选择,而且都非常可怕:

  • 我可以抛出异常,这意味着即使Apple成功接收了对象,也FruitBasket …

java design-patterns partial aggregator

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

Spring Integration Java DSL - 聚合器的配置

我有一个非常简单的集成流程,其中RESTful请求使用发布 - 订阅通道转发给两个提供者.然后,将两个RESTful服务的结果聚合在一个阵列中.整合流程的草图如下所示:

@Bean
IntegrationFlow flow() throws Exception {
    return IntegrationFlows.from("inputChannel")
            .publishSubscribeChannel(s -> s.applySequence(true)
                .subscribe(f -> f
                        .handle(Http.outboundGateway("http://provider1.com/...")
                                .httpMethod(HttpMethod.GET)
                                .expectedResponseType(ItemDTO[].class))
                ).subscribe(f -> f
                        .handle(Http.outboundGateway("http://provider2.com/...")
                                .httpMethod(HttpMethod.GET)
                                .expectedResponseType(ItemDTO[].class)
                        )
                )
            )
            .aggregate()
            .get();
}
Run Code Online (Sandbox Code Playgroud)

但是,在运行我的代码时,结果数组包含仅由一个RESTful服务返回的项.我缺少任何配置步骤吗?

UPDATE

考虑到Artem的评论,以下版本对应于完整的解决方案.

@Bean
IntegrationFlow flow() throws Exception {
    return IntegrationFlows.from("inputChannel-scatter")
            .publishSubscribeChannel(s -> s.applySequence(true)
                .subscribe(f -> f
                        .handle(Http.outboundGateway("http://provider1.com/...")
                                .httpMethod(HttpMethod.GET)
                                .expectedResponseType(ItemDTO[].class))
                        .channel("inputChannel-gather"))
                .subscribe(f -> f
                        .handle(Http.outboundGateway("http://provider2.com/...")
                                .httpMethod(HttpMethod.GET)
                                .expectedResponseType(ItemDTO[].class))
                        .channel("inputChannel-gather")))
            .get();
}

@Bean
IntegrationFlow gatherFlow() {
    return IntegrationFlows.from("inputChannel-gather")
            .aggregate(a -> a.outputProcessor(g ->  new GenericMessage<ItemDTO[]>(
                        g.getMessages().stream()
                                .flatMap(m -> Arrays.stream((ItemDTO[]) m.getPayload()))
                                .collect(Collectors.toList()).toArray(new …
Run Code Online (Sandbox Code Playgroud)

java dsl spring-integration aggregator

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