历史上是MS堆栈开发人员。
我已承诺重新装备到以下堆栈
angular -> ms web.api2 -> C# business objects -> sql server
很老,我根据需求开发数据库,并使用Codesmith生成业务逻辑层。 (是的,我听说过实体框架。甚至尝试过一次)。
我拥抱Angular和Web API 2
我发现Angular希望我在前端编写模型。这似乎只是一个数据结构,我什至无法添加辅助方法。
因此,我也经常编写带有辅助方法的类,该类采用模型的实例。有点丑陋,但确实将结构和逻辑结合在一起。
我发现Web API2希望我编写一个模型。这又似乎只是一个数据结构。我正在探索动态数据类型,但是实际上这并不能给我带来多少好处。而不是编写类,而是编写映射函数。
问题是这个:
是否有办法让每个类的3个以上的副本散布在整个堆栈中?Codesmith是一个非常强大的代码生成器...它可以生成多个文件...但是...
如果它只有几个数据成员和3个地方,我可以复制粘贴编辑并完成它。
在我看来,现在致力于在3个不同环境中保持数据结构同步正在为很多工作做好准备。
我花了近15年的时间试图将尽可能多的代码推送到可继承类的框架中,以使事情保持干燥。
我想念什么吗?有什么建议的模式吗?
[我知道这不是为SO量身定制的问题,但这是所有聪明人都在这里购物的地方。如果您感到荣幸的话,请拒绝我的投票。]
对CodeSmith生成类的方式并不十分熟悉,但是如果它们只是可以很好地序列化的普通的CLR对象,则可以让WebApi将它们直接返回到Angular应用程序。有一些纯粹主义者对此不满意,但是根据具体应用,可能会有理由。
然后,在Angular的世界中,您再次有一些选择,这取决于您的要求/合理性以及您的应用-同样,纯粹主义者肯定会不赞成其中某些选择。
个人,使用实体框架,我(手动)为数据库创建了我的POCO,有一个“视图” / DTO类,然后WebAPI将其发送回客户端,并在Typescript中定义了对象,但是我是控制怪胎,并且不喜欢生成的代码。