问题标签 [agatha-rrsl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
746 浏览

service - 为 Agatha 创建一个通用处理程序?

我正在使用 Agatha 请求/响应库(以及 Agatha 1.0.5.0 使用的 StructureMap)作为我正在原型设计的服务层,我注意到的一件事是需要创建大量的处理程序. 任何请求/响应类型对都需要自己的处理程序通常是有意义的。但是,随着这扩展到将有很多处理程序的大型企业环境。

我开始做的是将企业域划分为逻辑处理器类(数十个处理器,而不是数百甚至可能最终数千个处理程序)。约定是每个请求/响应类型(所有这些都继承自域基础请求/响应对,继承自 Agatha 的)在某处的处理器中恰好获得一个功能。

通用处理程序(继承自 Agatha 的 RequestHandler)然后使用 Handle 方法中的反射来查找给定 TREQUEST/TRESPONSE 的方法并调用它。如果它找不到一个或找到多个,它会返回一个包含错误消息的 TRESPONSE(消息在域的基本响应类中标准化)。

这里的目标是让整个企业的开发人员只关心在域中编写他们的请求/响应类型和处理器函数,而不必花费额外的开销来创建处理程序类,这些处理程序类都做同样的事情(将控制权传递给处理器功能)。

但是,似乎我仍然需要为每个请求/响应类型对定义一个处理程序类(尽管是空的,因为基本处理程序会处理所有事情)。否则,在向服务分派请求时会引发以下异常:

StructureMap 异常代码:202 没有为 PluginFamily Agatha.ServiceLayer.IRequestHandler`1 定义默认实例 [[TSFG.Domain.DTO.Actions.HelloWorldRequest, TSFG.Domain.DTO, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null] ],Agatha.ServiceLayer,版本=1.0.5.0,文化=中性,PublicKeyToken=6f21cf452a4ffa13

有没有一种我没有看到告诉 StructureMap 和/或 Agatha 始终对所有请求/响应类型对使用基本处理程序类的方法?或者也许使用 Reflection.Emit 在应用程序启动时在内存中生成空处理程序只是为了满足要求?

我对这些库并不是 100% 熟悉,并且正在学习,但到目前为止,我对这两种可能的方法的尝试都没有成功。任何人都可以提供一些解决这个问题的建议,或者完全提供另一种方法吗?

0 投票
2 回答
547 浏览

javascript - 在 JavaScript 中遍历 MooTools JSONP 输出

我一直在试验一个名为 Agatha 的 .NET WCF 请求/响应框架。他们的示例之一是使用 MooTools 调用 JSONP 扩展,然后在 ASP.NET MVC 应用程序的页面中显示结果。

我已经修改了一个示例,它返回单个字符串来调用我创建的服务,该服务返回客户集合(来自 AdventureWorks 数据库)。

一般来说,我对 JavaScript 的经验很少,我一直在创建一个函数,该函数将从服务中获取输出:

并允许我遍历它,以便我可以将结果输出到页面中。谁能指出我正确的方向?

0 投票
1 回答
401 浏览

wcf - Agatha WCF 中的通用数据合同

我正在尝试使用 Generic DataContract 类,这样我就不必为不同对象的集合实现多种类型。

经验:

我有一个 Profile 对象,其中包含一组对象。

所以我想要一个Profile<Foo>Profile<Foo1>其中 profile 包含 Foo 或 Foo1 对象的集合。

我一直在阅读 WCF 不支持泛型类,实际上我得到的错误如下。

Type 'GL.RequestResponse.ProfileResponse1[T]' 不能导出为模式类型,因为它是开放的泛型类型。如果其所有泛型参数类型都是实际类型,则只能导出泛型类型。`

现在 ProfileResponse 是我正在尝试使用的这个 Profile 对象。

现在在我的主机中,我正在执行以下操作。:

这是带有数据契约的处理程序的定义。

Container 正在使用 Windsor Container 来注册对象。

注册工作正常,但是在我为 WCF 处理器实例化服务主机并调用主机的打开方法后,我得到了上述错误。

我真的没有办法用 agatha 为 wcf 编写通用响应请求吗?必须为该集合中包含的每种类型定义一个 Profile 容器类,这感觉像是一种浪费。

谢谢。

0 投票
2 回答
547 浏览

wcf - 对 agatha 的一般要求

有谁知道为什么我不能这样做?

为什么 Agatha 无法确定通用请求的类型。它在那里定义。?

类型 'GL.RequestResponse.CommandRequest`1[T]' 不能导出为模式类型,因为它是开放的泛型类型。如果所有泛型参数类型都是实际类型,则只能导出泛型类型。

关于如何做到这一点的任何想法。必须为每种类型的操作创建一个请求对象感觉非常有限制。

0 投票
1 回答
2396 浏览

testing - 小巧玲珑。IoC、测试和阿加莎

在 MVC 3 项目中,我使用 EF4、IoC 和 Agatha-RRSL 作为我的服务层。

幸运的是,这周我找到了 Dapper,我正在从 EF4 迁移到 Dapper!

通常我在我的 Agatha 请求处理程序中注入一个通用存储库......

但是我应该如何使用 Dapper?

1) 我应该在 Agatha 处理程序中注入一个 IDbConnection 吗?然后在处理程序中我将它与 Dapper Query 或 Dapper Execute 一起使用?这是可测试的吗?嘲笑呢?

