Android与db4o的完美结合-Password Manager

cleverpig 发表于 2007-11-27 14:25:59
作者:cleverpig     来源:db4o社区
评论数:3 点击数:6,891     投票总得分:5 投票总人次:1
关键字:android,db4o,应用

摘要:

Password Manager项目代码是Steven Osborn编写的PasswordSafe(在Apache License下发行)的改写版,目前已经实现了在Android平台下的基本密码管理功能。项目源代码中使用db4o代替了SQLite,这样不但使持久化处理更为直观,而且使开发过程更快速、整个应用更加高效。
Android与db4o的完美结合-Password Manager

发布者:matrix


项目简介

这里提供的Password Manager项目是Steven Osborn编写的PasswordSafe(在Apache License下发行)的改写版,目前已经实现了在Android平台下的基本密码管理功能。项目源代码中使用db4o代替了SQLite,这样不但使持久化处理更为直观,而且使开发过程更快速、整个应用更加高效。

在这个项目中,你可以获得以下资源:

    * db4o与SQLite之间在基本持久化操作上的比较
    * 完整的Android示例应用代码
    * 应用运行时的视频演示

基本功能

本应用基本功能是安全地保存网站登录信息,例如URL、用户名、密码,它使用128位AES加密算法。使用者必需提供正确的密码才能访问应用,而密码被用于加密/解密应用数据。

这里提供了采用db4o技术的Password Manager在Android模拟器下运行的在线视频:
http://www.youtube.com/watch?v=UFSD44AcBwM

如果你下载了源代码(请见本页末尾的详细说明),那么你会看到原来PasswordSafe中的DBHepler类(实现SQLite下的持久化)已经被替换为Db4oHelper类(实现db4o的持久化)。现在,就让我为你展示db4o和SQLite在持久化处理上的不同之处吧。

SQL初始化开销

这是你需要在SQLite下初始化密码管理器SQL代码(表名、表创建命令等):
image
而下面是等价的db4o代码:
image
正如你所看到的,在db4o中无需预定义schema(你可以将db4o对象模式当作schema使用,并且在这种对象模型下进行重构是非常优雅的,甚至在一些简单的情况下是自动化的)。

数据库打开和创建机制

在SQLite中,你需要调用两种不同的方法,一种是创建数据库,另一种是打开数据库:
image
而在db4o中,你只需要调用openFile(),它将根据数据库是否存在来创建或者打开数据库:
image
也许这里的差别看起来无关紧要,但更简短的代码才是更清晰的代码!

更新和插入数据

使用关系数据库SQLite时,你需要根据具体情况传送插入或更新命令(完全正确地构造反射数据表字段的SQL字符串确并非易事):
image
这里是等价的db4o代码:
image
你是否发现了不同?db4o实际上是一种单行代码(one-line-of-code)的存储数据库。db4o自动检查对象是新的还是已存在的,并根据对象状态进行更新或者插入(我们只需要调用set操作)。值得注意的是,在上面的代码中我们手工提供了对象的新id,而db4o是可以将其配置为自增字段的。

查询所有记录

在SQLite中,我们不得不进行人工的对象关系映射:
image
而在db4o中,我们完全可以忘掉关系映射:
image
请注意:在上面简短的查询中,我们通过db4o的SODA查询了全部PassEntry对象,并将结果按照"id"字段进行排序(在上面的SQLite示例中没有排序)。

它不能再简单了!

通过字段查询单一记录

通过Id查询记录的SQLite版本:
image
下面是db4o版本,它使用了db4o三种查询系统之一------Exmaple(也称为QBE)代替前面的SODA进行查询:
image
可以看出这是多么短小、清晰的代码啊!

结论

我希望你已经通过以上短小的文档了解到了db4o的优点。你希望在应用中将持久化提升到一个新的高度吗?请现在就下载db4oJava版本或者.NET版本吧!它是免费的!

相关资源

    * db4o指南
    * 安装向导
    * 开发者资源

TODO

    * 使用XTEA替换自定义加密算法(XTEA能够提供数据库级别加密和IO加密,而不是字段级加密)
    * 提供检索功能(为了按名称进行过滤)

Steve的PasswordSafe项目发布在Google Code上,那里有更多的TODO:
http://code.google.com/p/android-passwordsafe/issues/

Bugs

    * 在密码记录编辑器中尝试编辑website输入框中的URL时会发生错误。

源代码下载

    Db4oAndroidPswMgr.Zip

本页页面地址:

投票评分(记入本贴作者的专家分)

     非常好 还行 一般 扔鸡蛋          投票总得分: / 投票总人次:

用户评论列表

#1 评论作者: Stive 发表时间: 2007-11-30 12:16 下午

Android使得Google又一次地站到了潮流的尖端……拭目以待吧,08年采用Android作为操作系统的手机大量出现的时候,一定会有更多精彩的!

#2 评论作者: chen88358323 发表时间: 2008-01-04 05:06 下午

cleverpig先生, 哪里可以和您做一些文字上的沟通呢,矩阵的blog访问不了,sohu的blog您只有9月的纪录。
这是我的联系方式,很期望能和您取得联系,期待您的回复!
QQ:82866019
E-mail:chch1020@163.com

#3 评论作者: asdsad 发表时间: 2008-04-16 03:25 下午

呵呵,不错足球比分白小姐心水论坛六合采赛马会六合彩香港六合彩香港总彩


发表我的评论 (评论可增加个人积分...)

用户*: E-mail:
评论内容*:

支持BBCode
算术题*: + =