2008年7月7日

一个分层架构设计的例子(2)

摘要: 接着上一篇关于分层架构的讨论,一个分层架构设计的例子(1)。 上篇介绍了实体类(Entity)、数据库访问类(DAL)、数据访问接口(IDAL)的相关设计,本篇主要讨论下面几个部分内容:业务逻辑层、缓存机制、界面层等方面。 业务逻辑层,主要是业务逻辑基类的设计,由于数据库访问类(DAL)的基类封装了大量的操作实现,因此,业务逻辑层的主要工作是进一步封装对底层访问接口的实现。 业务层基类封装了大量的调用,那么对于业务层的具体操作类,它的工作就很简单了,基本上只需要继承一下基类就可以了,这就是有一个优秀父亲的好处,呵呵 阅读全文

posted @ 2008-07-07 09:01 伍华聪 阅读(7578) 评论(10) 推荐(3) 编辑

2008年7月6日

一个分层架构设计的例子(1)

摘要: 一般来说,对系统的分层,一般都需要下面几个层:实体层(Entity)、数据访问层(DAL)、业务逻辑层(BLL)、界面层(UI);而数据访问层,一般也会加入一个接口层(IDAL)。 在其中的实体层,一般是根据数据库进行映射外加入注释等,技术含量不大,再此一笔带过;数据库访问层和业务逻辑层,是关键之所在,因为这里好的设计,会利用很多基类的操作,减少很多代码和重复劳动;界面层,不管是WebForm还是WinForm,都是尽可能少的逻辑代码或者SQL语句在其中,好的项目可能会利用一些优秀的控件进去,提高体验,减少代码。另外,由于一些创建操作费时费资源,一般还需要把可重复利用的资源缓存起来,提高性能。 阅读全文

posted @ 2008-07-06 10:54 伍华聪 阅读(13295) 评论(24) 推荐(2) 编辑

2008年6月28日

Database2Sharp重要更新之完善EnterpriseLibrary架构代码

摘要: 该软件很早就开始支持Enterprise Library的数据访问操作了,不过之前的没有生成一个完整的解决方案工程,只是生成了数据访问类和实体类,改善后的Enterprise Library代码生成,生成整个项目工程框架,包含实体类、数据访问类、业务类,利用泛型及缓存机制,良好的架构极大简化代码,强大完善的基类使你甚至不用编写一行代码。 点击几下鼠标后,生成的解决方案如下,其中标为红色部分为表Equipment生成的相关类,其他是辅助类,BaseDAL和BaseBLL封装了对数据访问的绝大多数函数,数据访问底层采用的是Enterprise Library数据访问库(微软的数据访问层)。 阅读全文

posted @ 2008-06-28 19:48 伍华聪 阅读(3050) 评论(0) 推荐(0) 编辑

2008年6月27日

C#进行Visio二次开发之界面设计及架构设计

摘要: 写C#进行Visio二次开发的系列文章有很多篇了,都是写一些经验总结和技术知识的分享,本文继续来探讨这方面开发的一些心得,主要介绍下WinForm界面的设计和Visio软件的架构设计。 先看看我花了N个月的业余时间完成的软件概貌,然后大家一起讨论下相关的技术知识。 软件界面主要有菜单区、工具条区、图纸内容区、右边的管理区、状态条区等等,主要注意的是采用了ToolStripPanel来进行布局,然后并使用了有名的WeifenLuo.WinFormsUI.Docking.dll控件对图纸内容区、右边的管理区进行控制。 阅读全文

posted @ 2008-06-27 20:54 伍华聪 阅读(14400) 评论(12) 推荐(0) 编辑

2008年6月26日

C#进行Visio二次开发之图纸缩放操作的实现

摘要: 我们知道,Visio菜单【视图】中有一个缩放的菜单项目,如下所示,选择响应的选项会对图纸进行缩放。另外,它的工具条中也有一个下拉列表框,除了可以选择现有的那些选项外,还可以输入自定义的值,达到自定义缩放比例的功能。 本文介绍如何使用C#和Visio的SDK函数,实现Visio中的图纸各种缩放操作。 阅读全文

posted @ 2008-06-26 12:47 伍华聪 阅读(5586) 评论(1) 推荐(0) 编辑

2008年6月24日

如何通过编程方式获取alexa排名的数据

