1
dcalsky OP 是 60 个 html 表单
|
2
anyele 2017-05-28 22:45:09 +08:00
CMS 推荐 umbraco, 电商推荐 nopcommerce
|
4
anyele 2017-05-28 22:53:09 +08:00
好像对于只写一个 html 模版就能填充所有数据并咩有好的办法, 同问解决办法
|
5
leeg810312 2017-05-29 08:25:54 +08:00 via Android
我参与的项目是这样解决的:想用模板方法做,表设计就得按照模板,而不是按业务实体设计表,因为物理实体和逻辑实体不同,对于复杂统计分析的需求还增加了额外的表
|
6
leeg810312 2017-05-29 08:30:45 +08:00 via Android
也就是 viewmodel 即模板一个,在 controller 传数据,view 自己负责填充,只做了几个模板就满足了几十个页面的需要
|
7
dcalsky OP @leeg810312 我能不能只做一个高度抽象的 view ?有没有这种可能
|
8
leeg810312 2017-05-29 19:55:54 +08:00 via Android
这个不建议做在一个 view,现有 12 个表,每个 4-5 个 viewmodel,要改成只做在一个 view 里面,那在这个 view 处理的数据可能非常多,后期运维会很麻烦,建议根据业务逻辑适当划分成几个模板,逻辑上会比较清晰,维护也会比较方便
|
9
dcalsky OP @leeg810312 比如,注册登陆,创建,修改,删除等等这几个大功能抽象出来是吗
|
10
leeg810312 2017-05-29 23:53:53 +08:00 via Android 1
注册登录不需要模板,因为只有一个。其他实体的增删改查是类似的话,可以用模板方法。将原来实体对象的字段作为元数据存到一个表,包含唯一标识、字段名、长度、数据类型等,实体数据都存到一个业务表,包含实体数据标识、元数据标识和值,根据业务需要,可能要在元数据表或业务数据表增加字段用来条件查询或分组统计,例如表单 id、时间、操作用户等。当需要操作该实体时,可以在各功能的 controller 中读取相应的元数据和业务数据,由 view 对数据在前端控制,例如数字字段只能输入数字,为 HTML 内容提供一个 HTML 编辑器等,提交数据在 controller 做统一安全校验,然后做业务校验。
模板用统一方式的操作实体,可以减少前端工作量,但缺陷有 3 个:1、物理模型和逻辑模型不一致,如果文档不完善,后期运维会有很大问题,所有业务数据是混杂在一个表里的,不知道业务逻辑根本无法筛查出所需数据。2、所有业务数据存在一个表里,在数据量达到千万或存储达到 TB 性能将遇到明显的瓶颈,若 sql 写得不好,索引优化不当,可能几十万数据就会有性能问题,预计 3-5 年到不了性能瓶颈可以忽略,3-5 年使用后一般会有较多改动需求,可以到时再调整架构重构代码。3、同类功能处理不同实体,如果业务相差很多,就得在一个 controller 写大量不同的业务逻辑,这是很糟糕的情况,所以要预先分析,一个模板只操作相似的,少量的不同可以在 controller 处理。要是你各个实体的业务差别都很大,做成模板反而是得不偿失的,不仅没有一致的实体模型,代码可维护性也不高。 模板方式有利有弊,最好评估一下是否有这样的必要。 |