当前位置:编程学习 > C#/ASP.NET >>

基于.NET的Windows数据库应用程序开发的心路历程 --我的程序“猿”进化之路

自从2008年3月份开始接触.NET,不不不,应该说是接触C#以来,就一直从事以数据库为中心的各种Windows平台的应用程序开发,屈指一算,已四年矣,现在把这几年中的一些心得体会做一总结。
虽然在本科和读研期间就一直接触编程,但一直使用的C、C++,而且只是粗懂一些皮毛。工作以来,由于项目的需要,改用C#,从而开始了我的.NET之路。
工作以来,小弟也开发了大大小小十几个项目,不过百分之二百五都是针对数据库的应用程序,采用的是古老的两层C/S结构(直到最近有所悟,以前一直以为自己用的是三层C/S结构,到现在才明白只不过是逻辑三层而已,物理上依旧是两层,胖客户端罢了)。
阶段1:标准的个体小作坊方式,凌乱无章的代码、庞大的类,空用着面向对象的语言,写着面向过程的代码,虽然知道封装、多态、继承,却从来没有使用过,可能是以前C的影响根深蒂固吧。操作数据库的SQL语句遍布大江南北、长城内外,一片狼藉,经常为了修改某处代码,牵一发而动全身,整个程序出现不可预知且难以捕捉的错误,在Bug的泥潭里爬行...
阶段2:不知从哪里听说了三层架构模式,于是就在网上找了一些高人的代码加以研读,初步形成了自己对三层架构的“理解”,即 BLL、IDAL、DAL、DALFactory、Model,从而开始了大规模、成批量的泛滥套用之路,当然是不求甚解、生搬硬套,数据库中有n个表,就会建立n*5个类,并且起了个好听命名空间Frame,终于站起来了...
阶段3:由于每次都要手动建立5n个类用来实现数据库的CRUD(注:此时还不知道什么叫CRUD),太累,于是就绞尽脑汁,写了一个三层代码的自动生成器,美其名曰ThreeLayerCreater,根据用户输入的表结构,自动生成相应的项目代码,开始学会自己制作工具...
阶段4:机缘巧合,在CSDN上有幸阅读了周公的博文一则而偶得灵感,利用泛型和反射机制写了一个通用类库ThreeLayerLib,摆脱了数据库表结构对实体类的约束,不用每次都建立5n个类,实现了双手的进一步解放,开始了直立行走...
阶段5:以前从没有听说过什么SSH(Spring+Struts+Hibernate)架构,从没有听说过什么ORM、IoC,不知框架为何物,不知.NET本身就是一个庞大的框架,更不知MFC也是一个C++的框架,从没有听说个MVC、GoF23设计模式,而所有这一切都由于最近接触博客而成为过去,我的脑袋被这些气势磅礴的名词搞得天旋地转。
阶段6:继续进化ing... --------------------编程问答-------------------- 沙发 --------------------编程问答-------------------- LZ既然学了SSH,那就得学学JAVA,JAVA老祖也玩过SSH,它的优点就是能把水平参差不齐的码农的代码整合起来,符合软件工程的概念,但是如果团队里面都是掌握核心技术的老手并且严格遵守编程规范,那这些框架并不适用,因为这些框架在核心API上面做了过度的封装,性能损失是必然的,加上引入大量有用没用的类库,造成整个工程臃肿不堪。
程序猿时间长了还会对这些框架产生依赖性,不利于长期发展,还得面临框架升级带来的bug,微软也是个版本帝啊,还经常推倒一些核心API,不稳定因素太多了。
拿JAVA来说,我这里所谓的核心API就是JAVA SDK里面提供的API,他们才是最核心的东西,是虚拟机提供的原生API,变动相对较少,而且执行效率最高。
.net我不怎么了解,但可以肯定,最底层的ADO.NET+SQL,就像JAVA的JDBC+SQL,是最高效的了。 --------------------编程问答-------------------- 阶段1才是最重要的,但是许多人却不重视,代码写得一片狼藉,到了后几个阶段也一样做不好。阶段1打下了扎实的基础,突破后面几个阶段很容易。
不过不负责任的龙头推倒核心API的做法是一个隐患。 --------------------编程问答-------------------- 前排,菜鸟表示正停留在第一层
--------------------编程问答-------------------- okgoood大神指点的是,我本人其实不推荐依赖现有的所谓框架,而且我在实际项目中也很少用那些现成的框架,大部分都是自己对ADO.NET+SQL根据自己的需要进行封装,以隔离变化,提高扩展性。但我对现有成熟框架的实现原理和优美的架构很是着迷,呵呵! --------------------编程问答-------------------- 期待能见到楼主共享ThreeLayerLib --------------------编程问答-------------------- lz英文有待提高。比如three-tier,不是three layer。 --------------------编程问答-------------------- 与楼主共勉,最近也在研究ORM、EDM之类的.net框架。。 --------------------编程问答-------------------- 帅锅 现在在哪高就啊? --------------------编程问答-------------------- 这就完结了、?
期待更新啊

