个人技术规划

 

1 技术规划概述

未来的应用, 会更多的考虑移动设备, 因此, 架构以及相关技术或者是业务, 都会围绕移动领域展开。因此技术规划的总线路是移动应用方向。

 

1.      架构积累方向OSGI Cloud Server –Open API Client, 采用HTTP协议.

a)       Server端架构 定型为以OSGI为核心的可插拔的Cloud Server方案. 成为OSGi方向的专家, 有能力设计出运作良好的大型OSGI分布式框架系统。Server端和Client端不关心Client用什么系统, 采用什么语言, Client端和Server端是彻底解耦合的。

b)       Client架构 以HTTP协议为基础, 以Json作为C-S交互的主流模式, 尽量采用封装好的OPEN-API以支持多个终端平台。

 

2.      技术要素积累方向

a)       数据库技术

b)       Java与C的交互技术

c)       HTTP 通信协议

d)       OSGI知识

e)       Android OS相关技术

 

3.      业务积累方向

a)       工作中心: 机械工程行业中物联网相关方向

b)       业余工作兴趣: 关注教育教学行业

 

 

2 技术规划详解

技术规划分为三点的理由比较充分:

1.       框架作为首选项, 原因自然也很简单, 很多软件运作一段时间, 最后运维人员神经崩溃, 开发人员吐血身亡的事情屡见不鲜。作为一个做过二次开发, 接手过第二个版本开发(很少有第三个版本), 也运维过一些系统的开发人员。 一个不错的idea是: 如果你恨一个人, 让他去做第二个版本的开发吧!

2.      技术当然必不可少. 这里涉及到的是基本上所有软件系统能搞定的技术, 需要的技术, 并非那些世外高人的奇技淫巧。技术靠的是累积, 厚积而薄发。今天恰好是四年工作的纪念日(2007-710~2011-7-10). 所幸, 自己四年的时间, 都没有偏离这些基本技术。

3.      很抱歉, 再一次把业务放在最后边, 我知道这个是个错误。 但这次我会重视它。实际上这个才是重中之重。

2.1 架构积累方向OSGI Cloud Server –Open API Client

该方向有如下优势:

1.      Server端热插拔. 解耦合

2.      大部分的接入是通过移动端的接入, 鉴于手持端的特点, 不适合做计算量大的功能, 尽量将复杂的逻辑处理放置云端, 有利于节省手持设备的电量, 避免终端发热。因此计算保留在Server, 展示保留在Client.

3.      手持终端操作尽量要求简洁, 因此界面设计需要紧凑,从而不适合富客户端方式的架构设计,手持终端尽量降低复杂性。因此Client只做与平台相关的展示功能。

4.      每增加一个服务, 在原有的系统上要进行改动。 为了易维护(即改动最小), 客户端和服务器端尽量保持一方不需要改动(或者基本不改动),鉴于服务端的改动是必不可少的,因此,客户端简洁化,将有利于项目的持续维护。。

5.      客户端需要跨平台,但服务器端不需要跨平台,因此将维护和扩展工作放置在服务端,代价可以最小化。

6.      目前已经存在的优秀实践, 表明云端的架构对项目的后期发展更有利。目前大量的门户网站, SNS网站, 专有服务网站都提供类似“云端 + open API”的方式 , 典型代表有

a)       Google 系列: 如搜索引擎, Google 地图

b)       SNS系列: Facebook, Twitter, 豆瓣

c)       门户网站系列: 新浪微博, 淘宝

7.      系统发布出去后, 维护众多的客户端, 不如只维护服务端, 这样代价最小, 因此这样的方案。非常适合移动应用。

2.1.1 Server端框架

由于考虑的都是移动应用, 为了应对万变的终端接入方案(PC接入, 手机接入, 家用电子设备接入), Server端要足够灵活, 足够强大, 这就带来了一个问题: 足够复杂。 复杂性的管理, 无外乎细化, 细化的方式很多, 但对系统而言, 最需要做到的是:

1.      可插拔, 有插有拔, 才称之爽。某些交合的时候,拔不出来的案例, 实在是伤不起。

2.      重用性。为什么要做重复的工作, 我们需要更强大的开发效率。 重用性能带来的更大收益是稳定。Unix文化就是不遗余力的使用现有工具,于是不断稳定过来的。

3.      协同开发。各自开发一部分。 干扰性非常小。

4.      维护的需要, 出了问题, 不需要全世界找代码。

这个叫做OSGI的插件框架系统, 帮我们做到了。 初次使用它的时候, 仅仅需要一个1M大小的包, 对我来说,吸引力比较大。继而迷上了它。 现在准备不断进一步的学习它。

       比较欠缺的地方, 分布式方面的知识。 而这点, 又是极其重要的。 开始准备吧!

 

2.1.2 Client端框架

鉴于目前的众多优秀实践, 采用的都是以Json的方式进行服务端交互, 因此, 我们这里也不例外, Json相比于XML更加直观. 数据更简洁。 相比于二进制数据流, 更方便阅读和解析。 为了节约一丁点的流量, 采用二进制传输的方式, 是不值得推荐的。很多年前我们用机器语言进行编译, 原因是硬件效率受限, 3G时代已经到来, 为了节省几个byte的流量, 牺牲软件的可读性。同样也是不值得的。

 

2.2技术要素积累方向

需要专注的技术方向, 掌握这些, 项目就可以正常的实施起来了。

 

2.2.1数据库技术

了解数据库的基本使用, 就已经OK. 数据表大部分都是线性结构, 具体的应用而言, 这个比较弱, 因此要更多的了解表之间的交互

2.2.2 Java与C的交互技术

有效率需求的情况, 需要考虑用C来解决, 这些应用有:

1.      图像处理

2.      文本分析

3.      数据索引

2.2.3 HTTP 通信协议

不管是互联网, 还是移动互联网, 貌似这个协议都无法避免的。 这个协议的NB之处, 在于它能为每个连接保持Session, 所以, 抛弃裸的Socket, 代表更小的复杂性。

2.2.4 OSGI知识

毋庸置疑, 框架需要的技术

2.2.5 Android OS相关技术

1.      Market 运营策略

2.      Android OS是不错架构, 尤其是UI这个层面, 各个UI的管理和通信, 都非常不错。 值得深入学习。

你可能感兴趣的:(个人技术规划)