2) 我应该为 Dapper 创建一个通用存储库吗?也许存储库会是这样的:

IDbConnection 将被注入这里。

并且存储库将被注入到处理程序中。

不知道如何测试这个......

3)我应该把我所有的代码都放在处理程序中吗?

但是测试呢?

4)我已经意识到 Dapper 使用静态方法。这不会引起一些记忆问题吗?

抱歉有这么多问题......我正在努力解决这个问题。

谢谢你,米格尔

0 投票
0 回答
479 浏览

wcf - WCF 服务库 Agatha 初始化容器

我开发了一个使用 Agatha RRSL 的 WCF 服务库,但我不知道如何初始化容器。如果我在 ASP.NET Web 应用程序中重新创建此服务,我可以从 Global.asax.cs Application_Start() 调用初始化代码,并且一切正常。初始化代码为:

在 WCF 服务库中,我添加了一个 App_Code 文件夹,其中包含一个调用:

这不起作用,因为我的客户端应用程序抛出了一个异常,即该类型没有响应。我还尝试向 web.config 文件添加一个组件,但我从来没有接近工作。

我还尝试创建一个执行初始化的自定义 ServiceHost:

但是,我的客户遇到了同样的异常:

我应该采取什么方法让 WCF 服务库运行我的初始化代码,以便主机返回正确的类型?任何指导将不胜感激。谢谢。

0 投票
1 回答
287 浏览

structuremap - Agatha RRSL 和 StructureMap 3.0

我想将 Agatha RRSL 与我对 Agatha 的 IoC 容器的 StructureMap 3.0 包装器的实现一起使用。Agatha 有我不喜欢的带有 StructureMap 2.6 的 NuGet 包。

我首先从 Agatha.StructureMap源代码中复制/粘贴代码,然后进行更改以使用 3.0 StructureMap。

我现在遇到的问题是我得到了一个 StructureMapException

这在我看来好像构造函数 StructureMap 认为它需要使用,但未正确配置的视图是具有多个参数的视图。实际上我需要它来使用无参数构造函数。

但是我认为我已经正确配置了构造函数。这是我用来为 RequestProcessorProxy 配置无参数构造函数的代码:

可能出了什么问题?

就像抬头一样,我对 StructureMap 和 Agatha 都是新手,所以我可能误解了上述任何或所有内容......

0 投票
1 回答
116 浏览

c# - 使用 Agatha 框架处理异常 (BusinessExceptionType)

我正在使用带有自定义异常的Agatha框架。我有一个例外,我在配置我的请求MyException时将其指定为:BusinessExceptionType

这就是我抛出异常的方式:

但是,当引发异常时,MyException不会将其识别为BusinessExceptionType. 我如何让它被识别为一个BusinessExceptionType?以下条件不成立。

这是异常类:

更新: 似乎BusinessExceptionType设置serviceLayerConfiguration正确,直到我在BusinessExceptionType成为null. 在配置请求和发出我的第一个请求之间的某个地方,它变成了null. 要么,要么它serviceLayerConfigurationRequestProcessor.cs. 对此的任何帮助表示赞赏。