欢迎来到天天文库
浏览记录
ID:15092190
大小:390.87 KB
页数:8页
时间:2018-08-01
《.net底层开发技术》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、工作多年后才明白的.NET底层开发技术作者:JamesLi参加工作已经有五年了。由于是非计算机科系,一开始的工作是做网页,维护ASP脚本程序,有时候也要做图片,总而言之,一项任务交到手里,没有借口说不会做,想办法弥补然后把任务做完。后来才得到机会,参与编程开发工作。而且,当时一心想用C#.NET做开发,不希望参与DELPHI的开发,偏偏工作经过层层的转发,交到手里的就是DELPHI开发。经历努力,再后来就真的用.NET进行开发工作,一直持续到现在。消极的观念会说,学的很杂,做的也杂,积极一点的想法,把老板交给你的任务完成,就是称
2、职的员工。现在正值毕业生找工作的时间,一时找不到开发的工作,也不要急,先听从公司的安排做个软件测试,或是文档管理之类的职位,等有空缺的开发人员的机会,你再毛遂自荐,同样可以进入程序员这个领域。机会是留给有准备的人的,难道不是吗?一直用.NET做ERP/MIS类型的软件,学业不精,可以完成工作任务,业余时间也制作一些集成化的工具包,下面分享一下我认为的.NET领域里的底层技术。1通信技术(Remoting,WCF,ASMX)通常的三层架构,数据库,数据访问层,界面层。通讯技术定义了三层组件之间的调用约定,以及方法。这样说起来有些抽
3、象,举例为证。现在要制作一个进销存项目,基本的功能是进仓,出仓,转仓,查询功能要能查询到仓库进出日记帐,库存余额。对于一笔物料为FLEX0901的进仓业务,用ORM的方式完成,伪代码如下InventoryMovmentEntity receipt=newInventoryMovmentEntity(“REF1108080001”,"RECEIPT”);InventoryMovmentDetailEntity detail=receipt.InventoryMovmentDetails.AddNew(); detail.ItemN
4、o=”FLEX0901”;detail.MoveDate=DateTime.Now;InventoryMovementDAL.Instance.Save(receipt);这里有几个问题处理的不错,比如1)ORM的数据读写,关注面从拼凑SQL读写到构建实体,这是进步。如果用DAL+SQLScript的方式完成,伪码如下stringmySql=”INSERTICMOVH(RefNo,Direction) VALUES(‘REF1108080001’,'RECEIPT’)";InventoryMovementDAL.Instanc
5、e.ExecuteNonQuery(mySql);mySql=”INSERTICMOVD(ItemNo,MoveDate)VALUES(‘FLEX0901’,'2011/8/8’)";InventoryMovementDAL.Instance.ExecuteNonQuery(mySql);这里省略了拼凑参数值的句段,直接把值放到SQL语句中去。后一种方式,明显的缺陷时,当添加新的字段,对系统扩展时,修改和维护起来的成本,明显大于前者。2)使用了单件模式,InventoryMovementDAL.Instance来统一操作数据读写
6、,而不是这样InventoryMovementDAL inventoryDAL=newInventoryMovementDAL();inventoryDAL.Save(receipt);从这个单件模式,引出了通讯技术的必要性。当有很多个用户,同时操作进仓功能,意味着同时有很多个InventoryMovementDAL的数据写入操作,这时产生的问题1)不好控制前后两张单据的进仓单参考编号重复。为保证不重复,在保存之前,我们需要到数据库检查一次是否已经存在该参考编号的进仓单,也就是InventoryMovementDAL的Save方
7、法的开头,要包含这样一段代码,以DAL+SQLScript的方式表示stringmySql=”SELECTCOUNT(1)FROMICMOVHWHERERefNo=’REF1108080001’ ";boolexisting=InventoryMovementDAL.Instance.ExecuteScalar(mySql)>0;可以想像,当并发用户为100时,每一笔进仓业务,需要预先一次数据检查,来回于数据库,这样的程序性能肯定不好。2)对于库存报表,多个并发的InventoryMovementDAL会导致数据前后不统一。库存
8、余额报表现在可以读到物料FLEX0901还有100个pc,一会当有进仓单入库200pc的FLEX0901时,如果不手动刷新数据,此时的报表仍然显示的物料FLEX0901的库存余额是100,而不是300.这有时候是不可接受的结果。可以做一个timer,定期刷新库存
此文档下载收益归作者所有