有客欲显"计算此客忠诚返利"之术。其读三Dataverse表,施诸商律,书其果。凡用者——Dynamics网应用、Power Automate流程、外接整合——皆当呼同术。
有三处可置之。三者之成本、迟滞、规模之态各异。此乃吾辈于每"新术"之请所运之矩阵也。
三者之选
旧式自定动作(遗制):Dataverse中所定之程,可通过SDK而唤。其步,乃工作流活动动作。虽为旧法,然犹广布于世。
定制API(现代):定制动作之继者。定义为Dataverse实体行(customapi, customapiRequestParameter, customapiResponseProperty),以插件为支撑,实现逻辑。通过Web API以类型化的OpenAPI模式展现。
Azure Function:完全外部之.NET函数,或由Power Automate或直接HTTP调用。独占计算资源,可独立扩展,自有定价。
三者解重疊之困。其選,在延時、成本結構,及維護代碼者何也。
決策之表
维度定制动作定制APIAzure函数延迟低(进程内)低(进程内)中(跨服务)并发限制Dataverse的Dataverse的函数应用超时2分钟2分钟10分钟(消耗),可配置更高成本包含于Dataverse包含于Dataverse每次执行+计算长时间运行的工作否否是(持久函数)外部依赖调用有限(沙盒)有限(沙盒)完全灵活性OpenAPI架构否是手动可从流程调用是是(一级)是(HTTP连接器)维护.NET+工作流.NET.NET(首选)
每一皆当
定制动作,于既用之旧系统而持守,则当。新工则略之——定制API乃今之当,工具有益。
定制API,于:
- 逻辑主为Dataverse之询与书
- 延迟为要(每呼不逾500毫秒)
- 呼者处乎微软之栈(流程、他插件、Dynamics应用)
- 其事毕于二刻之内
Azure Function之当,在:
- 其理召外务,其迟未可测
- 其事或需逾二刻
- 耐久、重试、或验点之要(耐久函数)
- 代码需包涵Dataverse沙盒所阻之件(文件IO、套接字、原生依赖)
- 欲使计算之费异于Dataverse之表
费实之境
定制API耗Dataverse之能。高量定制API(日达数万次调用)由既有Dataverse许可所偿——无增额每调用之费。
Azure Functions于消费计划:每GB-秒0.000016元,每百万次执行0.20元。典型自定义函数,128MB运行300毫秒,每次约0.00000006元。每月百万次调用,计算费用约0.25元,执行费用0.20元——实质免费。
计算成本,常以定制API用于Dataverse繁重之务,以Azure Function用于外部依赖繁重之务为优。二者混用,以定制API调用函数(此乃罕见之式)则可两全其美。
各项之需谨记者
定制API之玄机:实现定制API之插件,乃注册于合成之"定制API消息"之步骤。调试之法,依插件之踪迹日志,与诸插件无异。部署之道,经解决方案而行。OpenAPI之架构,自定制API之行列定义而自动生成——于Dataverse中误书参数名,于插件代码中复误书,则致运行时之失败,而解决方案之检核者不能察之。
Azure Function 之妙:闲置后初次调用,消费计划之冷启动或增二至五秒。用户交互式调用,此不可容。选:高级计划(常温,基线成本高),专用应用服务计划,或若调用为异步,则可容冷启动之迟滞。
Azure Function之认证得之:调用Dataverse需认证。至洁之范式,乃Function App置管理身份,于Dataverse立应用用户。教程中用用户个人凭证于应用设置者,乃待发之安全事件。
去月吾等所决
要求:“于每单创建时,计算并适用忠诚返利。”
- 读三表(Customer, OrderHistory, RebateProgram)
- 写计算值于Order
- 必须于每单生成时运行
- 预期量:日两千单,突发至每分钟五十单
- 延迟目标:下单保存时,秒以下
行矩阵之步:
- 延迟:秒以下,于 Azure Function 冷启动之际,甚为紧迫。定制 API 仍在进程之内。
- 外部依赖:无。尽为 Dataverse。
- 长时运行:否,估计不足五百毫秒。
- 费用:Dataverse 已有付费;Azure Function 费用虽廉,然非无偿。
定制API胜出。实现乃插件,依定制API定义注册,既由订单创建后置操作插件调用(同步,阻拦保存),复由Power Automate流程直呼(为追溯重算)。
越岁,客欲与外部税务服务相合,每呼需时三至四秒。吾等未将其纳入同定制API——两分钟超时加之外部服务之不可测,使系统脆弱。遂别建Azure Function以应税务之唤,自Power Automate流程中异步调用。二器各适其时,如宜。
经验之则
若此操作仍囿于Dataverse之内,当以定制API始。尔得时滞之利,融通ALM之便,且无渐增之费。若后需变,可随时移至Azure Function。
若此操作有外倚之患,行止难测,当以Azure Function始。尔得存续之范,兼有十时辰之限,此Dataverse沙盒所不能予也。
若君自用定制行于新事,止之。定制API具定制行之能,兼有架构与良器。












