除了将关系数据转换为对象模型外,ORM还有其他角色,如:
- 延迟加载
- 自动更改检测
- 交易
但是,使用Repository模式将ORM的DTO转换为域模型时,会发生以下情况:
- 无法使用Lazy Load的好处,因为我需要填充我的整个域模型和存储库不知道域需要什么数据.
- ORM无法检测到更改,因为域模型不是来自ORM世界.
- 由于缺乏关于ORM的领域知识,不能再一次做很多交易
问题1:我是否遗漏了一些差距,我可以在域驱动设计方案中获得延迟加载,事务和自动更改检测的全部好处?或者这些好处更多是针对另一种方法(如Active Record)而不是DDD?
问题2:为什么在DDD书籍中提到了orm?仅针对域模型的关系和延迟加载,交易和变更检测完全放弃
有些平台采用代码优先方法,这是一种改善这些问题的方法,但是这个功能并不总是存在于许多环境中,或者根本无法使用(例如在遗留数据库中),因此它不是解决方案.
WebTestRequest request1 = new WebTestRequest((this.Context["Environment"].ToString() + "/IBWeb/DefaultSB.aspx"));
request1.Headers.Add(new WebTestRequestHeader("Referer", (this.Context["Environment"].ToString() + "/IBWeb/")));
ExtractHiddenFields extractionRule1 = new ExtractHiddenFields();
extractionRule1.Required = true;
extractionRule1.HtmlDecode = true;
extractionRule1.ContextParameterName = "1";
request1.ExtractValues += new EventHandler<ExtractionEventArgs>(extractionRule1.Extract);
yield return request1;
request1 = null;
Run Code Online (Sandbox Code Playgroud)
我有一个如上所述的编码网络性能测试..测试运行没有任何问题..但我想访问WebTestRequest对象的输出/响应.这样做的最佳方法是什么?
我想在ECS集群上运行多个不同的服务,每个服务应该在单个EC2实例上运行.所有服务的EC2实例类型都相同.我希望这些服务能够使用他们所有的主机EC2可用资源.
我的假设是,如果我只用柔软的内存参数(不使用硬之一)在任务配置,这将让我的容器实例使用所有可用内存的EC2实例收留了它,而且我也不会限制.那是对的吗?
至于EC2类型(例如t2.micro [vCPU = 1,Memory = 1Gib])!! 可以简单地说:
{
...
"memory": 1024,
"cpu": 1024,
...
}
Run Code Online (Sandbox Code Playgroud)
由于EC2应该已经设置了一堆容器服务要求.
我看到99%的设计模式示例(策略,工厂,装饰器等)具有硬编码信息,每个产品在不同的类中等等.但是,在大多数现实应用中,主要是数据库使用,我们知道为每个产品创建一个类,或使用硬编码信息是不切实际的.
我知道它们都是例子,但我认为从一本书中学到以后这很痛苦:
为店铺NYStore,ChicagoStore创建CheesePizza,VeggiePizza ...和类的课程
对于工厂模式..而在现实生活中,所有这些比萨饼和商店只是数据库中的行.
那么,在这种情况下,使用数据库和设计模式的最佳方法是什么?
我理解设计模式与支付业务的重要性,例如.(现金,信用卡,比特币..)每种支付类型都有独特的专业化,而且业务不完全在数据库中(信用卡需要打印收据,比特币需要访问网络服务等).
但我正在质疑的是:在真正的比萨餐厅,价格,配料,配料,所有根据不同的地方(芝加哥,纽约..)都位于数据库中,设计模式的使用是否真的有必要?当许多企业位于数据库时,设计模式的使用自然会减少?