奇葩需求请教

2020-05-09 09:38:11 +08:00
 Roarbit

最近接到个外包项目需求,比较奇葩,还没想到比较好的方案,跪求大神赐教啊!

项目需求(类似 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

请教各位有没有更好的建议啊?(捂脸)

3392 次点击
所在节点    程序员
16 条回复
dilu
2020-05-09 09:47:25 +08:00
你这个需求的核心是:以后这个系统能自己维护自己,不需要再找人维护

让我不禁想起了以前接的一个私活:商品页面跟淘宝一样,我想做成什么样就能做成什么样
fancy111
2020-05-09 09:52:44 +08:00
有点类似模块化,但是你说的确实不太清楚。
Roarbit
2020-05-09 09:57:59 +08:00
@fancy111 简单的说就是有任何务求基本上通过修改数据库表或存储过程就能实现
wind9527
2020-05-09 10:00:19 +08:00
写个动态 SQL 解析器,让客户自己在页面写 SQL 维护业务
ericgui
2020-05-09 10:01:51 +08:00
我前几天要求做一个类似阿里巴巴的国际电商平台。。。。
@dilu
thinkif
2020-05-09 10:02:44 +08:00
建议:winform -> WCF -> 其他系统 webService ->获取到数据(如果不需要保存就不要保存到库)->格式化数据并返回结果集 -> winform 展示数据

目前在做类似的,不过是需要在移动端使用,并且还需要以表格或数据可视化的形式展示。

做法就是写一套中间件适配配置好的数据源,在管理端配置数据或图表的展示形式、查询条件、分页、传入参数等等,在移动端针对选择的展示形式显示出来,如果有参数或者查询条件也传入到后端,后端验证解析后返回显示结果。

查询过程直接调用数据源,不需要存储到本地库中,由于配置内容繁琐,所以以 JSON 的方式存储,以应对随时可能发生的变化。
Roarbit
2020-05-09 10:44:27 +08:00
@thinkif 是需要保存到库的
xuanbg
2020-05-09 10:47:34 +08:00
这不是维护一下实体类并相应修改一下表结构就行了吗?前端根据实体类反射生成表单录入界面?
Roarbit
2020-05-09 10:51:26 +08:00
@xuanbg 改实体类就改源码了
xuanbg
2020-05-09 11:05:27 +08:00
@Roarbit 那就用字典,做个字典配置表来定义 key,用户维护这个表就行了。程序根据约定的关键词,如表名读取配置表得到 keys 就可以处理数据了。
thinkif
2020-05-09 11:17:19 +08:00
@Roarbit #7
需要存的话,那就需要在你的库中建立对应的结构或者通用的结构,还需要校验哪些是存过的以避免重复,如果这也需要用户自定义的话,这部分逻辑会有点繁琐,并且出于性能考虑还可能需要根据业务设定分表(或分库)

总之你需要在中间件层面抹平对接的差异

这种业务不建议每个结构都要有独立实体类了

SQL+动态映射+JSON 输出
lidlesseye11
2020-05-09 14:28:11 +08:00
简单粗暴,表里加冗余字段。。col1,col2,...,col100 先搞上百十个,真能用完了再说。。。(有的祖传 ERP 就是这么做的(@_@;)
12tall
2020-05-09 17:27:42 +08:00
查询的话直接序列化 DataTable 是可以的,保存的话 C# 好像有动态类,不知道是不是可以利用反射做(说实话对 C# 了解得不深,蹲一个答案
见过很多如 #32 楼所说的,数据类型都是字符串
12tall
2020-05-09 17:28:27 +08:00
@12tall 如 #12 所说。。。。
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 扔到一个格子里就行。
rooob1
2020-05-10 09:33:55 +08:00
我也感觉这是常规需求,一点也不奇葩。实现起来也不会很复杂。
1 、webservice 获取数据,解析数据有多少列,大概字段类型,例如都用 varchar 也行。
2 、判断当前缓存表是否存在或者字段是否匹配,create table 或者 alter tabel 调整缓存表结构适配字段,将数据存入

前端按照表 select * 返回的结果集展示就行了。c/s 的不知道有啥,但是 b/s 的一大把,例如 layui.table 就很容易根据接口返回多少列就展示多少列

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/669868

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX