我是一名.net开发者,从dos时代turbo pascal算起(1996年),已经20多年了。写过的代码不少,做了很多反反复复的编码工作。中间带过团队做过算是中型的企业级项目,现在每天还在敲着代码,算来还是真心喜欢这个面对计算机的行业,还觉得能敲10年代码再退休,身体锻炼也必不可少,不然10年也坚持不了了,腰椎间盘突出已经来临。
我是1999年开始使用Delphi,从3到7,中途使用PB,后来2011年全面转向.net开发一直没有变化过,一直在做企业信息系统开发,做这行的一个特点就是工作繁重,需求变化多,反复修改时候多。
不论是客户需求变化产品有新方向,就得加班加点,只有一个就能让你忙活个没完没了。一直在这种赶项目进度的时间里,逼着我要想到底如何才能更快,更好的完成任务。我的老大就问我是否有一个可以直接生成代码的机器人
我的信息传统的开发方式是这样的:
分析需求->建立概要模型->概要设计建立模块框架换边界-建立数据模块和UI草图->编码,拖界面->调用Ado.Net->调用SQL语句(写点存储过程或者视图) 其中编码,拖界面,不管是webform还是mvc都是跑不了的,特别是MVC,可视化就更差。 做了N个大小项目后,每一步都让我恶心得想吐,以供应商信息维护为例: 建表:供应商(编码,名称,联系人等等) 画界面:上面的字段挨个拖一遍。 写SQL:增删改查,还是围着数据库表来一遍。 后面优化了一下:用代码生成器CodeSmith,结果生成的代码问题非常多,生成代码的引用问题,要改代码,要改库结构,又重新生成;后面问题很多,各个公司开始开发自己的框架,想做信息系统的通用型框架;
总结了一下,参照从走出软件作坊的说法,需要具备以下功能 1、用户授权认证,用户组,角色数据与功能权限,平台许可认证,版本差异控制,业务与功能自动升级; 2、用户功能树,管理主控台; 3、表单设计器,业务模型实体设计器,工作流设计器,单据设计器,报表设计器,功能菜单设计器,多语言,多UI,查询过滤定制设计器; 4、UI框架,网格/工具栏/树形/多卡片/菜单栏/按钮/多样的编辑框/下拉框/参照录入,引用录入 5、单个实体录入框架,主从录入框架,列表框架,树形框架;列表/主从转换; 6、运行配置参数设置,单号设置规则; 7、业务预警,后台监控; 8、异常框架,业务实体权限,业务实体存储引擎;业务实体查询框架; 9、报表设计器,套打,二维,交叉,图表框架; 10、工作流引擎;消息引擎;JOB服务引擎; 11、多组织结构工具,数据导入导出工具,数据备份工具,升级更新工具;错误诊断工具,日志跟踪工具; 12、信息集成支持,SSO,OA,邮件,短信,搜索,门户等等; 13、APP开发支持; 公司组织大量人力和物力在2010-2013年开发了自身的平台v1.0和v1.1,由于我本身从delphi开始使用强大的前端开发控件DevExpress家的产品,那么自然在平台中引入了他很多前端的组件,表单设计器,UI设计器,实体XPO,SQLDapper,使用开源的任务调度Quartz.Net,开源的搜索引擎Lucene.Net等等,这个过程中也学习了很多DevExpress自身开发的平台XAF的内容,从而在2014年开始使用XAF平台; XAF这个平台具备很多优秀的功能,而我认为VS本身也是一个强大的平台,VS也在2015开始有田园版本免费使用,这样可以使开发者能够大幅度提升开发速度; XAF 2016有很多优秀内容,摘抄总结如下: 一、一次代码编码写,可以同时产生四种项目: 1,Web项目(b/s) 2,win项目(c/s) 3,平板电脑(beta) 4,移动端(beta) 二、数据库支持 支持14种数据库,SqlServer,Oracle,MySql,DB2.....常见的库都支持了。切换数据库时,无需修改源码,当然如果你开始用了Oracle并且手工调用了SQL语句 三、国际化本地化支持 四、自动机制 由领域对象开始 自动建立数据库 自动建立界面?列表界面?详细界面?搜索界面 ?内置增删改查,无需SQL编程 五、AOP应用 AOP是面向方面的应用,XAF中被应用到了极致,比如,系统内置的 保存按钮,无论你有多少个业务对象,只要这一个保存按钮,它们的行为是一致的,都是保存到数据库的表中去,如果你需要修改保存按钮的文字,只要在一个地方修改,整个系统中都变了。 六、元数据管理 七、DomainComponents技术 八、内置功能模块 一、权限模块: 1.支持业务对象级别的权限,增删改查看权限。 2.支持字段级权限,某个字段可读可写。 3.支持行级权限,某个业务对象中某些条件的记录是否有权限进行 删 、改、查看 4.支持上述4种混合权限 5.支持角色,并支持角色嵌套,即,角色3=角色2+角色1 二、审记模块 用于实现业务对象的变更的每个环境,创建时间、修改时间、删除时间,修改内容,每个属性从什么值变更为什么值,何人操作的。 生成的记录相当多,不过可以选择性记录,或自定义。 三、 Business Class Library Customization Module 业务对象支持 这是基础模块了,实现了业务对象的无SQL CRUD操作。 四、图表模块 可以实现各种图表的显示,柱状图,饼图之类的,如果你用过DEV的控件,你就已经看过它的效果图了。 五、Clone Objct模块 实现了业务对象的复制,这是一个小模块。 六、Conditional Appearance Module Overview 条件外观模块,非常常用的模块,实现全局的控制控件是否可用,可见,颜色、字体等 。 七、FileAttachment Module,文件附件模块 用于管理附件文件,可以传到数据库中,也可以个性化为文件系统。 八、HTML Property Editor 在业务对象中可以使用html编辑器。 九、Notifications Module 提醒模块,像outlook一样,到达某时间给出一个弹出提醒,可以选择推迟或取消,可以在业务模块中进行个性化。 比如,到时间提醒去联系客户,更新订单等操作。 十、KPI模块 绩效考核模块, 工作的朋友应该都被考核过吧,是标准的模块,可以提供一些图表。 十一、Maps模块 支持地图的。 十二、Pivot Chart Module 交叉数据分析表+图表模块,在Excel中有交叉数据透视分析表,这个确实相当强大,客户可操控性很强,要什么数据统计结果,随心所欲,当然,客户要愿意操作。 这个模块同时带了图表显示,可以将Pivot中的数据同时显示成图表,很直观。 十三、Pivot Grid Module Pivot表格的显示。 十四、报表模块 当前版本是16.2了,新的功能不断在增加,以前的版本中我们一直在等很多很好的功能。比如报表模块,以前只能在win中做报表设计,现在web中也有了报表设计器了。 相当高大上。 十五、Scheduler 模块 和Outlook中的日历一样。 十六、状态机模块 做简单审批流用的,还不错。 十七、TreeListEditor 树形列表模块,这个也很常用。 十八、验证模块 这个使用频率是最高的,必填验证,唯一验证等 ,你能想到的都有了。当然也提代了扩展接口。 十九、View Variant 让一个业务对象有多种是显示方式,并可以快速切换。比如图表界面切换成树形视图。 二十、工作流模块