摘要: Alexa 是以发布世界网站排名而引人注目的一个网站。其实,此网站的搜索引擎也很好用,但是“网站排名”却是它吸引眼球的最主要原因。 阿里妈妈的网站也有Alexa网站排名(http://tool.alimama.com/site.php)、中国站长网站(http://alexa.chinaz.com/Index.asp)也提供Alexa排名查询,还有很多网站也提供了它们的Alexa排名,这些排名的数据都是通过调用称为Alexa Web Information Service (AWIS)的服务,地址是http://awis.amazonaws.com/doc/2005-07-11/AWSAlexa.wsdl。 那么我们如何才能使用这些服务,以便创建我们的Alexa排名查询操作呢? 阅读全文

posted @ 2008-06-24 18:16 伍华聪 阅读(3656) 评论(5) 推荐(1) 编辑

2008年6月23日

导线应力及弧垂计算相关资料

摘要: 有一项研究,需要计算导线的弧垂, 网上搜索,发现这方面的资料很少,贡献出来大家分享: c#架空输电线路设计系统(1) c#架空输电线路设计系统(2) c#架空输电线路设计系统(3) c#架空输电线路设计系统(6) -斜抛物线公式全集 另外还有两个文档,一个是Word文件,一个是Excel文档,Excel中包含了各种比载及弧垂的计算实例和公式. 阅读全文

posted @ 2008-06-23 12:51 伍华聪 阅读(11009) 评论(51) 推荐(4) 编辑

2008年6月11日

C#进行Visio二次开发之电气线路停电分析逻辑

摘要: 停电分析,顾名思义,是对图纸进行停电的逻辑分析。在电气化线路中,一条线路是从一个电源出来,连接着很多很多的设备的,进行停电分析,有两个重要的作用:一是看图纸上的Shape元件是否连接正常,二是看哪些设备有电无电。通过给有电的设备一种颜色(如绿色),无电的设备一种颜色(如红色),那么就可以很明显地看到通电的不同变化。 对一张Visio绘制的电气线路图,我们如何进行停电分析呢?本文详细介绍如何实现 阅读全文

posted @ 2008-06-11 18:20 伍华聪 阅读(6524) 评论(2) 推荐(0) 编辑

C#进行Visio二次开发之图纸设备信息的保存

摘要: 在Visio的二次开发中,当发布图纸的时候,我们往往需要保存图纸和图纸的设备信息到数据库,图纸是将文件以二进制保存到数据库中,设备信息是保存图纸对应的Shape的各种自定义属性。 我们需要注意一个问题,设备有很多属性列表,数据库也有很多字段属性列表,我们需要以一个为准,作为Sql语句字段列表的标准,否则就会出现问题。由于取本地Shape的属性虽然方便,但是由于其可能因为模具属性变化可能和数据库的字段列表不再一致,因此还是以数据库字段列表为准比较妥当。 阅读全文

posted @ 2008-06-11 12:38 伍华聪 阅读(5542) 评论(1) 推荐(0) 编辑

2008年6月10日

代码生成工具Database2Sharp功能功能完善及更新

摘要: 好久没有更新代码生成工具了,因为很多功能基本上能够应付日常的开发工作了,如C#代码生成、数据库文档导出、Sql脚本生成,但用户在使用过程中也发现了一些需要完善的地方,因此继续完善,以求更加实用方便。 现更新了下面几个问题,希望给大家做软件开发的时候有一个启示。 阅读全文

posted @ 2008-06-10 13:39 伍华聪 阅读(3430) 评论(15) 推荐(0) 编辑

2008年6月5日

C#进行Visio二次开发之管理下拉列表

摘要: 每个Shape有很多属性,这里我是指自定义属性,每个属性都对应一种类型,就像我们在SqlServer创建一个字段的时候,需要指定其类型一样。 本文着重介绍下两种类型:visPropTypeListFix和visPropTypeListVar,分别为固定列表和可变列表,其实这两种类型对应的.NET编程控件模型就是ComboBox,这个控件有个属性DropDownStyle,可以指定为DropDownList和DropDown这两种类型,本质上visPropTypeListFix对应DropDownList类型(只能选择列表的值),visPropTypeListVar对应DropDown类型(除了可选列表值,还可以输入新的值)。 Visio的这两种列表的值,都是通过对应的ShapeSheet行中的Format的值来展示的,如有一个列表的Format的值为“专用;公用”,那么就有两项可以选择,如下图所示。 那我们在Visio的二次开发程序中如何管理这些下拉列表的呢? 对于固定列表,我们在添加或者修改自定义属性的时候,就给它固定的值那就可以了;对于可变列表,我们 阅读全文

posted @ 2008-06-05 22:07 伍华聪 阅读(6890) 评论(4) 推荐(0) 编辑

2008年6月4日

如何利用系统函数操作文件夹及文件

摘要: 平时使用Path类不多,常用Combine来串联两个路径,其他的很少用,偶然发现Path提供了很多方便实用的函数。我比较喜欢那个GetTempPath 函数,一句代码就可以返回临时目录的路径了,很方便。大家可能也注意到,Environment.GetEnvironmentVariable(string variable)也提供了如何获取特别路径的函数,另外Environment.GetFolderPath(Environment.SpecialFolder folder)的函数也提供了很多实用功能,返回相应的目录。 最后我顺便提供一个递归删除文件夹和文件的操作函数,方便大家。 阅读全文

posted @ 2008-06-04 20:31 伍华聪 阅读(4369) 评论(6) 推荐(0) 编辑

2008年6月1日

C#进行Visio二次开发之设备状态跟踪

摘要: 明察秋毫,很多情况下是非常需要的,例如,如果我们完善了一套系统,能够将四川赈灾的款项的筹集、采购、分发等步骤都能明察秋毫,相信整个世界会安静很多。 同样,对于一个使用Visio进行二次开发的程序来说,背后你需要知道用户增加了那些设备,删除了那些设备,修改了那些设备,这样你才能对整个系统的数据进行有效的控制,否则“赈灾”款项就可能丢失了,呵呵。 那我们应该如何做才能有效的处理这些事件,达到对设备的变更明察秋毫呢? 我前面介绍了一篇文章《C#进行Visio开发的事件处理 》,其中也介绍了各种事件侦听,我们要对设备进行跟踪的话,基本上只需要侦听这几个事件,并对之进行处理即可。 阅读全文

posted @ 2008-06-01 21:43 伍华聪 阅读(5761) 评论(1) 推荐(1) 编辑

C#进行Visio二次开发之Shape的Data1、Data2、Data3的用处

摘要: 我们知道,Visio的Shape对象有有3个比较特别的属性,分别是Data1、Data2、Data3,平常我们很少用到它,因为我们如果需要属性的话,可能会通过ShapeSheet的Customed Properties中定义我们所需要的信息,需要各种属性的值都可以拿到,那么Data1、Data2、Data3对我们来说,就用处不大,但有的情况下,我们使用它进行一些操作却是非常方便的。 首先我们介绍下,这几个属性是什么东西,Data1、Data2、Data3是Shape的内置属性,不需要额外定义,而且它据说可以放置64K的字符串(没有试过这么大的),一般来说我们是足够放置内容的了。 言归正题,我们什么情况下会使用到这几个属性呢,大家想想,我们在绘图的时候,是不是总有个图框来列出图纸那些设备有几个的一个设备清单呢,或者是一个比例尺说明什么的,这些场合就可以 用上它们了。 因为这些线条,可能是我们随机画上去的,里面的一些设备的说明以及相关信息一般都是根据图纸变化而变化的,因此每次保存的时候,可能要重新绘制一下,但绘制的时候,为了有别于其他设备图元,我们使用这几个属性来记 阅读全文

posted @ 2008-06-01 10:45 伍华聪 阅读(7713) 评论(1) 推荐(0) 编辑

2008年5月30日

C#进行Visio二次开发之自定义右键菜单

摘要: Visio Drawing Control中集成自定义菜单是很多项目必须的,很多朋友也问过我如何实现这些菜单,下面介绍下Visio自定义菜单的实现。 Visio二次开发中,为Visio Drawing Control添加自定义菜单有两种方式:一种是使用捕捉Visio的MouseUpEvent事件,弹出ContextMenu即可;另一种是通过在PageSheet中增加Action来实现,也就是使用RUNADDONWARGS函数来实现。 先介绍第一种方法,首先注册MouseUpEvent的事件,然后,你需要实现onDrawingControlMouseUp函数的内容,在里面你需要限制下右键的一些事件,然后通过X,Y坐标获取选定的Shape对象,弹出你的ContextMenu对象即可。 第二种方式是通过添加Action方式,使用RUNADDONWARGS函数来实现。操作也很简单,先获取指定的Page对象,清除Action事件(因为你每次加入的话,Action始终保留你的添加的内容,防止出现多个相同的右键菜单,我每次删除旧的内容,然后再添加我需要的东西),然后添加所需要 阅读全文

posted @ 2008-05-30 13:48 伍华聪 阅读(9880) 评论(9) 推荐(0) 编辑

2008年5月28日

C#进行Visio二次开发之鸡毛蒜皮(一)

摘要: 本文主要分享一些在Visio二次开发中碰到的各种小问题及其解决方法: 1. 为图元设置颜色 在一些分析中,如电气线路分析中,需要根据不同的状态改变图元的颜色,那么如何改变指定图元的设备颜色呢? 2. 获取图元设备的连接关系 每个设备Shape都有一个Connects和FromConnects集合,该集合是Connect对象集合,每个Connect有ToSheet和FromSheet属性,分别是指向一个Shape对象,我们如果要获取设备的关联关系,就是需要判断这些Connect的ToSheet和FromSheet属性。 3. 获取图元的属性集合 我们知道,每个图元Shape甚至Page对象都有很多自定义属性,你可以通过在Visio的开发模式中查看ShapeSheet查看到。而所有这些属性中,每行又代表一个属性的各种定义信息,如Label是什么,Prompt(提示)是什么,Value(值)是什么,Type(类型)是什么,这就有点类似于我们在数据库定义一个字段,需要指定字段的名称,类型等等,那如果我们需要把这些信息保存下来,我们该如何获取呢? 阅读全文

posted @ 2008-05-28 22:28 伍华聪 阅读(9868) 评论(9) 推荐(2) 编辑

C#进行Visio二次开发之判断图纸是否有设备

摘要: 判断Visio图纸上是否图纸有设备(存在图元), 有两种方法,一种是通过Window对象的SelectAll方法,在判断选择的集合是否不为空即可,另外一种方法是判断页面对象Page的Shapes对象集合是否大于0即可. 两种方式具体如何实现, 并存在那些具体的差别? 阅读全文

posted @ 2008-05-28 20:38 伍华聪 阅读(4261) 评论(0) 推荐(0) 编辑

C#进行Visio二次开发之图纸打印

摘要: 几种打印模式: Visio的二次开发中,我们往往需要打印文档,这也是正常不过的需求,Visio的Document对象提供了下面几种打印模式: Visio的Picture属性及转换: Visio文档打印的时候,有时候需要预览下内容,那如何实现呢,其实也很简单,因为你打印的Page对象有一个Picture的属性,可以用来显示的(Window.Selection也有一个这么对象,当然就可以用来预览选择的内容了)。不过到这里别高兴太早,因为Picture对象是IPictureDisp类型的,你需要转换为PicutureBox对象所能识别的Image类型,不过这个东西不是那么容易转换的,呵呵。费了九牛二虎之力,终于查到了转换的方法,下面介绍下吧,以免大家走弯路。 打印页边距设置问题: 再说另外一个问题,不知道大家有没有注意到,页面设置对话框中,页边距中的值默认是10,你确定之后,值就变小了,再打开确定,值变得更小了,这是因为页边距值的转换出了问题,要正常工作,需要做一些转换的工作。下面贴出代码,一目了然。 阅读全文

posted @ 2008-05-28 20:38 伍华聪 阅读(5267) 评论(1) 推荐(0) 编辑

2008年5月16日

香港生肖采集及规则分析软件

摘要:    闲来无聊, 研究下生肖六合彩的规则,特作了该软件,希望能够给感兴趣的人提供一个快捷的分析工具,有兴趣可以下来玩玩。    该软件其最强大的功能是可以获取网络上几千个网站的信息,并进行准确智能统计,找出最为符合条件的数据,有这么庞大的数据作为支撑分析,你对结果有更多的信心。软件能够在开奖日搜索出最为精准的六肖,准确率达到95%以上,有效保护您的投资,稳定和高质量的数据是该软件的最大特点。    准确的资料,稳定的回报,持续的投入即可让你有了和别人不一样的投资机会。    软件支持URL链接的导入,并可以根据现有的URL进行关联查找,自动把新的符合条件的URL地址存入数据库,作为自动扩充网站的功能支持。  因身边一些朋友反映,特别列出了诈骗网站黑名单,希望大家警惕这些人的欺骗行为,切记。 看看软件的界面。 阅读全文

posted @ 2008-05-16 09:07 伍华聪 阅读(19507) 评论(11) 推荐(0) 编辑

2008年2月28日

Sqlserver常用函数例子说明

摘要: 在操作SQLServer的时候, 很多时候记不住具体的函数如何使用, 查找联机帮助还是嫌麻烦, 且有很多时候例子也不好懂, 下面对每个常用的函数用用例子说明,一目了然,你自己在数据库中执行一下,结果就知道什么回事了 阅读全文

posted @ 2008-02-28 13:24 伍华聪 阅读(3271) 评论(1) 推荐(0) 编辑

导航