DDD和串行/ USB通信-与真实设备进行交互的域模型

时间:2018-07-07 06:15:19

标签: c# asp.net design-patterns domain-driven-design communication

情况

我正在为自动压力/温度/等应用程序工作。测量。 我正在尝试实施DDD ,但想知道我该怎么做。

为测量应用程序,可通过RS232或USB与不同的设备(DMM,烤箱,校准器等)进行通信。

我已经创建了一个“包装”命令以使用设备的库,公开了IPressureCalibratorITemperatureCalibratorIDmm之类的接口以及我们拥有的设备的特定实现。

在我的域模型中,我有不同的类别用于不同类型的度量,即PressureCalibrationTemperatureCalibrationTemperatureDriftMeasurement,它们使用不同类型的测量设备,并且具有不同的测量流程。

我还为测量流程实现了模板模式,例如ex。类CalibrationCOntroller,具有用于校准的模式,并将某些实现委派给特定的控制器

问题

  • 我的域模型中的测量类应该有一个控制器,该控制器也位于我的域层中,与设备通信并处理测量流。

    • 问题:我的域项目将引用另一个DLL,即用于测量设备的DLL。
  • 我不应该使用控制器,并且测量类直接使用测量逻辑来实现模板模式。

    • 问题:与上述相同

这两个选项都具有使我的测量类真正丰富的模型的优点/选项,使所有测量逻辑都在实体中实现,并且能够调用诸如PressureCalibration.Run()PressureCalibration.Stop()之类的事物并具有事件例如PressureCalibration.NewMeasureResultStarted / Completed等。

  • 我是否应该在BLL层中使用控制器/服务,该层具有Measurement as属性(通过构造函数传递)并让其处理/知道测量过程?

    • 优势:我的域项目中没有引用
    • 问题:测量类不是那么丰富-仅是验证和一些逻辑,我不能做类似Calibration.Run()的事情,相反,我会做CalibrationService.Run()

0 个答案:

没有答案