实际项目使用Rop所发现的不足
stamen
2012-05-17
以下内容来自于jeast,我觉得很好,把它单独列出来回复:
最近在项目中使用了Rop框架,效果非常好,特别对服务异常体系规范、同时支持XML及JSON格式、安全的拦截机制等,大大提高了开发效率!但也发现在一些不足的地方: 1. 对输出格式绑定太死,虽然在大多数的应用中,输出XML、JSON格式足够用了。但不能限制用户选择其它输出格式,如输出图片、EXCEL等,至少要提供一个输出格式的扩展机制。像Jersey框架在这方面做得就比较好,任何格式都可以输出。 2. 对REST的服务接口入参及返回参数做了限制,目前只能是RopRequest、RopResponse子类。这样做虽然简单,但大大制约其灵活性。使用起来感觉特别不便。实际的应用过程中,接口的入参是多种多样的,有可能是一个参数、二两参数、N个参数,难道我每一种情况都要写一个类吗? 3. 对REST的URL中,只能使用xxx?method=xxx ,如果method可以让使用者修改,那就更好了。 4. 对输出XML格式时,需要对RopResponse的子类手工编写JAXB相关注解,对于输出复杂的XML格式时,这个过程非常繁锁,且容易出错。 如果能够封装一个根据XSD结构自动生成JAVA类,那使用起来就方便多。目前JAXB就有提供这样的小工具,如果能在这个小工具上做一个批处理工具,那就更完美了。 5. 缺少一个对服务容器的管理,如支持动态发布的服务、撤销服务、获取服务的注册表机制等。这对于一些要求扩展性比较高的应用来讲非常重要。在使用ROP框架中,也认真研究了这个框架,觉得提供这样的功能,应该是比较容易实现,不知作者是否有其它方面的考虑??? 6. 如果能对输出格式接口RopResponseMarshaller进行重构,并对RopResponseMarshaller实现类进行动态注入,这样使用者就可以编写个性化的输出格式转换器。 7. 希望能够提供一个获取HttpServletRequest方法。虽然一般情况下,很少使用到HttpServletRequest。但有些特殊的场景,如果需要用,但又无法获取,这时真是会让人抓狂!!! |
|
stamen
2012-05-17
引用 1. 对输出格式绑定太死,虽然在大多数的应用中,输出XML、JSON格式足够用了。但不能限制用户选择其它输出格式,如输出图片、EXCEL等,至少要提供一个输出格式的扩展机制。像Jersey框架在这方面做得就比较好,任何格式都可以输出。 -->这个需求不合理,Web Service不应该返回图片,Excel等格式,一定是以XML或JSON等文本报文格式交互。但是,可以这样做变通: 如需要图片时,通过Web Service请求一张图片,这时返回的响应报文是一个指示这个图片的url,如: <imgResponse> <imageUrls> <imageUrl url="http://www.yyy.com/1111.jpg"/> </imageUrls> </imgResponse> 然后客户端再根据这个url请求到图片(一般由一个单独的图片服务处理图片请求),这样保证了web service报文的纯洁性。 这也是淘宝等大型网站的做法。 引用 2. 对REST的服务接口入参及返回参数做了限制,目前只能是RopRequest、RopResponse子类。这样做虽然简单,但大大制约其灵活性。使用起来感觉特别不便。实际的应用过程中,接口的入参是多种多样的,有可能是一个参数、二两参数、N个参数,难道我每一种情况都要写一个类吗? 这个建议很好!目前确实不太灵活,不如Spring MVC的接口那样灵活,但是用个好处可以让开发很简单。 我后续会参考Spring MVC的实现,使服务方法的签名更加灵活些! 引用 3. 对REST的URL中,只能使用xxx?method=xxx ,如果method可以让使用者修改,那就更好了。 好的,后面我为Rop提供一个配置文件,使这些固化的东西都可以配置! 引用 4. 对输出XML格式时,需要对RopResponse的子类手工编写JAXB相关注解,对于输出复杂的XML格式时,这个过程非常繁锁,且容易出错。 如果能够封装一个根据XSD结构自动生成JAVA类,那使用起来就方便多。目前JAXB就有提供这样的小工具,如果能在这个小工具上做一个批处理工具,那就更完美了。 这个相当于是辅助工具,目前还没有时间去开发,参与Rop项目的开发者可以帮忙提供 。 引用 5. 缺少一个对服务容器的管理,如支持动态发布的服务、撤销服务、获取服务的注册表机制等。这对于一些要求扩展性比较高的应用来讲非常重要。在使用ROP框架中,也认真研究了这个框架,觉得提供这样的功能,应该是比较容易实现,不知作者是否有其它方面的考虑??? 这个是容器级的功能,需要在Rop之上开发出服务体系,这个目录还没有计划。 也请Jersey具体再谈谈需求和思路。 引用 6. 如果能对输出格式接口RopResponseMarshaller进行重构,并对RopResponseMarshaller实现类进行动态注入,这样使用者就可以编写个性化的输出格式转换器。 好的,我后面会通过统一的Rop配置文件,让这些接口的实现者都可以配置(或称注入),哈。 引用 7. 希望能够提供一个获取HttpServletRequest方法。虽然一般情况下,很少使用到HttpServletRequest。但有些特殊的场景,如果需要用,但又无法获取,这时真是会让人抓狂!!! 好的,这个我马上改一下! |
相关讨论
相关资源推荐
- java找不到第三方包_关于web工程实现动态编译代码,出现找不到第三方jar包的解决方案。...
- android拨号无反应 代码错在哪,Android电话拨号器运行不了!在网上找了很久也没找到解决的方法,求高手帮帮忙!!谢谢!!!...
- 超硬核十万字!全网最全 数据结构 代码,随便秒杀老师/面试官,我说的
- 【Java编程系列】gateway限流实践时发生的问题和解决方案
- 干货:在Flutter项目下安卓flavor打包配置实践
- 一些你不知道的事,findbugs的配置和使用
- Java小白入门200例84之Java对象类型转换向上转型和向下转型
- Android permission权限与安全机制解析(下)PACKAGE_USAGE_STATS以及悬浮窗
- ANR系列之七:ANR问题如何排查
- Android 异常解决方法【汇总】