中国人应不应当自己开发对象持久化框架?(转载)
在软件开发过程中,我们经常会遇到需要把某些数据保存到可以长久保存数据的介质上,以便将来再次需要使用这些数据的时候能够及时的获取到。大多数软件系统都会把数据保存在以下这些常规的介质中:数据库、文件、XML等等。
由于现在较为流行的编程思想是面向对象的,也就是在软件运行过程中,会大量的操作对象,也有很多的对象的数据需要保存。因此就出现了如何将对象保存到这些持久化介质上的问题。通常情况下这些可保存数据的介质的数据结构往往都不是面向对象的。例如数据库,现在的主流数据库一般都是关系型数据库,数据的保存方式是一种非对象化的。在保存对象的时候就必然会出现转换和如何映射的问题。对象持久化框架就是专门用来解决这些问题的。
我们可以直接将对象通过序列化的方式转换成二进制保存到文件中,也可以利用XML序列化的方式将对象转换成XML文件。虽然这种对象持久化的方式行之有效,但是他的缺陷是安全性较差,占用空间比较大,所以我们在这里暂时不考虑这种对象持久化的方式。
当前最好的、速度较快的、较为安全的数据存储方式就是数据库,但是由于当前主流的数据库都是关系型数据库,并没有针对对象这种数据结构的存储方式,导致我们在存储对象的过程中会遇到很多的转换,以及需要大量的SQL语句支持。如果在业务逻辑层过多的使用这些底层的操作,就会大大影响了业务层的结构,而且使得程序的结构看起来非常的难懂和难以维护,这就造成了程序的复杂性只能局限在小的范围内。为了让业务逻辑能够适应更复杂的状况,以及让数据存储与业务逻辑之间达到低耦合的情况,我们必然要设计一个中间组件来封装这些繁琐的操作。这就是对象持久化框架。
对象持久化框架的概念并非是很新颖的,而且当前也已经有很多的公司或者个人在使用持久化框架进行开发。但是当前较为流行的持久化框架大多都是在Java环境下的,即便是有.NET环境下的,也都是沿用了Java下的功能。例如NHibernate,虽然是当前知名度和流行度比较高的,但是他也只是Java下的Hibernate演化过来的,除了少数一些兼容性的修改外,大部分的结构都没有什么改变。而且这些主流持久化框架一般都是外国开发的,主要的帮助文档也都是以英文为主,即便是有中文帮助也只是原文翻译过来的。介绍的也比较浅显,并且一旦出现深层次的问题,无法及时得到解决。虽然国内近期也有很多个人和组织推出了一些对象持久化框架,但是我们感觉国内在这方面的推广和讨论还远远的不够。我们对于对象持久化框架的使用还只停留在基本的单体添加删除修改等操作上。还没有完全将面向对象的思想吃透。因此我们想借助Epassion这个平台,为所有喜欢代码复用的朋友提供一个环境,使得大家可以在一种融洽的气氛下,深层次的探讨一些更加富有挑战性的技术问题。让中国制造的软件也能站在世界的舞台上。
中国现在基础性的工具已经普遍在采用外国的了,开发工具是用IBM、微软、SUN,Boland的,基础类库和开发语言也都是外国的,如果仅有的可以自主开发的第三方组件也都是用别人的。那么我们中国的程序员到底能做什么?我们就是在这种思考之下才考虑自己开发的,虽然我们技术还很欠缺,但是我们坚信如果我们团结起来,总会有一天会开发出真正属于自己的各种工具的。我感觉中国现在欠缺的是一种能够真正独立思考的程序员(包括我在内也欠缺这种能力),这个独立思考能力并非是做自己产品的时候独立思考的能力,而是在自己所使用的技术方面的独立思考能力。就是因为我们养成了拿来主义的习惯,导致我们逐渐连那些可以自己编写的东西都不去写了,慢慢的就丧失了对这些技术的主导作用,被别人牵着鼻子走了。
现在中国的程序员普遍存在这种心理,我发布一个自己开发的持久化框架的时候,都在说外国有成熟的先进的东西不用,为什么自己开发?确实那些东西比我的好,但是我不会去用,我只会去学习。我想做的就是掌握他们的技术,再进行自己的创新。如果从底层到高层所有的中国程序员都去这么想,那么我想很快中国就有了自己的开发工具、自己的语言、自己的第三方组件,到那时中国就会不会总是跟在美国的屁股后面了。当然这并非一个人的能力能够达到的,这需要所有中国的程序员一起的努力,所有的人都抱着这种态度和想法做事,每个人贡献一点点,那么就会为中国的软件业带来很大的进步。我们中国程序员是有这个能力和智商的。
国人当自强!
注:http://www.epassion.com.cn 这个网站是我发布我与几个志同道合的朋友开发的持久化框架的网站。希望大家来捧场,也希望有人能够加入我们的团队做自己的东西走自己的路。