最后希望csdn能出个只看楼主的功能 --------------------编程问答-------------------- LZ值得学习 --------------------编程问答-------------------- 深有同感 --------------------编程问答-------------------- ThreeLayerLib
对这个感兴趣哦!能否共享? --------------------编程问答-------------------- 呵呵 求共享~ --------------------编程问答-------------------- 不好意思,今天比较忙,才抽出空来上CSDN。不知道怎么上传附件,请大家指教,谢谢! --------------------编程问答-------------------- 楼主这个和程序员有啥关系??
这个里面属于网页设计师的东西。 --------------------编程问答--------------------
引用 16 楼  的回复:
楼主这个和程序员有啥关系??
这个里面属于网页设计师的东西。


大神是指Web前端? --------------------编程问答--------------------
引用 16 楼  的回复:
楼主这个和程序员有啥关系??
这个里面属于网页设计师的东西。


楼主是回应那几个要求共享 ThreeLayerLib 的~~~ --------------------编程问答-------------------- 附件已经上传至资源,请大家受累帮忙测试一下,多提宝贵意见,谢谢! --------------------编程问答--------------------
引用 7 楼  的回复:
lz英文有待提高。比如three-tier,不是three layer。


呵呵,谢谢大神提醒,小弟的E文确实有待提高! --------------------编程问答--------------------
引用 9 楼  的回复:
帅锅 现在在哪高就啊?


