最近参加了一个总署级的报关单质量二期工程,使用vs.net 2003做的,据说04年的一期项目还因涉及的应用广度和技术深度得到过科技类的一等奖,从技术上来说,确实用到了许多很好的技术。现在二期的工作主要是针对业务的变化和一些功能进行优化,仔细看看代码,有很多地方就是从现在的角度来看,除了硬件加大投入外,也已是极近性能优化的极限了。

     扯远了,既然是二期工程,而且是跨了4年的,那就肯定是要找回vs.net 2003来做,在项目中打算建立指定到E盘下的web应用程序,可是vs03中选项只有http://localhost/webapplication1,一指定路径右下角的确定按键就灰色的,根本没办法把web应用程序建立到E盘,问了一些同事,结果个个都vs2008了,对这也不懂,没办法,自己试试,磨了差不多一个下午,终于找到方法了,先在iis建立一个虚拟目录,然后把虚拟目录指向e:\***,最后在vs03中建立web应用程序,把该命名与之前虚拟目录的命名一致就可以了。

     做二期工程就是惨些,不仅啃一期的旧代码,有好多都是千行的cs文件,不过还好一期使用了许多模式来解决问题,理解起来也比想象中好些,这个二期工程一做就到农历年二十几,可怜我今年的年休假,没机会休了,只能小小呻吟一下。

posted @ 2008-11-19 23:11 JustForKim 阅读(166) 评论(0) 编辑

     前段时间回顾开发的一个项目,发现一些问题,使我对面向对象的应用有了新的理解。     先介绍一下这个项目,该系统主要是基于第三方系统的业务数据进行统计、分析和预警。这些业务数据实体较多、实体间关系复杂,并且有的实体表里的记录达到千万级别。

     其中一个功能需要将A表里符合一定条件的记录进行聚集操作,然后将B表里也做聚集操作,最后把A、B表聚集的结果通过某字段连接起来(实际情况比这个复杂)。一开始考虑使用面向对象来设计,把各个记录映射成实体类,然后对实体类进行统计操作,结果敲键盘码了几百行代码,而且测试起来性能也较令人担忧。最后实在受不了了,放弃一切皆OO的理念,使用了面向过程的存储过程,类似于select * from (select max(A.b),A.a from A group by A.a) Q left join (select max(B.n),B.m from B group by B.m) W on Q.a=W.m的sql。开发效率和性能一下就上去了,这类统计逻辑的实现基本全放弃OO,采用sql的方法解决。

     对这种情况,一开始感到困惑,为什么OO在这样场景的使用这样被动,OO不是告诉我们了表达和描述客观世界的办法了吗。后来查阅了大量的资料,进行了自己的思考:OO描述的是相互作用的事物的世界,最擅长于描述客观存在的人和物以及它们间相互操作的关系,这使得其在复杂多变的、多实体交互的流程逻辑上显得游刃有余,充分体现了其可维护性、复用性、可扩展性上。而在以数据库为主体,且包含了许多计算复杂度高功能的信息管理项目上,该领域对应的是一个面向关系的世界,表和表间的关系就是直接的、稳定的业务关系,在这种项目中使用多余的对象映射就会导致实现复杂度提高,OO的劣势大于其优势。

     所以,在不同的场景,应该做出适当的选择。OO也仅仅是解决方案的一种构思方式。虽然适合大多数情况,但不要唯OO是瞻,过分的放大OO的优点,而忽略其不足的地方。

posted @ 2008-10-10 11:36 JustForKim 阅读(2286) 评论(18) 编辑

    在RUP过程中,其以用例为驱动的特性保证了它在需求分析阶段一直走在用户的切实需求的方向上,那么如何进行用例获取才能达到有效和正确呢,以下是我理解上的用例的获取步骤和方法:

1、确定系统目标和边界(从项目立项上去了解,该系统在决策层的目标是什么?在这个目标下,系统属于哪种系统类型?);

2、识别系统外部参与者。确定系统涉众,用户组织的机构设置和岗位职能,按用户使用该系统的目的和动机划分用户类型,同种用户类型的用户识别为一种参与者(也可称为角色);

3、从各个参与者类型中选择一些用户代表

4、明确需求决策者决策过程

5、确定即将采用的需求捕获技术,例如:用户访谈、用户调查、现场观摩、阅读历史文档、联合开发会。并做好相应准备,包括找谁、获取什么东西

6、使用需求捕获技术对一部分高价值、高风险的用例进行开发并确定优先级。开发方法如下

     a、获取参与者的大颗粒的初始用例(业务活动)。了解参与者需要该系统为他们做什么,即参与者的目的和动机;

     b、了解参与者在a步骤下参与的原业务流程(事件序列或带泳道的活动图)识别各事件的参与者,以及参与者对原业务流程的不满和问题;

     c、与对原业务流程进行分析,运用信息化后,可以如何改进,得到新业务流程

     d、分析得出新业务流程的事件序列,查看是否冗余;

     e、使用自然语言来描述事件序列,每个事件序列对应一个细化的逻辑用例

     f、对逻辑用例进行分析和重组,使用包含、扩展和泛化来描述用例间的关系。

7、向参与者获取系统的质量属性和其他非功能性需求、系统约束,可写入用例表中;

8、评审用例模型的描述和功能需求;

9、澄清用户对需求的误解;

10、建立原型来想象未清晰的需求

11、使用测试用例对原型或需求描述来论证用例描述和功能需求

 

5~11迭代进行,直到找出所有用例为止.

posted @ 2008-10-08 10:41 JustForKim 阅读(1556) 评论(0) 编辑
http://msdn2.microsoft.com/zh-cn/library/ms998469.aspx

多种情况下,如何使用.net构造出解决方案,还包括模式学习、模式应用。
posted @ 2008-03-25 14:55 JustForKim 阅读(255) 评论(0) 编辑

1、    分发message(或者request)给不同类,以进行处理:类似于MVC架构中的front controler ,首先写个handler类对各种message进行分发,然后用command模式进行相关处理。
        其中使用简单工厂返回一个特定的concrete command,但创建每个concrete command的同时都把不同的concrete command 用hashtable or dictionary 缓存起来,减少加载程序集和使用反射创建concrete command带来的性能消耗。
2、    处理某个message(或者 request)时,如果要经过不知数目的子处理,如何保证message的处理不被动态的、不知数目的子处理强耦合呢?
    解决方案有两种:可以使用observer模式,如event 和 delegate 在asp.net module的应用;还可以使用composit模式,但树的高度为2。

3、    应对报文处理的两个方向上的变化:“报文类型分发”和“报文处理插件”也可以通过bridge模式进行设计。

posted @ 2008-03-19 22:16 JustForKim 阅读(205) 评论(0) 编辑
在网站开发中,js文件通常要用utf8来保存才可以引入asp.net中,否则windows系统认不出来。
windows系统的文本文件格式有几种utf8、ansi(在中文操作系统中的gb2312使用此名称)、等等,通常的文件传输都使用utf8。
string类对于编码无意义,使用何种编码是使用字节数组或文件流时来说的。
所有编码的统一接口为string。
posted @ 2008-03-19 16:39 JustForKim 阅读(156) 评论(1) 编辑
posted @ 2008-03-15 21:48 JustForKim 阅读(460) 评论(0) 编辑
posted @ 2008-03-13 18:30 JustForKim 阅读(246) 评论(1) 编辑
posted @ 2008-03-10 11:28 JustForKim 阅读(60) 评论(1) 编辑