2009年2月11日

如何创建一个标准的Windows服务

摘要: 在很多时候,我们需要一个定时器,当间隔某段时间或者在某一个时刻的时候,触发某个业务的处理,这个时候,我们就可能需要引入Windows服务来做这个事情,如某些数据的同步操作、某些工作任务的创建或者侦听某些端口的工作等等。 做过Windows Forms开发的人,对开发Windows服务可能会熟悉一些,其实它本身应该算是一个Windows Forms程序。基本上整个Windows服务的程序分为几个部分:安装操作实现、程序启动、服务操作等。 本例子创建一个Windows服务,服务可以在整点运行,也可以在某段间隔时间运行,通过配置指定相关的参数。 阅读全文

posted @ 2009-02-11 13:08 伍华聪 阅读(19065) 评论(16) 推荐(2) 编辑

2009年1月11日

.NET程序界面探讨之1:Skin++篇

摘要: 工作一直很忙,很久没有写博客了,有个朋友看过我的代码生成工具,觉得界面不错,随整理了一下界面代码,并加入了皮肤功能,现公布以飨读者。 可能做过Winform界面的朋友都知道,能够实现换肤的控件有很多,但做的比较不错的有如ActiveSkin、SkinCrafter、Irisskin、Skin++等等,不过都是收费的界面控件,这些控件很多来自C++的时代,但由于是OCX控件的方式,所以也可以使用到C#的Winform界面换肤中。 本人做过ActiveSkin、Skin++的界面换肤功能,觉得两者很是相似。现将Skin++的使用实现介绍如下。 阅读全文

posted @ 2009-01-11 21:03 伍华聪 阅读(6183) 评论(13) 推荐(0) 编辑

2008年8月16日

C#进行Visio二次开发之Web端启动绘图客户端并登录

摘要: 有这样的需求,一个系统,包含Web端的后台和Winform的绘图客户端程序,用户需要在Web端能够启动绘图客户端,并且不需要重新登录(因为已经登录了Web端了)。 那么在IE的Web端,如何启动Winform做的绘图客户端程序呢?当然对于其他桌面应用程序也是一样的。 总体思路是: 1. 在asp.net页面中增加一个按钮或者菜单,连接是调用一个JavaScript函数实现启动程序 2. 客户端的用户的环境变量有该应用程序的目录路径信息 3. Winform的绘图客户端程序能够处理传递过来的命令行的参数,实现登录启动 阅读全文

posted @ 2008-08-16 09:55 伍华聪 阅读(5057) 评论(3) 推荐(0) 编辑

C#进行Visio二次开发之Web查看Visio图纸

摘要: 前面介绍的Visio开发知识,都是基于Winform的Visio的开发知识,图纸的展示都是基于Winform方式展示的。但很多时候,如果能够通过Web方式可以查看最新的图纸信息,那么系统将更加趋向完美,你说呢? 通过Web方式查看Visio图纸实现起来也是很容易的,首先需要在IE客户端安装一个Visio Viewer的ActiveX控件支持(微软提供),然后剩下来的就是编码展示了,展示的方式和其他的ActiveX控件展示方式差不多。先看看总体的界面实现思路,让大家有一个较好的理解后,然后我们在一步步分析如何实现。 阅读全文

posted @ 2008-08-16 09:17 伍华聪 阅读(6883) 评论(7) 推荐(1) 编辑

2008年7月18日

时态数据库的应用介绍(2)--时态数据库之TimeDB

摘要: TimeDB是传统的数据库管理系统的前端软件,应用程序中使用的时态ATSQL语句,通过TimeDB转换后形成标准的SQL语言和操作,这些标准SQL语句和操作传入到后台数据库中操作实际的数据。TimeDB支持ATSQL2语言和时态模型,实现了时态查询、时态更新、时态视图和部分的时态完整性约束等基本的时态功能。 TimeDB 2.0版本使用Java语言开发,具有平台无关的有点;基于JDBC访问数据库,目前仅支持Oracle、Sybase和IBM的Cloudscape’s JBMS三种数据库,下一版本可能支持Microsoft's Access、SQL Server 7.0、Informix等数据库;具有较友好的用户界面;优化了辅助表的创建过程;具有可以供Java应用程序调用的接口TDBCI,可供Java应用程序调用以执行ATSQL2语句。 阅读全文

posted @ 2008-07-18 21:29 伍华聪 阅读(4516) 评论(3) 推荐(0) 编辑

时态数据库的应用介绍(1)

摘要: 什么是时态数据库? 区别于传统的关系型数据库(RDBMS),时态数据库(Temporal Database)主要用于记录那些随着时间而变化的值的历史,而这些历史值对应用领域而言又是重要的,这类应用有:金融、保险、预订系统、决策支持系统等。 目前时态数据库还没有像如Oracle、SQL Server等大型关系数据库那样的产品。在当前时态数据库技术尚未完全成熟的现状下,DBMS提供商不会轻易把时态处理功能引入现有的DBMS中,因此,利用成熟的RDBMS数据库,建立时态数据库的中间件,在现阶段是一个较好的选择,因此就应运而生TimeDB和TempDB了。 阅读全文

posted @ 2008-07-18 21:28 伍华聪 阅读(4727) 评论(1) 推荐(0) 编辑

2008年7月12日

C#进行Visio二次开发之事件

摘要: 回顾Visio的对象 Application对象 l Window对象 l Document对象 l Page对象 l Master对象 l Shape对象 l Cell对象 Visio对象还有 Selection对象 l Connects对象 l Style对象 l Keyboard l Mouse l DataRecordset 阅读全文

posted @ 2008-07-12 08:32 伍华聪 阅读(4646) 评论(0) 推荐(1) 编辑

Winform系统设计开发中的一些经验总结

摘要: — 界面应统一风格(菜单、工具条、状态条) — 控件的图片、图片透明颜色 — 控件的命名统一 — 菜单项目 menu_ — 工具条按钮 tsb_ — 文本txt_ 、下拉列表cmb_等 — 控件布局: — 基类BaseForm,实现统一出现位置 — 窗体的大小尽量一样 — Tab顺序、控件长度高度、控件停靠、自动伸缩 — 菜单、按钮快捷键 — 注重你代码... 阅读全文

posted @ 2008-07-12 08:23 伍华聪 阅读(3800) 评论(5) 推荐(1) 编辑

2008年7月7日

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

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

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

2008年7月6日

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

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

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

2008年6月28日

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

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

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

2008年6月27日

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

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

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

2008年6月26日

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

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

posted @ 2008-06-26 12:47 伍华聪 阅读(5587) 评论(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 伍华聪 阅读(3661) 评论(5) 推荐(1) 编辑

2008年6月23日

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

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

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

2008年6月11日

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

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

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

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

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

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

2008年6月10日

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

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

posted @ 2008-06-10 13:39 伍华聪 阅读(3431) 评论(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 伍华聪 阅读(6893) 评论(4) 推荐(0) 编辑

2008年6月4日

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

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

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

导航