如何将匿名委托传递给webapi / service

时间:2015-07-20 14:28:30

标签: c# asp.net-web-api delegates

我们有2个服务,如业务逻辑层即服务(WEBAPI)和DAL即服务(WEBAPI)。我们拥有与业务层和业务层交互的客户端与数据层(服务)交互。我们的DAL是Schema Independent,DAL层不包含DTO实体(类)。 DAL从数据读取器获取数据并转换为Expando对象并返回BLL,BLL层将接收到的Expando对象转换为DTO对象。如果数据小于500K,这种方法可以很好地工作,但这种方法由于大小或超时等而失败。所以我想到有没有办法传递func<>或者从BLL层委托给DAL服务层,这个功能<>将在DAL层进行评估,我将在我的匿名委托/ func<>中将我的转换逻辑传递给实体还有一些逻辑。我的问题在架构上这可能不是最好的方法,但我想知道有没有办法将delegate has参数传递给另一个服务并在服务上下文中执行该委托。

2 个答案:

答案 0 :(得分:2)

您无法通过WebAPI本身支持的任何格式传递委托。可执行代码很难发送到另一台机器。

您需要以其他方式解决此问题。也许你可以使用字符串识别方法(例如" FilterByGoldCustomerStatus")并让服务器解释该字符串。

从你给出的架构草图中我不清楚为什么你需要将DAL和BLL分别用基于HTTP的协议分开。也许你的DAL应该只是BLL使用的DLL?!然后,您可以轻松传递委托和表达式树。

坦率地说,这个架构看起来很复杂(很多层,RPC边界,expandos,......)。难道不能以更简单的方式完成吗?!

答案 1 :(得分:0)

此问题尚未回答。我有同样的问题,委托需要从UI传递到BL。假设对于Kendo网格分组,过滤,排序等,您不想从DL获取所有数据并将其传递给BL,然后将其传递给UI(服务器端),然后执行所需的操作。另外,由于未指定此要求并且它是客户端,因此您不能为此创建修复查询。因为可能的成分太多。 关于性能和关注点分离的正确架构是什么?