在下只是个业余程序爱好者,希望和大家共同提高!谢谢! --------------------编程问答-------------------- 大神大神大神大神 --------------------编程问答-------------------- 表示在第二阶段 --------------------编程问答-------------------- 还在码农中挣扎,天天重复同样的工作,身心疲累了! --------------------编程问答-------------------- 学习... --------------------编程问答-------------------- 本科毕业来实习,什么也不会,经理也是要我自学C# .net平台下面 挣扎一个月 自己也调出了一个winform调用数据库的东东 更不用说代码 中的sql语句了 那天给经理看源代码  我本来写了6,7句  经理看了一眼 给我注释掉5句 说就这两句有用 运行一下 果然是 我基础太差了 好后悔大学的时候 没用心编程   --------------------编程问答-------------------- 附件呢?? --------------------编程问答-------------------- 你研究生也白读了 --------------------编程问答-------------------- 我是09年开始程序员之路,大学时一无所成,学士学位也拿不到,不过现在3年得工作经验,不能说比楼主优秀,但楼主提到的东西,概念上我还是比较清晰,以后继续进化 --------------------编程问答-------------------- 周公的博文 --------------------编程问答--------------------  我.不.为.楼.主.这.样.的.标.题.所.吸.引,
  也.不.是.被.帖.子.的.内.容.所.迷.惑。
  我.不.是.来.抢.沙.发.的,
  也.不.是.来.打.酱.油.的。
  我.不.是.为.楼.主.呐.喊.加.油.的,
  也.不.是.对.楼.主.进.行.围.堵.攻.击.的。
  我.只.是.为.了.每.天.30.帖.默.默.奋.斗。
  你.是.个.美.女,
  我.毫.不.关.心,
  你.是.个.怪.兽,
  我.决.不.在.意;
  你.是.个.帅.哥,
  我.不.会.妒.忌,
  你.是.个.畜.男,
  我.也.不.会.PS。
  你.的.情.操.再.怎.么.高.尚,
  我.也.不.会.赞.美,
  你.的.道.德.如.何.沦.丧,
  我.也.不.为.所.动。
  我.每.天.看.贴.无.数,
  基.本.上.不.回.贴。
  后.来.发.现.这.样.很.傻。
  很.多.比.我.注.册.晚.的.人.分.数.都.比.我.多。
  于.是.我.就.把.这.段.文.字.保.存.在.记.事.本.里,
  每.看.一.贴.就.复.制.粘.贴.一.次.

  ╭───────────────╮
  │╔╦╗╔╦╗╔╦╗╔╦╗╔╦╗│
  │╠拿╣╠三╣╠分╣╠走╣╠人╣│
  │╚╩╝╚╩╝╚╩╝╚╩╝╚╩╝│
  └─◎◎─────────◎◎─┘ --------------------编程问答-------------------- SSH真的算是架构么? --------------------编程问答-------------------- --------------------编程问答-------------------- 1、资源名称: 从内存资源中加载DLL:CMemLoadDll源码-兼容64位dll
2、资源分类:网络技术>网络基础
3、资源ID:2821967
4、推荐理由:一种先进的技术,可以很好的隐藏程序所调用的dll,很好的利用了PE文件虚拟技术
5、资源地址:http://download.csdn.net/detail/sqcfj/2821967 --------------------编程问答--------------------
引用 7 楼  的回复:
lz英文有待提高。比如three-tier,不是three layer。

看来有的研究僧英文也一般吗。
--------------------编程问答--------------------
引用 35 楼  的回复:
引用 7 楼 的回复:
lz英文有待提高。比如three-tier,不是three layer。

看来有的研究僧英文也一般吗。


文科一直在下的短板,呵呵! --------------------编程问答--------------------
引用 28 楼  的回复:
你研究生也白读了


小弟上学时不是计算机科班出身,是个半路出家的和尚,呵呵!希望能得到大神的指点迷津,希望和大神多多交流! --------------------编程问答-------------------- ThreeLayerLib源代码已经上传至资源,请各位大神莅临指导! --------------------编程问答-------------------- 表示大三学生正处于大二阶段。。。 修炼中。。。。 --------------------编程问答-------------------- 还处在第一阶段。。。。。啊啊求出路啊啊。。 --------------------编程问答-------------------- 很有借鉴意义 --------------------编程问答-------------------- 软饭不太好吃的,楼主可要注意了 --------------------编程问答-------------------- 人是什么变的呢,
中国人说:老天爷才知道,
外国人说:上帝才知道

我们都认识这两位,答案:不认识 --------------------编程问答-------------------- 还停留在-1阶段的菜鸟表示压力巨大 --------------------编程问答-------------------- 生成5个类不是必须的,完整的解决方案是采用类继承体系+泛型.因为采用泛型,其实类还是那么多,只是写的代码少点,但你的泛型还是解决不了需求的差异性. --------------------编程问答-------------------- 每天回帖即可获得10分可用分! --------------------编程问答-------------------- 每天回帖即可获得10分可用分! --------------------编程问答-------------------- 加油。。 --------------------编程问答-------------------- 不断进化 --------------------编程问答-------------------- 10分 --------------------编程问答-------------------- --------------------编程问答-------------------- 想问楼主今年多大了? --------------------编程问答-------------------- 表示该毕业了,感觉什么都不懂啊。。。那么多课本,一本也没翻完过。。 --------------------编程问答-------------------- 犀利了啊. --------------------编程问答-------------------- 顶下。。 --------------------编程问答-------------------- 过来人顶下 --------------------编程问答--------------------
引用 52 楼  的回复:
想问楼主今年多大了?


