- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
工作多年后才明白的.NET底层开发技术作者:James Li参加工作已经有五年了。由于是非计算机科系,一开始的工作是做网页,维护ASP脚本程 序,有时候也要做图片,总而言之,一项任务交到手里,没有借口说不会做,想办法弥补然后把任务做完。后来才得到机会,参与编程开发工作。而且,当时一心想 用C#.NET做开发,不希望参与DELPHI的开发,偏偏工作经过层层的转发,交到手里的就是DELPHI开发。经历努力,再后来就真的用.NET进行 开发工作,一直持续到现在。消极的观念会说,学的很杂,做的也杂,积极一点的想法,把老板交给你的任务完成,就是称职的员工。现在正值毕业生找工作的时 间,一时找不到开发的工作,也不要急,先听从公司的安排做个软件测试,或是文档管理之类的职位,等有空缺的开发人员的机会,你再毛遂自荐,同样可以进入程 序员这个领域。机会是留给有准备的人的,难道不是吗?一直用.NET做ERP/MIS类型的软件,学业不精,可以完成工作任务,业余时间也制作一些集成化的工具包,下面分享一下我认为的.NET领域里的底层技术。 1 通信技术(Remoting,WCF, ASMX)通常的三层架构,数据库,数据访问层,界面层。通讯技术定义了三层组件之间的调用约定,以及方法。这样说起来有些抽象,举例为证。现在要制作一个进销存项目,基本的功能是进仓,出仓,转仓,查询功能要能查询到仓库进出日记帐, 库存余额。对于一笔物料为FLEX0901的进仓业务,用ORM的方式完成,伪代码如下 InventoryMovmentEntity? receipt=new InventoryMovmentEntity(“REF1108080001”,RECEIPT”); InventoryMovmentDetailEntity? detail=receipt.InventoryMovmentDetails.AddNew();? detail.ItemNo=”FLEX0901”; detail.MoveDate=DateTime.Now; InventoryMovementDAL.Instance.Save(receipt); 这里有几个问题处理的不错,比如 1) ORM的数据读写,关注面从拼凑SQL读写到构建实体,这是进步。如果用DAL+SQL Script的方式完成,伪码如下 string mySql=”INSERT ICMOVH(RefNo,Direction)?? VALUES(‘REF1108080001’, RECEIPT’) ; InventoryMovementDAL.Instance.ExecuteNonQuery(mySql); mySql=”INSERT ICMOVD(ItemNo,MoveDate) VALUES(‘FLEX0901’,2011/8/8’) ; InventoryMovementDAL.Instance.ExecuteNonQuery(mySql); 这里省略了拼凑参数值的句段,直接把值放到SQL语句中去。 后一种方式,明显的缺陷时,当添加新的字段,对系统扩展时,修改和维护起来的成本,明显大于前者。 2) 使用了单件模式,InventoryMovementDAL.Instance来统一操作数据读写,而不是这样 InventoryMovementDAL? inventoryDAL=new InventoryMovementDAL(); inventoryDAL.Save(receipt); 从这个单件模式,引出了通讯技术的必要性。当有很多个用户,同时操作进仓功能,意味着同时有很多个InventoryMovementDAL的数据写入操作,这时产生的问题 1)不好控制前后两张单据的进仓单参考编号重复。为保证不重复,在保存之前,我们需要到数据库检查一次是否已经存在该参考编号的进仓单,也就是InventoryMovementDAL的Save方法的开头, 要包含这样一段代码,以DAL+SQL Script的方式表示 string mySql=” SELECT COUNT(1) FROM ICMOVH WHERE RefNo=’REF1108080001’? ; bool existing=InventoryMovementDAL.Instance.ExecuteScalar(mySql)0; 可以想像,当并发用户为100时,每一笔进仓业务,需要预先一次数据检查,来回于数据库,这样的程序性能肯定不好。 2 )对于库存报表,多个并发的InventoryMovementDAL会导致数据前后不统一。库存余额报表现在可以读到物料FLEX0901还有100个 pc,一会当有进仓单入库200pc的FLEX0901时,如果不手动刷新数据,此时的报表仍然显示的物料F
文档评论(0)