Fork me on GitHub

【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:0.概述

项目Logo
欢迎阅读我的开源项目《迷你微信》服务器《迷你微信》客户端

序言

帖主和队友仿制了一个简单版的微信,其中,队友是用Unity3D做前段,帖主用Java的Mina、Hibernate和Spring做的后端,前段的博客链接将在队友写好后提供。下面先讲讲帖主在编写前后的经历和遇到的问题(通篇都是废话╮(╯▽╰)╭,请直接戳下一篇).

一开始帖主的队友提议做仿制一个微信的时候,帖主稍微一想,微信不就是一个好友名单,然后消息对发么,还有啥?哦,还有个朋友圈,也就这点东西吧。后来经过讨论,发现微信的功能还真是不少,且不说基础功能的好友,聊天,群聊,细致的分下去其实还有登陆,注册,添加删除好友等等……关键还在于项目的语言通用性,因为前端和后端不适用同一种语言写的,协议等等的处理也是挺麻烦的,最后,这也是一个对各个框架工具的学习机会。所以帖主的艰辛旅程就此开始。

目录

【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统 :1.技术简介之Mina连接
【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:2.技术简介之MinaFilter(1)
【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:3.技术简介之MinaFilter(2)——LoggingFilter
【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:4.技术简介之Spring
【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:5.技术简介之Hibernate
【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:6.技术简介之Protobuf
【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:7.项目介绍之架构(1)
【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:8.自定义传输协议
【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:9.观察者模式
【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:10.项目介绍之架构(2)
【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:11.定制化Log输出

项目后感——技术

博主在做这个项目时,所使用的有些技术都是零基础的,就想着:“东西那么多,等要用的时候再去查吧”,于是由于对所使用技术的不了解,项目的设计各种不合理,在队友指出来后,才渐渐懂得那句话“磨刀不误砍柴功”。有些东西可以在使用的时候不懂再去了解,但是若是我们根本不知道它的存在,又将如何?况且,若是不能对所使用技术有个整体的认知,如何合理的使用它(不与其设计目的相悖),还可能出现我们花费大量时间去实现该技术已经实现的模块,这对自己的学习发展以及项目的进展改善是很大的阻碍。

在做项目前,应该要对项目所使用的技术有个整体的了解,细节方面比如哪个细节如何实现,这些秒一眼便好,且不说全看时间不够,就算认真看了——博主表示记忆力是硬伤(~ ̄▽ ̄)~。有了整体的了解后,首先需要对项目整体架构进行一次划分,然后根据需求,确认需要使用的技术,再根据要使用的技术,将架构改为能够完美融洽所使用技术的方案。如果不能有个大概的规划,可能会出现项目进行到一半时大改的状况。

项目后感——生活

在这里博主有点小小的经验跟大家分享一下,在一个合作的项目中,往往交流的成本是很大的,不像一个人独做项目时的随心所欲,无论是协议、接口、架构等等理由都能从讨论升级为争吵,因为在每个人的心中,都不希望自己所做的东西被否定,一旦被否定,可能因为情绪和自尊的原因无视问题本身的对错坚决抗争。在这一点上,博主有个小小的建议:

  • 如果你觉得对方是错的,不一定需要与对方争到底知道对方认错。
  • 如果你已经发现自己是错的,又拉不下脸面当面认错,可以使用接口延缓战争,过后进行处理。

在第一点上,也许有一些朋友觉得自己是对的,对方不肯认错,一定是对方还不能理解到自己的错误,那么我有义务说服它。其实对方有可能已经意识到自己的错误,但在你的气势宏大,咄咄逼人的场面下,低头是需要很大的勇气的,尤其是在众人面前。

在项目上的争吵大家可以理解为“咱们是为了项目更好的发展才吵的 ”,不需要将其当做个人恩怨,博主在项目过程中经常与队友争吵,争吵的原因不重要,争吵的结果也不重要,但是在晚上“停工”后,楼主跟队友照样一起运动,一起打游戏,毫无隔阂,所以推荐大家如果可以的话,将工作与个人时间的一切分离开来。

多与队友沟通交流,在非项目时间一起活动(吃饭,运动),讨论时对事不对人,这些看起来无关紧要的东西,其实对于项目的进展以及项目的优化都是只管重要的,良好的信赖关系是合作的基础。

后话

一个项目结束了,博主在各各地方学习到很多东西(尤其是向队友),也发现了自身的许多不足,改进缺点是必须的,在下一个项目的开启之前,需要多去学习,积累一些技术基础,如果每次项目都是使用完全一样的东西,那么我们就白白浪费了整个项目周期的时间而学不到什么东西,也希望大家能提供一些建议,让我们共同的发展。

欢迎阅读我的开源项目《迷你微信》服务器《迷你微信》客户端

posted @ 2015-05-16 09:10  枫露霜阳  Views(2815)  Comments(7Edit  收藏  举报
View My Stats