在下虚度20春秋 --------------------编程问答--------------------
引用 45 楼  的回复:
生成5个类不是必须的,完整的解决方案是采用类继承体系+泛型.因为采用泛型,其实类还是那么多,只是写的代码少点,但你的泛型还是解决不了需求的差异性.


请大神指点差异性指什么?如何解决?谢谢! --------------------编程问答--------------------
引用 42 楼  的回复:
软饭不太好吃的,楼主可要注意了


不知大侠所说的“软饭”是不是指“微软的饭”,呵呵!微软的饭确实不好吃,更新技术太快了。 --------------------编程问答-------------------- 嗯,不错!顶一下啊,,,, --------------------编程问答-------------------- 我是阶段一? --------------------编程问答-------------------- 源代码下载地址:

http://download.csdn.net/detail/ckaos/4262212
http://download.csdn.net/detail/ckaos/4262300
http://download.csdn.net/detail/ckaos/4259416

请大家多提宝贵意见,谢谢! --------------------编程问答-------------------- 果然是程序猿 --------------------编程问答-------------------- 新手来参观 --------------------编程问答--------------------
引用 63 楼  的回复:
果然是程序猿


大哥见笑! --------------------编程问答-------------------- 学习了…… --------------------编程问答-------------------- --------------------编程问答-------------------- 每天回帖即可获得10分可用分! --------------------编程问答-------------------- 请教各位大神对数据库并发控制方面有什么心得? --------------------编程问答-------------------- 身为菜鸟,我感到亚历山大 --------------------编程问答-------------------- 嘿嘿,路过支持一下 --------------------编程问答-------------------- 打酱油的 --------------------编程问答-------------------- 现在流行打酱油啊?呵呵! --------------------编程问答--------------------   关注~ --------------------编程问答--------------------   bu cuo!!! --------------------编程问答-------------------- 以前整过C#,现在没弄了。 --------------------编程问答-------------------- 呃。。。 --------------------编程问答-------------------- - -  拿分走人 --------------------编程问答-------------------- 呃啊。。。 --------------------编程问答-------------------- 牛逼啊 --------------------编程问答-------------------- 没办法,只是贫血业务模型,请大家指点关于业务层的构想。 --------------------编程问答-------------------- 半路出家,才20岁,觉悟高啊。。。哎,这让本科毕业还停留在1阶段的情何以堪。 --------------------编程问答-------------------- 听说回复能拿积分。。。?=。=! --------------------编程问答-------------------- 呵呵,在下菜鸟一个 --------------------编程问答-------------------- 做程序猿不到一年的人飘过。 --------------------编程问答-------------------- 实体自动生成类ModelCreater已经开发完毕,正在单元测试,不久就跟大家见面了。 --------------------编程问答-------------------- 很想知道ADO.NET+sql到底是干什么的,完全不懂 --------------------编程问答-------------------- 很想知道ADO.NET+sql到底是干什么的,完全不懂 --------------------编程问答-------------------- 数据库开发!支持 --------------------编程问答-------------------- 楼主共勉,屌丝表示刚学java,自学数据结构中,在数据库门外,呵呵 --------------------编程问答-------------------- 没看太懂。。。。。 --------------------编程问答-------------------- 计算机科班,大三苦逼SQL实验中, 很无解,膜拜lz 大神。。求罩 --------------------编程问答-------------------- 这个里面属于网页设计师的东西 --------------------编程问答-------------------- 学习了
补充:.NET技术 ,  非技术区
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,