07 2015 档案
摘要:Infragistics 是.NET平台优秀的控件供应商,囊括了WinForms,ASP.NET,Silverlight,WPF,Windows Phone等所有关于微软.NET技术的界面控件。借助于这些功能复杂的控件,为ERP的界面提供了灵活的操作能力。 本篇不谈控件开发,只详细说明ERP系统如何
阅读全文
摘要:几年前跟随项目经理做的一个ERP小项目,自己业余时间整理的开发手册,供参考。 开发环境配置:编程环境为Microsoft Visual Studio 2010,数据库是SQL Server 2008 R2。设计架构Windows Forms+ .NET Remoting + SQL Server,所有程序的代码量(框架,工具,业务逻辑)在5万行以内。 1 SQL Server 数据库表设...
阅读全文
摘要:LLBL Gen Pro是一个为.NET开发人员设计的的对象关系映射(ORM)框架,与NHibernate,Entity Framework等框架一样,通过实体与数据表的映射,实现关系数据库持久化。 1 LLBL Gen Pro 入门 LLBL Gen Pro Basic 打开LLBL Gen Pr
阅读全文
摘要:1 对用户输入做过多的约定和假设配置文件App.config中有一个设定报表路径的配置节:在程序中有一个销售报表文件SalesReport.rpt,用代码调用这个报表,可能会写成:string salesReport=ReportPath + "SalesReport.rpt";因为路径末尾没有加反...
阅读全文
摘要:再过三个月就是十年工作的老程序员,一直奋斗在编码一线。从毕业那会拿着简历去深圳人才市场找工作,到跟项目经理做各种项目,最后到自己主导项目开发的全部过程,从未有离开编码一线。在中国,不能完全说编码没有前途,企业不景气时,最后被裁的一般是程序员,这说明程序员的职业压力要小于市场销售,另一方面,做自己感兴...
阅读全文
摘要:企业管理软件包含一些公共的组件,这些基础的组件在每个新项目立项阶段就必须考虑。核心的稳定不变功能,方便系统开发与维护,也为系统二次开发提供了诸多便利。比如通用权限管理系统,通用附件管理,通用查询等组件,若是在项目开发前就准备好了这些组件,为项目如期交付提供了保证。 查询设计器 Query Desig
阅读全文
摘要:1 缓存 Cache 系统中大量的用到缓存设计模式,对系统登入之后不变的数据进行缓存,不从数据库中直接读取。耗费一些内存,相比从SQL Server中再次读取数据要划算得多。缓存的基本设计模式参考下面代码: private static ConcurrentDictionary<string, Lo
阅读全文
摘要:反射Reflection,MFC时代叫RTTI(Runtime Type Identification) 运行时类型识别,提供一种动态创建对象的能力。这里不谈反射的概念和基本用法,仅仅就我遇到的ERP系统中,有哪些地方用到了反射,是如何用的。1 操作对象的属性或方法 Get/Set property...
阅读全文
摘要:数据库设计规范是个技术含量相对低的话题,只需要对标准和规范的坚持即可做到。当系统越来越庞大,严格控制数据库的设计人员,并且有一份规范书供执行参考。在程序框架中,也有一份强制性的约定,当不遵守规范时报错误。以下20个条款是我从一个超过1000个数据库表的大型ERP系统中提炼出来的设计约定,供参考。1 ...
阅读全文
摘要:1 第一次实施会议当签订合同之后,软件公司与客户约定好会议时间,双方召开第一次实施会议,确定实施的小组人员名单,项目实施周期,培训计划表,实施主计划,系统预备主文件数据准备,软件公司技术支持联系方式。2 项目实施主计划系统安装和测试:业务调研,需求匹配分析,讨论、并确定主档数据编码方案(物料编码、B...
阅读全文
摘要:昨天到半夜还没有等到Visual Studio 2015的下载地址,实在熬不住就先休息了。北美地区的时区比北京时间要晚一些,今天早上到公司就看到Visual Studio 2015的下载地址,迅速的将Visual Studio 2015下载到电脑中体验一把。 作为老程序员,不关心ASP.NET 5的跨平台,这6年多时间一直坚守在Windows Forms平台下,不离不弃。Windows Form...
阅读全文
摘要:.NET 3.5提供的扩展方法特性,可以在不修改原类型代码的情况下扩展它的功能。下面分享的这些扩展方法大部分来自于Code Project或是Stackoverflow,.NET为此还有一个专门提供扩展方法的网站(extensionMethod)。 涵盖类型转换,字符串处理,时间转化,集合操作等多个方面的扩展。 1 TolerantCast 匿名类型转换 这个需求来源于界面中使用Backgro...
阅读全文
摘要:我对大型系统的理解,从数量上面来讲,源代码超过百万行以上,系统有超过300个以上的功能,从质量上来讲系统应该具备良好的可扩展性和可维护性,系统中的功能紧密关联。除去业务上的复杂性,如何设计这样的一个协作良好的系统,搭建开发人员基础平台,一直是我研究的方向。 SouceCounter(版本3.3.91
阅读全文
摘要:1. 通用查询模块,可以通过关联数据库表,存储过程或程序代码开发查询,多个查询之间也可构成主从关联查询。 2. 业务异常处理 支持统一的异常处理。 3. 内置一个简单的SQL Server查询分析器,在关联表查询不满足需求的情况下直接运行SQL语句查询。 4. 文件共享管理,支持文件存储在数据库或文件服务器中。 5. 加密解密,提供可逆和不可逆加密,可逆加密用于数据库连接字符串,不可...
阅读全文
摘要:借助于反射,可获取当前窗体中的所有控件,根据需要设置它们的属性。 Font defaultFont = new System.Drawing.Font("Microsoft Sans Serif", 8.25F); //查找所有的控件,设置为同样的字体 IterateControls(this.Controls, typeof(Foundation.WinUI.Misc.Label)); for...
阅读全文
摘要:数据库表定义为SalesOrder,用LLBL Gen Pro生成的实体定义是SalesOrderEntity,再用Code Smith生成的数据读写接口是ISalesOrderManager,最后是生成接口实现类型SalesOrderManager。 命名规范如下: SalesOrder => SalesOrderEntity => ISalesOrderManager => SalesOr...
阅读全文
摘要:.NET 系统以Main方法作为应用程序的启动入口点,Enterprise Solution的启动程序源代码如下: [STAThread] static void Main() { string MAIN_INSTANCE_KEY = "EnterpriseMain"; SingleProgramInst...
阅读全文
摘要:1. 登陆窗体和主界面增加语言选项,同时可记住用户登陆的语言和数据库。 2. 主界面的树功能可记住上次打开的模块菜单。 3. 修复主界面菜单生成问题和导航图区上下文菜单生成问题。 4. 增加自动更新功能。可以将最新的程序包部署到HTTP服务器上,主界面的Check Update功能可以自动下载程序文件并解压缩到本地,再重新启动主程序。 因为ERP要考虑各种客户使用的版本不一定相同,因为稳定...
阅读全文
摘要:有些场景的.NET程序,不容易设置断点,可以用下面的方法,在.NET代码中增加启动调试器的代码: if (!Debugger.IsAttached) Debugger.Launch(); 在文件开头添加引用using System.Diagnostics; 参考下面的代码例子,Visual Studio 2015内置查看两个段点之间代码执行的性能(内存耗费和处理器时间) c...
阅读全文
摘要:1 关于英语拼写,推荐安装Visual Studio Spell Checker,可自动修复拼写有问题的单词。 2 关于变量命名与方法命名,推荐安装Resharper,使用Alt+ Enter 进行重构。 下载路径:Visual Studio Spell Checker
阅读全文
摘要:做.NET软件工作已经10年了,从程序员做到高级程序员,再到技术主管,技术总监。见证了Visual Studio .NET 2003,Visul Studio 2005, Visual Studio Team System 2008, Visual Studio 2010 Ultimate,Visual Studio 2013一系列近5个版本的变化与亲自使用。每一个版本都有深刻有意义的变革。Vis...
阅读全文
摘要:Vsdocman是一个优秀的.NET源代码注释编写工具,方便的以GUI的方式设计.NET源代码的注释。我们知道.NET源代码的注释是Xml格式的注释,在生成程序集时,只需用选中生成Xml注释,Visual Studio根据源代码生成Xml注释文件。把程序集和相应的Xml文件拷贝到其它电脑中,在Vis...
阅读全文
摘要:详细介绍Enterprise Solution 二次开发的流程步骤,主要包括数据输入窗体(Entry Form),查询(Query/Enquiry),报表(Report)三个重要的二次开发项目。 数据输入窗体开发 Entry Form 当涉及到字段的增加或增加数据库表时,开发新功能界面有以下几个主要
阅读全文
摘要:在管理软件开发的功能点中,有相当一部分功能是与Excel做数据交互,产生Excel 数据报表。如果Excel报表的数据计算方法很有规律可循,则可以通过自定义公式来解决。比如常见的资产负债表,利润表,取数都非常有规律。 Excel DNA是一套用.NET框架实现的Excel自定义公式引擎,互联网上有很多Excel财务方面的报表是基于此技术实现。Excel DNA完全开放源代码,可到网上下载它的完整...
阅读全文
摘要:Enteprise Solution有一套自己的界面设计规范,也是很多年(10年以上)管理软件界面精华的积累。没有一个软件从一开始就很善于界面设计,许多个小小的改善,比如控件位置的移动,控件摆放顺序的改变,都是经过客户检验或是深思熟虑的。1 对于必须输入值的项,控件中有小光标表示。如上图所示,合约编...
阅读全文
摘要:列举工作以来遇到的各种类型的软件所采用的代码保护技术,只讲原理不涉及技术细节实现,以避免产生法律问题。有些朋友说直接把代码放在Github开源下载,开源可以促进技术交流与进步,然而值钱的代码都积压在硬盘里面,即使很烂的代码都卖了很多钱,赢得了许多客户与市场。珍惜爱护自己写的代码,他们都是宝贵的财富。...
阅读全文
摘要:Management Studio是我在WinForms小项目开发过程中搭建起来的一个插件式结构的应用程序框架,因为简单灵活又容易扩展,现在将它开源供读者参考。跑起来的效果图如下所示,具备选项卡式多文档界面,Office 2007蓝色风格,插件式结构等特性。选项卡式多文档界面 Tab MDI通过In...
阅读全文
摘要:1 性能提示 Performance Tips 当我们想知道执行一段代码所耗费的时间时,需要借助于.NET 框架的Stopwatch类,像下面这样: class Program { static void Main() { // Create new stopwatch Stopwatch stopwatch = new Stopwatch();...
阅读全文
摘要:LLBL Gen Pro是一款优秀的对象关系映射开发框架,自2003年发布以来,一直有广泛的客户群。LLBL Gen Pro有几个标志性的版本,2.5/2.6是一个很稳定的版本,公司的一些旧的项目仍然用的是这个版本。3.1 将项目的文件改成XML格式(llblgenproj),极大的方便和简化了第三...
阅读全文
摘要:最近一个客户升级系统,改用Windows Server 2012作为服务器操作系统。升级之后性能未见明显的改善,在不改变代码的基础上,考虑到C/S架构的能力,增加内存或是处理器的处理能力似乎可以解决一些性能改善,但远远不如B/S架构的系统增加群集对性能改善的明显。记录下Enterprise Solu...
阅读全文
浙公网安备 33010602011771号