gpt4 book ai didi

c# - 我应该从另一个应用服务调用应用服务吗?

转载 作者:行者123 更新时间:2023-12-03 22:56:24 24 4
gpt4 key购买 nike

上下文

目前我在文档和记录管理系统(DRMS?)中工作。由于一些技术限制,我需要存储一个“ View ”文件和一个“源”文件(DOCX 或 XLSX)。查看文件是供用户打印、下载和查看日常使用情况的 PDF 文件,而源文件是可编辑文件。当用户需要更新文件时,他们会下载源文件,更新它,然后上传一个新的 View 文件和对应的源文件。

目前,我无法实现 XLSX 查看器/编辑器,并且由于文件数量的原因,我无法迁移到 ODF 以使用可用的开源查看器。

现在我有两个这样的模型:

public class Document {
//Other fields
public virtual List<DigitalFile> Files { get; set; }
}

public class DigitalFile {
//Other fields
public virtual Document FileOf { get; set; }
}
Document模型具有所有“业务”数据,而 DigitalFile模型有关于文件本身的数据(路径、url、类型等)

每次创建文档时都会有 1 个 View 文件(必需),并且可能有 1 个源文件(某些文档可能不可编辑)。由此您可以知道,当创建/更新文档时,至少也会创建/更新 1 个数字文件。

问题/疑问

我会有一个 DocumentAppService处理所有 CRUD 操作,但这是我的疑问,我应该从另一个 AppService 调用 AppService 吗?我的意思是,创建 Document 时,Create 方法是否应该调用 DigitalFileAppService 中的另一个 Create 方法? ?或者如果 DocumentAppService更好?自己处理一切?

现在,DigitalFile 上的所有 CRUD 操作都与 Document 上的操作相关联,这就是为什么我怀疑为文件实现 AppService 的原因。

最佳答案

我不建议从同一域中的另一个服务调用应用程序服务。应用程序服务被设计为从 UI 层调用。它实现了审计日志记录、授权、验证……如果您在同一应用程序层中使用代码,则可能不需要它们。

应用程序服务方法是应用程序的公共(public)端点。
从另一个调用应用程序服务就像走出您的应用程序并从不同的点进入。如果另一个应用程序服务方法的签名发生更改(因为 UI 中的需求更改),您也可能不想更改应用程序服务方法。

我的建议是将共享代码分成另一个类(可能是域服务)并从两个应用程序服务中使用。

关于c# - 我应该从另一个应用服务调用应用服务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46653370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com