100+个方法由100+个参数来对应调用,如何做才最合理

xq5236870 2014-07-31 04:44:35
业务大概如下,前端目前有30多个sockect服务发过来(考虑以后还会增加),每个服务假设都是唯一的,通过一个id来对应.而且对于不同的服务,业务请求也是不一样,我们需要应答的结果也是不一样的.目前思路有如下2点.
1.在数据库配置(配置文件也行).通过唯一的id,对应得到具体的实现类.然后动态加载类进行处理.
2.通过Spring bean配置.没增加一个新的sockect通讯,即在spring中增加一个bean,然后将bean的id设为xxxx+id的形式,通过手动的到bean来加载实现类.
PS:实际中可能出现一次100个以上的请求发过来.是否需要考虑并发情况.
有没有大神给点思路.或者给个建议那一个比较好
...全文
180 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
MiceRice 2014-08-05
  • 打赏
  • 举报
回复
引用 5 楼 xq5236870 的回复:
我现在的问题并不是处于这里..因为每个请求对应的操作都是不一样的.在逻辑中我该怎么处理,if else?就目前来说有50个不同的请求,难道我就要50个if else? 如果是100个呢?我现在的问题是,该怎么才可以避免这个问题的出现,比如我通过数据库配置,就可以通过请求报文中的id来找到对应的实现这个请求的方法从而进行操作.
这问题,我认为你有点把它想的复杂化了。设计模式中的Facade模式,就是应对这种问题的。 那么具体到操作层面,假如你不打算借助任何开发框架和组件的话,你可以这么做: 1、不同类型的请求,编制相应的请求类型ID,在请求信息中包含该请求类型ID;(相信你已经做到了) 2、编写50个服务类,最好是支持单例模式的,并继承自相同的服务处理接口;(相信你基本上也做到了) 3、建立HashMap,主键是:请求类型ID;取值类型就是:服务处理接口; 4、初始化50个服务器,全部放入HashMap中; 5、调用时你就: ResultVo result = map.get(服务ID).call(请求报文); 以上,有问题欢迎继续探讨。
xq5236870 2014-08-05
  • 打赏
  • 举报
回复
引用 4 楼 ldh911 的回复:
不知道所面临Socket请求是短报文请求还是长报文请求(一个请求几十个MB) 你的程序结构应该考虑设计为分层结构: 1、通讯层,负责接收大量Socket连接请求、保持连接、收发连接数据; 2、服务层,可以是一个线程池,负责处理请求服务,并返回结果。 通讯层接收请求,组装为完整的报文体(JSON还是VO对象随意了),然后转交服务层(你喜欢直接Java调用还是远程调用随意),服务层则安排线程去执行该请求,并将结果返回给通讯层,通讯层再发送给Client端。
我现在的问题并不是处于这里..因为每个请求对应的操作都是不一样的.在逻辑中我该怎么处理,if else?就目前来说有50个不同的请求,难道我就要50个if else? 如果是100个呢?我现在的问题是,该怎么才可以避免这个问题的出现,比如我通过数据库配置,就可以通过请求报文中的id来找到对应的实现这个请求的方法从而进行操作.
业余草 2014-08-01
  • 打赏
  • 举报
回复
mina官方公布一台电脑大约可以连接10w个socket。这只是官方公布,实际上达不到,但是我们自己使用的,做的次一点的话,差不多5k个还是随便做的
xq5236870 2014-08-01
  • 打赏
  • 举报
回复
引用 1 楼 xmt1139057136 的回复:
这个,感觉没有必要吧,100个socket,不算多吧,一版设计就可以了
敢问版主那具体要用哪一个思路做...目前来说100个socket 业务是会扩展的..敢问版主有没有好一点的思路
MiceRice 2014-08-01
  • 打赏
  • 举报
回复
不知道所面临Socket请求是短报文请求还是长报文请求(一个请求几十个MB) 你的程序结构应该考虑设计为分层结构: 1、通讯层,负责接收大量Socket连接请求、保持连接、收发连接数据; 2、服务层,可以是一个线程池,负责处理请求服务,并返回结果。 通讯层接收请求,组装为完整的报文体(JSON还是VO对象随意了),然后转交服务层(你喜欢直接Java调用还是远程调用随意),服务层则安排线程去执行该请求,并将结果返回给通讯层,通讯层再发送给Client端。
业余草 2014-07-31
  • 打赏
  • 举报
回复
这个,感觉没有必要吧,100个socket,不算多吧,一版设计就可以了

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