C# 在webjob和web api之间共享域DLL?

C# 在webjob和web api之间共享域DLL?,c#,azure,domain-driven-design,microservices,C#,Azure,Domain Driven Design,Microservices,我使用webjob处理消息队列,使用WebAPI处理REST请求。 这两种具有相同有界上下文的应用程序类型之间的共享域解决方案是什么? 我可以引用同一个域DLL吗?或者它是一个错误的设计选择?我建议使用以下项目设置Visual Studio解决方案: WebAPI项目 应用层项目 WebJob项目 4-N.[所有其他项目,如数据访问层] WebAPI和WebJob项目都引用应用层项目 在Web应用程序中,WebAPI和WebJob项目都有自己的应用层DLL副本。在Web应用程序上保留一个DLL副

我使用webjob处理消息队列,使用WebAPI处理REST请求。 这两种具有相同有界上下文的应用程序类型之间的共享域解决方案是什么?
我可以引用同一个域DLL吗?或者它是一个错误的设计选择?

我建议使用以下项目设置Visual Studio解决方案:

  • WebAPI项目
  • 应用层项目
  • WebJob项目 4-N.[所有其他项目,如数据访问层]
  • WebAPI和WebJob项目都引用应用层项目

    在Web应用程序中,WebAPI和WebJob项目都有自己的应用层DLL副本。在Web应用程序上保留一个DLL副本并在两者之间共享(除了节省几KB的磁盘空间之外),没有什么好处。但这会增加部署的复杂性


    此外,您可能在将来的某个时候想要将您的WebJob移动到另一个Web应用程序。在两者之间共享DLL的单个副本将迫使您进行更改

    为了澄清,您有一个WebJob和一个Web API应用程序在同一个Azure Web应用程序上运行,您想知道使用一个由两者引用的DLL的优点/缺点吗?是的,就是这样,更具体地说,对于业务DLL,请参见我对一个类似问题的回答:可能重复“是”,但在microservice中建议在microservice之间不共享代码,因此webAPI和WebJob是同一个microservice?但它不是同一个EXE。。我也是confused@ArDumez他说的是,WebAPI和WebJob只是同一个微服务的不同表示层think@ArDumez,如果创建名为Foo的ASP.NET Web应用程序Web API项目,该项目将编译为Foo.DLL及其所有支持库。如果您创建一个名为Bar的Azure WebJob项目,它将编译为Bar.exe及其引用的库。若应用程序是每个项目引用的类库,则Foo和Bar都将有一个单独的Application.DLL副本。这就是你想要的。