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

问题描述 投票:2回答:2

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

c# asp.net-web-api delegates
2个回答
2
投票

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

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

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.