V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Roarbit
V2EX  ›  程序员

奇葩需求请教

  •  1
     
  •   Roarbit · 2020-05-09 09:38:11 +08:00 · 3365 次点击
    这是一个创建于 1666 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    16 条回复    2020-05-10 09:33:55 +08:00
    dilu
        1
    dilu  
       2020-05-09 09:47:25 +08:00
    你这个需求的核心是:以后这个系统能自己维护自己,不需要再找人维护

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

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

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

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

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

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

    SQL+动态映射+JSON 输出
    lidlesseye11
        12
    lidlesseye11  
       2020-05-09 14:28:11 +08:00
    简单粗暴,表里加冗余字段。。col1,col2,...,col100 先搞上百十个,真能用完了再说。。。(有的祖传 ERP 就是这么做的(@_@;)
    12tall
        13
    12tall  
       2020-05-09 17:27:42 +08:00
    查询的话直接序列化 DataTable 是可以的,保存的话 C# 好像有动态类,不知道是不是可以利用反射做(说实话对 C# 了解得不深,蹲一个答案
    见过很多如 #32 楼所说的,数据类型都是字符串
    12tall
        14
    12tall  
       2020-05-09 17:28:27 +08:00
    @12tall 如 #12 所说。。。。
    namelosw
        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 扔到一个格子里就行。
    rooob1
        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 就很容易根据接口返回多少列就展示多少列
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2621 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:37 · PVG 19:37 · LAX 03:37 · JFK 06:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.