Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 域驱动设计Windows Azure Web作业_C#_Azure_Domain Driven Design - Fatal编程技术网

C# 域驱动设计Windows Azure Web作业

C# 域驱动设计Windows Azure Web作业,c#,azure,domain-driven-design,C#,Azure,Domain Driven Design,我的域模型的某些行为符合委派给Azure WebJob的条件。如果我继续在整个网站和Web作业中使用相同的域模型类, 这似乎违反了关注点的分离。两个不同的过程之间将存在紧密耦合 后台进程(本例中为Web作业)是否应始终具有其专用的域模型&由此暴露的行为应仅由一个进程使用 如果您的域模型对环境没有任何依赖性(应该是这样),那么我认为这没有问题 相反:在有限的上下文中使用相同的域模型更可取,因为您可以在一个位置捕获业务规则。这样,您可以确保不会遇到两个模型之间的阻抗不匹配问题 如果您正在使用域事件,

我的域模型的某些行为符合委派给Azure WebJob的条件。如果我继续在整个网站和Web作业中使用相同的域模型类, 这似乎违反了关注点的分离。两个不同的过程之间将存在紧密耦合

后台进程(本例中为Web作业)是否应始终具有其专用的域模型&由此暴露的行为应仅由一个进程使用


如果您的域模型对环境没有任何依赖性(应该是这样),那么我认为这没有问题

相反:在有限的上下文中使用相同的域模型更可取,因为您可以在一个位置捕获业务规则。这样,您可以确保不会遇到两个模型之间的阻抗不匹配问题

如果您正在使用域事件,那么您已经有了与web作业通信的基础。这正是我们一年多以来一直在做的事情,而且效果非常好:

  • Web应用将域事件发布到Azure存储队列
  • web作业接收它们并在同一型号上执行后台处理

因此,您只需创建两个独立的应用程序/服务层(一个用于web应用程序,一个用于后台工作程序),并确保所有域逻辑都位于可重用库中。

如果我理解正确,然后,您基本上是分离您的web角色,并引入一个web作业来进行某种背景/重复处理。这似乎没有违反SoC。实际上,将它们分开是一种很好的做法,这样应用程序就可以在组件之间分割工作。谢谢,很高兴知道相同的DDD模型已经在您的设置中使用了一年多,而且效果很好。我在上一个没有DDD的项目中已经完成了WebRole和Worker角色设置。Worker角色有专用的类库来封装业务逻辑。这种设置可能会更好地加快学习曲线,请问您的想法?