摘要: 敏捷开发宣言 我们正通过亲身实践和帮助他人实践,揭示一些更好的软件开发方法,通过这项工作,我们认为:个体和交互胜过过程和工具可工作的软件胜过面面俱到的文档客户协作胜过合同谈判响应变化胜过遵循计划 虽然右项也有价值,但我们认为左项具有更大的价值。 —摘自Practices of an Agile Developer 阅读全文
posted @ 2012-03-22 21:00 Charles Yan 阅读(170) 评论(0) 推荐(0) 编辑
摘要: MVP+WCF+三层结构搭建项目框架(上) 在上篇文章中,我对如何在项目中如何运用MVP谈了自己的看法。在本文,我将会把WCF服务端加入进来,以面向服务的角度完善我的程序。 胖客户端与瘦客户端的选择 C/S模式的程序一般会有两种形式,一种是瘦客户端(Thin Client)形式,即客户端仅处理UI界面的交互,把所有和数据相关的业务逻辑都放在服务器。另一种是胖客户端(Rich Client)形式,即客户端不仅要处理UI界面的交互,而且要完成定制业务逻辑规则的工作。Thin Client形式通常会被认为是B/S模式,毕竟浏览器可以说是最瘦的客户端了。但随着云技术的发展和对分布式要求的不断... 阅读全文
posted @ 2012-03-19 08:48 Charles Yan 阅读(3480) 评论(8) 推荐(6) 编辑
摘要: 最近,我一直在重构之前做的一个项目,在这个过程中感慨万千。原先的项目是一个运用了WCF的C/S系统,在客户端运用了MVC模式,但MVC的View、Model耦合以及WCF端分布式欠佳等问题让我有了重构的想法,经过了一段时间的改造,逐渐形成了MVP+三层结构+WCF的面向服务的程序架构。在这里我把我的想法写成了一个例子,供大家参考。 在正式开始讲解之前,我必须得感谢Artech、代震军等诸多大虾,他们的文章给了我很大的启发。 我写的这个例子是关于博客管理的,逻辑很简单,就是用户发表文章、发表评论,管理员可以对用户进行管理。让我们先从MVP的运用开始讲起。 MVP与MVC的选择 关于M... 阅读全文
posted @ 2012-03-19 08:47 Charles Yan 阅读(5010) 评论(11) 推荐(6) 编辑
摘要: 此文是接着我上篇文章写的,我在上篇文章中讲了异步查询数据库的方法,但例子写的有些草率,我只写了一次查询,没能表现出异步方式无阻塞的优点,因此根据园友的反映,我又对原来的代码做了些修改,增加普通和异步两种方式对数据库的查询操作的示例,希望对大家有所帮助。 主要代码如下:1 /// <summary>2 /// 当点击执行查询时发生3 /// </summary>4 private void Button_DoSearch_Click(object sender, EventArgs e)5 {6 Application... 阅读全文
posted @ 2012-03-16 09:06 Charles Yan 阅读(5961) 评论(3) 推荐(3) 编辑
摘要: 以前在学习Socket的时候,经常会使用到异步操作,孰不知将异步用到数据库查询上也是一把利器,特别是在大数据量查询的时候效果应该是比较明显的。我顺便写了一个小例子,供大家参考。 我们平时默认使用的查询是同步的,也就是说一方不等待另一方做好准备,当查询时间过长时,客户端会被一直阻塞在这里而不能做其他事情。而当我们使用异步时,程序并不会阻塞或挂起线程,它会通过一个代理的回调方法完成查询,主线程将会继续执行,这样便解决了同步所不能做到的并行执行的结果。 代码如下所示: 1 public partial class AsyncSearchForm : Form 2 { 3 ... 阅读全文
posted @ 2012-03-15 08:41 Charles Yan 阅读(15800) 评论(21) 推荐(8) 编辑
摘要: 昨天,我把家里的主机清理了一下,那个脏啊,上次清理还是一年前,机箱里的灰尘可都够做一桌菜了,呵呵。我把CPU、内存条、显卡等都拔了下来挨个清理,可是费了好大功夫。我是一个DIY爱好者,在清理过程中不时感觉到自己攒一台机器真的很方便,可以按照自己的需求去购买配件,然后把他们组装到一起就行了,以后想要升级某个配件只需要将那个配件换掉就行了,而不需要去换整台电脑。想到这里时,突然发现这其中体现了好多面向对象的编程思想。想想,我们是如何组装电脑的,一块主板,上面有很多各种不同的插槽,可以插CPU、内存条等等,但主板厂商并没有把CPU和内存条直接焊接在上面,而是留出了不同设备的接口,因而各个模块被清晰. 阅读全文
posted @ 2012-01-28 11:10 Charles Yan 阅读(1860) 评论(14) 推荐(5) 编辑