代码改变世界

学习手札#3 NHibernate缓存

2010-06-06 00:49 by xiaosonl, 332 阅读, 0 推荐, 收藏, 编辑
摘要:NHibernate主要有三种缓存: 1. 一级缓存. 一级缓存的生命周期和作用域只在同一Session中, 以[主键-对象]方式存放. 2. 二级缓存. 二级缓存的生命周期和作用域在同一SessionFactory中, 同样以[主键-对象]方式存放.  二级缓存的读取读取优先级不如一级缓存高, 所以当SessionA和SessionB中都存在同一对象的一级缓存时, 其中一个Sessi... 阅读全文

产品的简单性

2010-05-31 14:29 by xiaosonl, 367 阅读, 0 推荐, 收藏, 编辑
摘要:产品的简单性,包括功能上的简单和非功能上的简单。 功能上的简单,指产品使用简单,上手容易,一看即会操作,功能无歧义。 非功能上的简单,多指设计上的简单,易懂易维护。 这两方面的简单性很难兼顾,功能上的简单,可能掩盖着复杂的设计。比如ASP.NET的WebForm,使开发网站项目变的跟WinForm一样简单,但是WebForm的设计是很复杂。相比ASP.NET MVC,虽然使用繁琐,但是设计清... 阅读全文

关于过度设计的思考(上)

2010-05-30 15:18 by xiaosonl, 624 阅读, 0 推荐, 收藏, 编辑
摘要:设计是一个取舍的过程,无论是过度设计还是设计不足的问题,都是取舍的结果: 1. 如果不预先设计,随着时间越久,更改成本越大 2. 如果预先设计,会增加当前程序的复杂度 这种取舍没有放之四海皆准的标准,需要根据不同项目不同人员做选择。在我开发经验当中,总结几条参考标准: 1. 可隔离的实现不做优化设计,当性能需要时再进行优化,需要单元测试支持。 2. 如何为扩展性预留设计? 这是个很纠结... 阅读全文

让ASP.NET MVC的Controller输出不同类型数据

2010-05-30 13:58 by xiaosonl, 1200 阅读, 0 推荐, 收藏, 编辑
摘要:ASP.NET MVC中,可以通过返回不同类型的ActionResult来输出不同内容,比如ViewResult会输出视图页,JsonResult会输出Json数据等等。 而有时会遇到同一个Controller需要支持输出不同类型的情况,比如正常查看一个用户的资料页时, 用/User/{id}就可以访问到;而在JavaScript或其它系统中需要查看用户资料,又希望/User/{id}能返回Js... 阅读全文

学习手札#2 故事点和小时数的思考

2010-05-26 21:27 by xiaosonl, 267 阅读, 0 推荐, 收藏, 编辑
摘要:故事点与小时数这两种度量单位,最大的区别在于, 故事点数是整个团队中通用的度量方式,不会因为经验、个人技术水平或团队某个人而受到影响。比如第一周完成的故事点和第二周完成的故事点差不多,就可以基本认为两周的任务完成量相当;而如果第一周所消耗的小时数和第二周差不多话,是很难能确定工作量也差不多的,因为这些小时数可能是由不同的人来完成的,即在相同的时间内的完成量是有差异的。 但是评估故事点却不是一件容... 阅读全文

学习笔记#1 键值对数据库

2010-05-26 01:10 by xiaosonl, 3420 阅读, 0 推荐, 收藏, 编辑
摘要:1. 数据库有大量写操作时,应用键值对数据库(以下简称KV)能明显改善性能。关系数据库是靠索引来实现快速检索,如果有大量的写操作,维护索引会是笔不小的开销。 2. 使用KV时,应用程序要尽可能的避免表关联查询,比如可以用双向冗余存储关系来借代替表关联,把操作分解成单表操作。单表操作不仅查询性能飞快,而且可以容易实现数据量无限扩容。 3. KV数据库有着天生的伸缩性,相比关系数据库的群集,要简单... 阅读全文

SQLite数据迁移

2010-05-20 16:15 by xiaosonl, 1119 阅读, 1 推荐, 收藏, 编辑
摘要:中小型项目使用SQLite做为数据库,做降低部署和维护的成本。随着日后项目不断更新扩展,SQLite可能无法应付程序的负载,尤其是写入操作较多的时候。此时就需要迁移至更高性能的数据库,比如MS SQL之类的。 在迁移过程中,除了程序上要做适当变更之外,原SQLite数据的导入也是个麻烦的问题,好在有一款专门针对SQLite导入其它数据库的工具DBConvert,支持从SQLite导入至其它多种数... 阅读全文

探讨一种在Silverlight不普及情况下的部署策略

2010-04-30 16:09 by xiaosonl, 2134 阅读, 2 推荐, 收藏, 编辑
摘要:之所以要一直说这个问题,是因为现在太多的用户反馈一个B/S平台还需要安装一个几M的软件,感觉很别扭,甚至有所排斥。这个一部分是我的用户计算机水平不高的原因,另一个就是Silverllight的装机量在国内实在太少太少。如果一个 B/S产品在使用前都要下载安装一个运行时,那和C/S产品又有何区别呢? B/S产品的优势就在于可以随时随地的访问,至于跨平台性,我想在国内是可以暂时不必考虑的。 C/S... 阅读全文

有用的文档

2010-04-30 00:33 by xiaosonl, 348 阅读, 0 推荐, 收藏, 编辑
摘要:我是个反文档主义者,最主要的原因是因为我很懒,其实是不会写。随着开发项目的越来越大,开始认识到有些文档是不得不写的: 一. 常规的有用文档 1. 记录需求的文档,一切之起源,比如Scrum中的Backlog。 2. 记录跟踪BUG的文档或工具,这点重要性勿容质疑。 3. 描述高层次架构设计的文档,虽然面对面交流比文档要好,可是对于架构这种涉及关联复杂,跨时间性长的文档,是必需要用文档描述的... 阅读全文

Silverlight产品布署策略

2010-04-09 11:39 by xiaosonl, 501 阅读, 0 推荐, 收藏, 编辑
摘要:Silverlight产品在布署时,存在以下两个问题: 一. Silverlight运行时的装机量不足 Silverlight有个很尴尬的局面,由于Silverlight的装机量在国内不高,导致虽然是B/S产品,却几乎都要让用户使用前安装一个大几M的运行时,造成了用户的抵触心理。 解决方案: 既然没有B/S的优势,就干脆当C/S产品布署。因为Silverlight支持本地布署,原理就是将X... 阅读全文