最近接到个外包项目需求,比较奇葩,还没想到比较好的方案,跪求大神赐教啊!
项目需求(类似 ERP 系统) 1 、该系统可能会调用其他新增系统的 webservice 接口。 实体表可能会逐步增加字段以保存调用结果(结果主要用于显示在前端界面表格里) 增加字段、调用 webservice 操作、显示调用结果只需客户自己的维护工程师实现,无需修改中间件及前端代码 2 、尽量采用 C/S 模式(前端要调用某系统 dll ) 3 、数据库及中间件尽量使用免费的( mysql ) 4 、插件式框架
目前想到的两个方案,但都没有实现数据库的要求: 1 、winfrom->WCF->SQL Server(存储过程)->clr 函数->其他系统 webservice->保存结果->SQL Server(存储过程)返回结果集->WCF-winform
2 、eclipse RCP->EJB->Oracle(存储过程)->loadclass->其他系统 webservice->保存结果->Oracle(存储过程)返回结果集->EJB->eclipse RCP
请教各位有没有更好的建议啊?(捂脸)
1
dilu 2020-05-09 09:47:25 +08:00
你这个需求的核心是:以后这个系统能自己维护自己,不需要再找人维护
让我不禁想起了以前接的一个私活:商品页面跟淘宝一样,我想做成什么样就能做成什么样 |
2
fancy111 2020-05-09 09:52:44 +08:00
有点类似模块化,但是你说的确实不太清楚。
|
4
wind9527 2020-05-09 10:00:19 +08:00 via Android
写个动态 SQL 解析器,让客户自己在页面写 SQL 维护业务
|
6
thinkif 2020-05-09 10:02:44 +08:00
建议:winform -> WCF -> 其他系统 webService ->获取到数据(如果不需要保存就不要保存到库)->格式化数据并返回结果集 -> winform 展示数据
目前在做类似的,不过是需要在移动端使用,并且还需要以表格或数据可视化的形式展示。 做法就是写一套中间件适配配置好的数据源,在管理端配置数据或图表的展示形式、查询条件、分页、传入参数等等,在移动端针对选择的展示形式显示出来,如果有参数或者查询条件也传入到后端,后端验证解析后返回显示结果。 查询过程直接调用数据源,不需要存储到本地库中,由于配置内容繁琐,所以以 JSON 的方式存储,以应对随时可能发生的变化。 |
8
xuanbg 2020-05-09 10:47:34 +08:00
这不是维护一下实体类并相应修改一下表结构就行了吗?前端根据实体类反射生成表单录入界面?
|
10
xuanbg 2020-05-09 11:05:27 +08:00
@Roarbit 那就用字典,做个字典配置表来定义 key,用户维护这个表就行了。程序根据约定的关键词,如表名读取配置表得到 keys 就可以处理数据了。
|
11
thinkif 2020-05-09 11:17:19 +08:00
@Roarbit #7
需要存的话,那就需要在你的库中建立对应的结构或者通用的结构,还需要校验哪些是存过的以避免重复,如果这也需要用户自定义的话,这部分逻辑会有点繁琐,并且出于性能考虑还可能需要根据业务设定分表(或分库) 总之你需要在中间件层面抹平对接的差异 这种业务不建议每个结构都要有独立实体类了 SQL+动态映射+JSON 输出 |
12
lidlesseye11 2020-05-09 14:28:11 +08:00
简单粗暴,表里加冗余字段。。col1,col2,...,col100 先搞上百十个,真能用完了再说。。。(有的祖传 ERP 就是这么做的(@_@;)
|
13
12tall 2020-05-09 17:27:42 +08:00
查询的话直接序列化 DataTable 是可以的,保存的话 C# 好像有动态类,不知道是不是可以利用反射做(说实话对 C# 了解得不深,蹲一个答案
见过很多如 #32 楼所说的,数据类型都是字符串 |
15
namelosw 2020-05-09 18:15:09 +08:00
是我没看懂嘛?
感觉多个 KV 表就行了啊,读出来变字典扔到前端,前端遍历画表,提交的时候再提回来写回这个表就 OK 了。 比如你有个 Person 的表,但是实际字段不存那个表里,存在另外这样的表里: id personId key value 1 1 firstName John 2 1 lastName Smith 以后想加个 middleName 字段就加一行就行了啊。 如果不需要索引甚至不需要另一个表直接 JSON 扔到一个格子里就行。 |
16
rooob1 2020-05-10 09:33:55 +08:00
我也感觉这是常规需求,一点也不奇葩。实现起来也不会很复杂。
1 、webservice 获取数据,解析数据有多少列,大概字段类型,例如都用 varchar 也行。 2 、判断当前缓存表是否存在或者字段是否匹配,create table 或者 alter tabel 调整缓存表结构适配字段,将数据存入 前端按照表 select * 返回的结果集展示就行了。c/s 的不知道有啥,但是 b/s 的一大把,例如 layui.table 就很容易根据接口返回多少列就展示多少列 |