随笔分类 -  工作相关

工作中遇到的一些问题。
摘要:原来就想写一些关于分布式的设计。正好目前开发的GIX4项目中,需要对客户端的许多操作进行记录。这个功能的设计或多或少能说明,一般情况下,多层的分布式系统应该如何设计。现在我就对这个功能进行描述。功能描述 GIX4项目中有个审核日志记录功能,它需要以下功能: 需要把客户的所有操作记录下来,以便支持审计。如,当用户进行:登录、打开模块、查看数据、点击按钮……等操作时,把相关的数据全部在服务器的数据库中记录下来,这些数据有:操作类型、操作时间、操作内容、操作者、客户端机器名等。 在服务端对某些特定的事件进行记录,如:计算出错。设计目标 这个模块需要支持以下目标: *为客户端代码、服务器端代码都提供. 阅读全文
posted @ 2010-03-10 12:58 BloodyAngel 阅读(5261) 评论(4) 推荐(2) 编辑
摘要:本篇博客记录了我在工作过程中的一个设计单元。 需求 GIX4项目中需要为非国标清单进行匹配,用户自定义匹配规则。规则可以被存储到数据库中,下次重复使用。界面原型如下: 图1 界面原型 用户可以指定对对象的某属性进行某个比较操作。 设计-总体结构 图2 总体结构 看上去会有点晕?懒了一点,就全画一起了。 :o) 中间的接口就是整个结构的核心所在,下面会详细解释: 第一组接口:设计匹配概念 首先,明确匹配的概念,这个概念是与GIX4应用无关的。 一个是可以被匹配的对象,另一个则是主动匹配者。如下:/// <summary>/// 被匹配的对象/// </summary>pu 阅读全文
posted @ 2010-02-05 19:47 BloodyAngel 阅读(1339) 评论(6) 推荐(3) 编辑
摘要:在公司写的1月份反思内容: 反思主题 指标系统未让客户满意 反思时间 2010-1-27 9:30:00 反思地点 办公室 现象/案例 1.BUG超出预期的范围:发布客户版本前,我们自己都感觉软件已经没有什么BUG了。但是一旦小红把软件交互给客户时,就会从小红那里获得许多的BUG反馈。而这些BUG,在当时正在和客户发版本的情况下,时间仓促,改起来感觉有点手忙脚乱,怎么忙也没办法忙完。2.沟通并不十... 阅读全文
posted @ 2010-01-27 10:56 BloodyAngel 阅读(351) 评论(1) 推荐(1) 编辑
摘要:记录一下,9月份参加研发峰会时的材料。写得不好,而且思想也并不成熟。大致内容如下(EXCEL中直接粘过来的,比较乱): 类别 任务名称 背景介绍 目的(不超过三个) 目标(smart_c) 关键策略 选定方案 策略、方案、计划制定人 实施负责人 协作人 督导人考评人 时间 行动计划关键里程碑 成败攸关因素 管理三问 开发 设计:领域建模解决方案模式 1.业务与代码实现脱离:一般情况下,在进行领域... 阅读全文
posted @ 2010-01-26 17:02 BloodyAngel 阅读(326) 评论(0) 推荐(0) 编辑
摘要:前一篇博客 写了在这次重构中,如何找到关键的概念,并将它提取成为接口。这样,重构的方案基本上就已经被确定了。这篇博客主要说一些有意义的细节: 抽象实现 提取接口模型后,各“指标”类已经呈现出一种正确的逻辑关系。那么,现在更重要的就是重构上文中提到的“普通计算过程”。由于计算过程依然有很多种,并且有通用的抽象部分。再加上接口模型已经定义出了大量重要的... 阅读全文
posted @ 2010-01-12 20:44 BloodyAngel 阅读(1737) 评论(3) 推荐(3) 编辑
摘要:背景 GIX4是一个建筑行业的指标计算软件,用于数据统计、分析。导入的大量数据,大部分呈现逻辑上的树状结构(关于它的重构,见:《重构一个繁琐的数据结构》),关系复杂。这些数据,需要经过由底向上的汇总,并进行业务上的计算,然后以另一形式展现给用户。开发一段时间后,表现系统的应用层出现以下问题: 1.速度慢 < 系统的计算分为两类,在这里,我简单地叫它们:正常计算过程、复杂计算过程。而复杂计... 阅读全文
posted @ 2010-01-11 21:05 BloodyAngel 阅读(2226) 评论(6) 推荐(1) 编辑
摘要:今天和同事一起讨论了CQRS(Command Query Responsibility Segregation),过程中,我产生了一些疑问,先记录在这里,以后有解决方案了再说。:) http://blog.jteam.nl/2009/12/21/rethinking-architecture-with-cqrs/ 以下是讨论正文: 发件人: 1B-2-12 胡庆访; 发送时间: 2009年12月31日 12:36收件人: 1B-2-14 穆洪星;3D-1-02 周金根抄送: 1B-2-05 李智; 1B-2-13 孟伟斯主题: 答复: 使用CQRS重新考虑架构 CQRS其实是说在使用DDD的 阅读全文
posted @ 2009-12-31 12:52 BloodyAngel 阅读(1827) 评论(1) 推荐(0) 编辑
摘要:前言 这里主要说一个使用using躲过异常的小技巧。 我原来就遇到过类似的问题好几次了,也没想到办法,直接有一天,调试得实在受不了了,才认真想了以下的解决方案。 问题 原来的代码是这样的: public abstract class Command : RoutedUICommand{ private bool _isExecuting = false; public void Execu... 阅读全文
posted @ 2009-12-17 20:32 BloodyAngel 阅读(3598) 评论(23) 推荐(3) 编辑
摘要:读写锁是进程同步中经常使用的锁。 在System.Core中ReaderWriterLockSlim类比较好用,它是基于写优先策略的。它还支持从读锁升级到写锁,称为Upgradable Mode. 简单测试代码如下:private static void Test(){ ReaderWriterLockSlim locker = new ReaderWriterLockSlim(); Parame... 阅读全文
posted @ 2009-12-15 16:50 BloodyAngel 阅读(615) 评论(0) 推荐(0) 编辑
摘要:上面是我为GIX4项目所想的RolePermission。 这是OpenExpressApp框架中使用的方法:http://www.cnblogs.com/zhoujg/archive/2009/12/12/1622331.html 阅读全文
posted @ 2009-12-15 09:59 BloodyAngel 阅读(323) 评论(0) 推荐(0) 编辑
摘要:private static void OldMethod(BusinessObjectInfo parentBOInfo){ IList<BusinessObjectsPropertyInfo> bosPropertyInfo = parentBOInfo.BOsPropertyInfos; if ((bosPropertyInfo.Count == 1) && (n... 阅读全文
posted @ 2009-12-15 09:18 BloodyAngel 阅读(460) 评论(0) 推荐(0) 编辑
摘要:在使用OpenExpressApp框架的GIX4项目中,对象的懒加载按照对象的性质不同,分为以下两种方式:根对象类: Get方法:获取根对象,并附带上第一级的子对象属性。 GetLazy方法:获取没有子对象属性的根对象。只在简单列表显示时使用。懒加载的思想在这里的体现,比较特殊,大致是这样的:当点击列表中某个对象A时,会使用Get方法获取一个新的对象B,并把它的值全部赋于A,这样,A就在被点击的时... 阅读全文
posted @ 2009-12-11 18:56 BloodyAngel 阅读(300) 评论(2) 推荐(0) 编辑
摘要:在GIX4项目的开发过程中,遇到一个比较复杂的数据结构。复杂,是因为它有许多限制条件。我的工作是在现有系统中,添加新的功能,并在过程中重构部分旧代码。 约束及需求 以下约束是系统中已经存在的必要的约束,不可绕开这些约束而进行代码的开发。 1.项目中,有许多的实体类,都含有一种多叉树的关系和逻辑。 2.这些实体的树型关系,在运行时,只有键的关系,而没有对应的实体引用关系。 由于GIX4是数据分析... 阅读全文
posted @ 2009-12-02 16:34 BloodyAngel 阅读(2101) 评论(5) 推荐(3) 编辑
摘要:这里讲的是OpenExpressApp的部署方案。主要使用的是ClickOnce作为实施方案来实现:智能部署和智能客户端。不过,这里的使用方式跟以往的不太一样…… 部署概述 OpenExpressApp中,界面是自动生成的。而框架使用者所开发的应用程序(以下简称客户程序),只需要按照特定的格式约定编写自己的业务逻辑模型类,然后与框架一同发布,就可以直接运行并显示出所有的界面... 阅读全文
posted @ 2009-11-23 15:14 BloodyAngel 阅读(1586) 评论(2) 推荐(3) 编辑
摘要:起因:客户的程序使用了Microsoft.ReportViewer,程序中需要把这个安装到客户端,需要在目录下放置以下三个dll:  Microsoft.ReportViewer.Common  Microsoft.ReportViewer.WinForms  Microsoft.ReportViewer.ProcessingObjectModel过程:在我的电脑中寻找上面三个dll。前两个在目录... 阅读全文
posted @ 2009-11-20 11:25 BloodyAngel 阅读(2980) 评论(2) 推荐(0) 编辑