我很好奇构建一个包含以下内容的应用程序的正确方法(需要重构):
Excel Addin COM-Visible客户端库,包括暴露给Excel的WinForms和方法(计算调用和表单激活方法) 然后,它使用客户端库中的功能连接到WCF服务。 WCF服务当前包含计算逻辑,验证逻辑,通过ORM工具访问数据库。
即。 Addin - >客户端DLL中的Winform / Direct调用 - > WCF - >数据库或计算
目前仅存在于2个项目中。我的第一个问题是重新设计如下:
客户端项目
服务器端项目
我的问题是:
重构的部分想法是纠正架构,分离关注点等,并将单元测试纳入设计中。
答案 0 :(得分:0)
DTO应该放在哪里,在WCF项目中还是作为自己的库/项目?
您不希望它们出现在WCF项目中,因为这意味着客户端必须引用该服务器端项目。最好将DTO,WCF服务合同(接口)等保存在服务器和客户端项目都可以引用的单独“通用”项目中。
实体转换例程属于哪里?
数据实体< - >数据访问层中的业务实体;商业实体< - > DTO在业务逻辑中。当然,在所有层中使用您的数据实体也是完全可以接受的,从而无需使用所有这些不同的实体和映射代码来保持更新。我想这取决于系统的复杂程度,但请看一下EF4 POCO。
至于你的其他问题,在不了解更多关于你的要求和设计的情况下,你看起来与你的项目清单是对的。
答案 1 :(得分:0)
这就是我的结构,但这个问题没有100%正确答案。在让您的工作舒适之前,许多变化都是有意义的。
DTO应该放在哪里,在WCF项目中,还是作为自己的 库/项目?
合同
实体转换例程属于哪里(数据实体<> 商业实体<> DTO)?全部在业务逻辑层中,还是在服务器主持人中有一些和一些?
中小型项目业务。
这种方案的正确架构应该是什么?
你似乎很好。
服务器端呈现器(Project.Server.Presenter) - 这对我来说没有意义,因为没有GUI可以使用它