正在运行表示层的外部文档部分



我有一个应用程序,它可以创建一个MS Word文档并运行它

运行外部文档是表示层还是业务逻辑层的一部分?

一方面,它似乎应该是表示层的一部分,因为它最终会导致某些东西被"呈现"给用户(尽管是在外部应用程序中)。另一方面,它似乎更像是一个业务逻辑层的问题,因为表示层可能只想关心当前应用程序的UI,而且归根结底,它真正做的只是运行一个外部流程——可以用于多个外部流程,而这些流程并不都具有"表示"方面。

此外,我不确定SO是否是这个问题的正确答案。我查过了https://softwareengineering.stackexchange.com/但这些标签上只有少数追随者。

这取决于您所说的"表示层的一部分"是什么意思。如果你指的是实际的实现,那么它绝对不是。是的,结果是一个打开的Word文档,但这与应用程序的表示层无关。

  1. 实际的实现应该转到基础结构层,在那里应该有处理数据库、文件和第三方应用程序的所有代码
  2. 您可能有不同的文档生成逻辑实现。例如,对于控制台应用程序,它应该只将文件写入文件夹,对于web应用程序,将文件写入响应,然后由用户下载,等等
  3. 由于实际的逻辑是特定于应用程序的,它应该在应用程序层上被INJECTED,如果你没有它,那么这里的表示层也应该可以
  4. 我想您还希望确保始终为特定的业务案例生成文档。然后,您应该将注入的文档生成服务传递给您的业务层。在这种情况下,如果您想将业务逻辑转移到另一个应用程序,请不要忘记在需要时实现新的文档生成逻辑

所以你的代码应该如下:

public class BusinessLayerService
{
    private IDocumentGenerator _documentGenerator;
    public BusinessLayerService(IDocumentGenerator documentGenerator)
    {
        _documentGenerator = documentGenerator;
    }
    public void DoBusinessCase1()
    {
        // Do work here
        _documentGenerator.GenerateDocument();
    }
}

如果您使用任何IoC容器,只需在您的应用程序启动程序上注册所需的实现(用于web、windows、mobil或控制台应用程序)。

希望它能有所帮助!

相关内容

  • 没有找到相关文章

最新更新