摘要: 上文对RSS的使用作了简介,现在对RSS的原理作个简单的介绍。首先应该了解到,你发表的博客内容(比如标题、作者、分类、发表时间、正文、Tag等信息)都会被保存到永久介质上(比如后台数据库、文本文件等,一般是关系型数据库)。现假设你的博客系统使用的关系型数据库,并且保存分类和文章的数据表有如下的数据:【“博客分类”表(Categories)】IDCategoryName1.N... 阅读全文
posted @ 2009-05-15 14:46 dax.net 阅读(4769) 评论(0) 推荐(0)
摘要: 本文将简要介绍接口的显式实现。 先看下面的代码:interfaceIInterfaceA { intGetValue(intx); } interfaceIInterfaceB { intGetValue(intx); } classConcrete:IInterfaceA,IInterfaceB { } 在上面的代码中,Concrete类同时实现了IInterfaceA和IInterfaceB。... 阅读全文
posted @ 2009-05-12 20:11 dax.net 阅读(751) 评论(0) 推荐(0)
摘要: 轻叹世间事多变迁。有着传奇历史的Borland软件公司被英国Micro Focus公司以7500万美金的价格收购了! 记得李维先生曾经写过一本《Borland传奇》的书,当时(大概是2003年的时候)特别火,我也买来了一本,那是我能够静下心来通篇阅读完的第一本讲述IT公司经历的书。书中讲述了Borland公司的创建、发展以及其产品在商场局势影响下的发展路程。我关注Borland,是因为其具有传奇色... 阅读全文
posted @ 2009-05-11 08:31 dax.net 阅读(597) 评论(0) 推荐(0)
摘要: 我想业内人士和具有WEB专业知识的朋友对“RSS订阅”应该已经非常熟悉了,但更多的网友或许对这一有趣的事情无法理解,甚至根本没有听说过。今天从应用上简要介绍一下RSS订阅。 在WEB 2.0时代,博客已代替原来的日记,成为众多网友发布自己的日记、文章、评论和最新生活动态的主要场所。博主自然希望自己的博客能够被更多的朋友关注和收藏,而另一方面,自己也希望去关注他人的博客。早段... 阅读全文
posted @ 2009-05-08 15:52 dax.net 阅读(1232) 评论(0) 推荐(0)
摘要: 在 上文中,我发布了一个在WLW中插入语法高亮代码的插件,该插件使用table的HTML 标记来分隔代码与行号。这样做的一个问题是,针对不同的博客主题,行 号列的宽度可能需要手动调整,而且大量的<td></td>标记使得博客文章变得很大。为此,我修改了插件源代码,使用空格来分隔代码与行号。这样做其实也有弊端,比如代码折行的时候,折行后的第一个字符会与行号的第一个字符同列,这... 阅读全文
posted @ 2009-05-06 11:03 dax.net 阅读(607) 评论(0) 推荐(0)
摘要: 最近在安装一台Windows Server 2003的虚拟机,打算在这台虚拟机里安装SQL Server 2005、Visual Studio 2008,并部署Dynamics AX 2009 + EP,以便学习之用。弄到一半发现原本分配的20GB硬盘文件(动态模式)容量不够了,而Virtual PC又无法调整vhd文件的容量,因此只能通过internet寻求方法。 上网找到一个vmToolkit... 阅读全文
posted @ 2009-04-02 14:46 dax.net 阅读(2337) 评论(0) 推荐(0)
摘要: 在DDD中,实体(Entity)、值对象(Value Object)和服务(Service)是领域模型的基本元素;而数据传输对象(Data Transferring Object,DTO)只负责保存数据,以便数据在层与层之间进行传递,这是前两者与DTO的主要区别。理解实体与值对象 实体是我们在做开发的时候经常遇见的领域对象,比如上文成绩管理系统中的“学生”就是一个实体,因为... 阅读全文
posted @ 2009-03-31 10:22 dax.net 阅读(3064) 评论(1) 推荐(4)
摘要: 简单的说,软件开发的目的就是通过计算机解决某一领域的实际问题。这样的定义已经将我们的立足点置于领域层面了:我们需要关注的是领域本身,而不是其它的技术细节。很多人拿到需求,很喜欢从建立数据模型开始,画出数据模型图、ER图,考虑数据库表的结构,以便开始软件设计。比如,假设现在要设计一套简单的学生成绩管理系统,就管理学生各科的成绩,我们都会毫不犹豫的设计三个数据表:Students(用于保存学生信息)、... 阅读全文
posted @ 2009-03-10 15:59 dax.net 阅读(1025) 评论(2) 推荐(0)
摘要: 用于在.NET下快速开发控制台应用程序的Adaptive Console Framework框架再次有了新的版本(版本号:3.5.3286.17617)。有兴趣的朋友可以点击这里直接下载安装包使用。与上一个版本(版本号:3.5.3253.15384)相比,最新版具有如下几个更新:将框架DLL、演示程序和文档分别打包发布,允许用户根据自己的需要下载ACF的相关组件。针对初级用户提供了InstallS... 阅读全文
posted @ 2009-03-08 11:31 dax.net 阅读(372) 评论(0) 推荐(0)
摘要: 最近在看一些.NET Ajax的东西,发现一个小问题,就是当我在将TextBox的ReadOnly属性设置为true的时候,使用CalendarExtender后无法获得TextBox.Text的值。 在选择日期的时候,不允许用户修改TextBox里的值,这是比较常见的一种做法,目的是不希望再对用户的输入做进一步的格式验证。请看下面的代码:view plaincopy to clipboardpr... 阅读全文
posted @ 2009-03-06 15:06 dax.net 阅读(1091) 评论(0) 推荐(1)
摘要: 在软件系统的整个开发过程中,需求分析是非常重要的一个环节,这一点大家都知道,这句话估计很多人都能脱口而出;然而在实际应用中,却往往容易被人忽视。为什么会出现这种情况呢?我想这也是可以理解的。理论毕竟是理论,与实际应用会有所偏差。比如一些外包项目,由于时间的紧迫,团队必须在较短的时间里做出最快速的反应,如此一来,诸如需求分析、文档管理等过程就会出现混乱,甚至是“避而不谈”,等... 阅读全文
posted @ 2009-03-06 14:12 dax.net 阅读(588) 评论(0) 推荐(0)
摘要: 从本文开始,将会有一系列的文章介绍领域驱动设计在.NET中的实践,并探讨在.NET环境中实践领域驱动设计的最佳操作。领域驱动设计是一种新兴的软件设计思想,它不是理论,不是圣经,而是前辈多年来实践经验的总结。与模型驱动相比,领域驱动更关注领域,在架构大型软件系统方面,领域驱动设计更具有指导意义。 Eric Evans在他所写的《领域驱动设计:软件核心复杂性应对之道》一书中,详细地介绍了与领域驱动设计... 阅读全文
posted @ 2009-03-05 10:16 dax.net 阅读(779) 评论(0) 推荐(0)
摘要: 前段时间在网上看到了一款在WLW中插入语法高亮代码的插件,叫做Highlight4Writer,试用了一下,能够完成基本功能,但有一些不尽人意的缺点:1、插入的代码行间距太大,看起来不舒服,一页只能显示少量代码;2、支持的程序语言有限,无法自己定制;3、语言语法高亮颜色无法自己定制;4、无法显示行号。针对这些问题,我借用SyntaxBox的支持,自己开发了一款在WLW中插入语法高亮代码的插件。 下... 阅读全文
posted @ 2009-02-14 14:34 dax.net 阅读(687) 评论(0) 推荐(0)
摘要: 在一个星期不到的时间里,空闲之余仍然摆弄着Visual Studio 2008,反正一直都在感叹Visual Studio的强大功能,也一直在考虑一些有关用.NET构造大型企业级应用的基础问题。今天,暂且不提什么大型企业级应用,这也不是短时间能够思考清楚的,先拿Visual Studio 2008做些小东西,为Windows Live Writer开发一个插入计算结果的插件吧。 在我们平时写博客的... 阅读全文
posted @ 2009-02-12 08:16 dax.net 阅读(348) 评论(0) 推荐(0)
摘要: IoC/DI(Inverse of Control/Dependency Injection,控制反转/依赖注入)模式是一种企业级架构模式,通过将应用程序控制权反转交移给框架,并以构造器注入、属性设置器注入等方式将类实体注入到特定应用层中,最终实现层与层之间的解耦,使得应用程序获得良好的扩展性和应变能力。 客户需求如下:需要向系统中添加两个窗体,Engineers和Analysts,分别显示工程师... 阅读全文
posted @ 2009-02-07 21:31 dax.net 阅读(772) 评论(0) 推荐(0)
摘要: 很多IT行业的读者,如果有过一些面试经验的,都会被问到一个经典问题:什么是类库?什么是框架?两者有什么关系?我语文不好,要我用一句话去概括这个问题,恐怕也有点难度。就在此多花点笔墨,多写几句吧。类库 首先要谈到面向对象。为什么要面向对象?因为对象与其之间的关系能够客观地描述现实生活中的事物及其之间的关系。现实生活中的事物有如下特点:不同种类的事物,有着不同的属性,也有不同的行为。各种类的事物之间、... 阅读全文
posted @ 2009-02-07 20:43 dax.net 阅读(695) 评论(0) 推荐(1)
摘要: 实际开发过程中,一对多(1:n)的对象关系是非常常见的,比如销售订单(Sales order)下可以有多条订单行(Sales lines),这种关系可以直接使用数据库提供的主/从表关联关系实现。面向对象分析与设计思想并不提倡将数据库作为整个模块甚至系统设计的主要对象。例如,在处理多对多的对象关系时,数据库的简单关联就显得有点力不从心了。在这种情况下,设计人员不得不增加新的数据表,以便将多对多的关系... 阅读全文
posted @ 2009-02-06 15:10 dax.net 阅读(1063) 评论(0) 推荐(0)
摘要: 在上图中(点击查看大图),BrushBase的GetColor 是一个虚函数,为了提高封装性,我们在此将其定义为受保护成员(Protected)。GetColor 函数的实现部分被摆放在了BrushBase 的子类中,而BrushBase本身却用到了这个虚函数。在模板方法模式中,将GetColor 方法的实现称为延迟实现(Late Implementation),而将调用该方法的方法(BrushB... 阅读全文
posted @ 2009-02-06 15:07 dax.net 阅读(789) 评论(0) 推荐(0)
摘要: 上文已经提到接口的基本知识,以及如何从面向对象的角度去认知接口与抽象类的联系和区别。本文将从另外的一些技术角度来继续讨论接口和抽象类的取舍问题。首先,在C#中,一个类仅可以继承于一个基类(可以是抽象类,也可以是普通的非密封类),但是它可以实现多个接口。因此,当某个类需要同时拥有多种不同的操作时,封装这些操作的类型就不得不被定义为接口。例如,“学生”实体本身可以根据年龄来比较... 阅读全文
posted @ 2009-02-06 14:55 dax.net 阅读(573) 评论(1) 推荐(0)
摘要: 为了将问题描述清楚,我们先来看一个例子。在这个例子中,WinForm上有一个按钮,当用户点击这个按钮后,就会装载一个已经存在的Assembly,并且在界面的Label控件上显示出这个Assembly的FullName。对Reflection稍微熟悉一点的朋友都知道,这是非常简单的事情,只需要用Assembly.LoadFile方法获得Assembly,然后用FullName属性来显示即可,比如下面... 阅读全文
posted @ 2009-01-12 10:55 dax.net 阅读(1908) 评论(1) 推荐(0)