Martian 框架的建议征集帖

2020-08-16 21:43:27 +08:00
 Joker123456789

首先,我可能还是老规矩,要先解释一波,虽然我知道不喜欢的人也不会喜欢看我解释,但是我觉得还是有必要说一下的。

关于扩展性不够强

我不知道这个扩展性具体是指啥,是指以下这种情况吗?

  1. 我内置 httpserver,但是你想用 tomcat 可以自己切换?
  2. 我内置 durid,但是你想用 c3p0 可以自己切换?

如果你们指的是这种,那我可以很负责任地说,我从来没往这方面考虑,所以也就不会去做大家嘴里的扩展性,我始终坚持一个场景只提供一种解决方案,就像 iphone 只提供 faceid,不提供屏下指纹一样。

如果大家不认同这个理念,那我只能说我们的想法不同吧,可能聊不到一块。


如果不是指上面这些,而是指支持 kafka,支持 activeMQ,支持 mongodb 等,这些完全没问题啊,这些项目本来就是可以单独使用的东西,又不是必须跟 spring 整合才能用,都可单独使用了,你们还怕不能跟 Martian 框架一起用吗? 无非现在就是缺少几个针对他们的 starter+工具类嘛,导致整合会比较耗时,对不对? 但这是问题吗?我觉得这不是问题,只要有兴趣的人一起行动,各种 starter 肯定就满天飞了。

所谓的 spring 生态,其实就是这些开源项目开发了针对 spring 的 starter 和工具类嘛, 他们又不是软件和系统的关系,一个软件在 windows 上能跑,在 mac 上不能跑,这个别人拿生态来说事,我还能理解,但是 kafka 和 spring 是这种关系吗?肯定不是啊。

接下来是意见征集

我经常听到有人说 这个框架功能少,不够用,所以这个帖子我主要是想来听一听具体的一些干货。

我承认 我是井底之蛙 ,见识不够广,所以我希望大家来指正我,拜托了,但同时我也请大家注意礼貌。

请说出 用这个框架无法满足,或者很难满足的场景,数量不限,越多越好,但必须是 web 开发这个方向的哦

然后我有几个小小的请求,希望大家见谅

  1. 希望大家可以说出正经的干货,如果光是一个劲的说,辣鸡,或者功能少,却不说到底什么场景下不够用,那我可能无法认同你们的吐槽,望见谅
  2. 我希望听到的是业务场景,而不是技术需求,比如有人喜欢把页面写在 java 项目里用模板引擎,又或者有人喜欢 jsp,这种就不要说了,因为这是技术需求,不影响业务实现,用前后端分离完全可以实现业务需求,所以这一类的东西不能算缺陷,只能说没有满足部分人的喜好吧

项目官网:http://www.mars-framework.com

2310 次点击
所在节点    Java
14 条回复
xihefeng
2020-08-16 21:57:40 +08:00
感觉楼主的确是一个喜欢钻研技术的人,前面看过一点你的框架,主要是感觉挺适合做技术的研究,但是放到生产还是有些虚。另感谢楼主的分享!加油!
sagaxu
2020-08-16 22:13:13 +08:00
卖点是什么呢?性能更强?内存占用更低?实现同样功能比 springboot 少写代码?
micean
2020-08-17 00:34:44 +08:00
我认为个人框架首要考虑的不是扩展性和生态,而是你的框架是否能解决某种特定需求并且比其他框架做的更好
xuanbg
2020-08-17 08:23:38 +08:00
楼主还是先说一下你的初心是什么吧。譬如你就想打造一个轻量级的框架,我们吐槽你功能不够多岂不是鸡同鸭讲?浪费我的时间也浪费你的时间,还让大家显得生分,这就很不好。
rancc
2020-08-17 11:33:23 +08:00
楼主,本人 java 菜鸡。下载 https://github.com/yuyenews/Mars-Example 启动 main 方法后下一步怎么做?麻烦完善下 demo 的 readme 文件。
启动 Mars-Example 后后台报错,页面返回 {"error_info":"服务器上没有相应的接口","error_code":500}
rancc
2020-08-17 11:38:52 +08:00
@rancc 说错了。是访问 localhost:8080 后台报错
industryhive
2020-08-17 11:44:00 +08:00
任何能给开源世界做贡献的人我都非常敬佩!楼主加油!
Joker123456789
2020-08-17 12:38:56 +08:00
@rancc 必须请求具体的接口,根目录是不支持访问的。
rancc
2020-08-17 17:29:23 +08:00
@Joker123456789 例子中的可用访问 api 的地址是什么?
Joker123456789
2020-08-17 21:22:32 +08:00
@rancc 在 api 包里面的 ExpApi 接口里面有很多方法,方法的注释里 标注了如何请求
monkeyWie
2020-08-17 21:35:31 +08:00
刚刚随便看了看,有几个槽点:
1. 用的 com.sun.net.httpserver.HttpServer,这在非 sun 和 oracle JDK 上可能直接就运行不起来
2. 路由匹配目前好像是用 HashMap 做的,没有用 tire tree
3. 文件上传的实现为了不引入依赖,直接复制了一堆 Apache commonfile 的源码
4. json 序列化目前固定成了 fastjson,想换成 jackson 怎么办
5. 好像不支持支持 /user/{id} 这种路由的写法

想说的是:
造轮子学习技术可以,但是没有很明显优势的话别人为啥用,springboot 它不香吗?要高性能的话 vert.x 或者用 golang 不香吗?
rancc
2020-08-18 11:05:31 +08:00
@Joker123456789 好的。
测试的问题,源码 install 的时候测试不通过:com.mars.common.test.util.MarsAddressUtilTest#testGetLocalIp 方法里写死了本地 ip
测试这么写不合适吧
Joker123456789
2020-08-18 11:50:57 +08:00
@monkeyWie

嗯,我简单回复下吧:

1. 没打算支持 sun 系 以外的 jdk
2. 路由匹配这个,感谢你的建议,我稍后研究下
3. 这个还真不是为了不引入依赖,而是 common-fileupload 依赖 servlet,而我又丢弃了 servlet,不得已复制源码进行修改

4. 想用 jackson 的 用就是了啊,不管是 maven 还是 java 都没限制一个项目只能引入一个 json 解析包吧? 想用 jackson 那就直接用好了,完全没问题啊,我完全无法理解这个槽点。 如果有洁癖的,不想看到一个项目里有两个 json 解析器,那大可选择别的框架,只是个 util 而已,这么纠结干嘛呢。 除非这个东西本身存在致命的缺陷,否则那就是各有千秋的事,说到底就是个人喜好嘛,我框架里用 fastjson 来处理数据,你自己写业务用 jackson 处理,一点问题都没。

5. 这个故意不要的,传参统一用对象,我连 requestBody,requestParam 这一类的注解都丢弃了,框架自动根据 Content-type 判断如何解析。 如果你不喜欢,那我只能说很遗憾吧,你可以选择别的

别人用不用,不是我关心的,我只是开源出来,并推荐给大家,springboot 很香,那用 springboot 就好了嘛。vert.x 很香,那就用 vert.x 好了嘛

开源项目本身就是随缘。
Joker123456789
2020-08-18 11:52:55 +08:00
@rancc 不需要自己 install,jar 包都传到 中央库了,直接用即可。

单测这个问题,如果 ip 不写死,那这个单测就没意义嘛。两个用来比较的值都是获取出来的,我怎么知道对不对呢。肯定是拿获取出来的值,跟实际的值做比较嘛,而实际的值 就得手工查看,然后写进去。

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

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

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

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

© 2021 V2EX