NET网页编程之你必要分明的.NET底层开辟手艺--1(Remoting,WCF, ASMX,并发手艺)
我觉得很重要,一般所说的不重要应该指的是:你学好一种以后再学另一种就很容易了。(因为这样大家可能有一个错觉就是语言不是很重要,只要随便学一种就可以了,其实不是这样的。一般的三层架构,数据库,数据会见层,界面层。通信手艺界说了三层组件之间的挪用商定,和办法。如许提及来有些笼统,举例为证。如今要制造一个进销存项目,基础的功效是进仓,出仓,转仓,查询功效要能查询到堆栈收支日志帐,库存余额。关于一笔物料为FLEX0901的进仓营业,用ORM的体例完成,伪代码以下
InventoryMovmentEntityreceipt=newInventoryMovmentEntity(“REF1108080001”,"RECEIPT”);
InventoryMovmentDetailEntitydetail=receipt.InventoryMovmentDetails.AddNew();
detail.ItemNo=”FLEX0901”;
detail.MoveDate=DateTime.Now;
InventoryMovementDAL.Instance.Save(receipt);
这里有几个成绩处置的不错,好比
1)ORM的数据读写,存眷面从拼集SQL读写到构建实体,这是前进。假如用DAL+SQLScript的体例完成,伪码以下
stringmySql=”INSERTICMOVH(RefNo,Direction)VALUES(‘REF1108080001’,RECEIPT’)";
InventoryMovementDAL.Instance.ExecuteNonQuery(mySql);
mySql=”INSERTICMOVD(ItemNo,MoveDate)VALUES(‘FLEX0901’,2011/8/8’)";
InventoryMovementDAL.Instance.ExecuteNonQuery(mySql);
这里省略了拼集参数值的句段,间接把值放到SQL语句中往。
后一种体例,分明的缺点时,当增加新的字段,对体系扩大时,修正和保护起来的本钱,分明年夜于前者。
2)利用了单件形式,InventoryMovementDAL.Instance来一致操纵数据读写,而不是如许
InventoryMovementDALinventoryDAL=newInventoryMovementDAL();
inventoryDAL.Save(receipt);
从这个单件形式,引出了通信手艺的需要性。当有良多个用户,同时操纵进仓功效,意味着同时有良多个InventoryMovementDAL的数据写进操纵,这时候发生的成绩
1)欠好把持前后两张票据的进仓单参考编号反复。为包管不反复,在保留之前,我们必要到数据库反省一次是不是已存在该参考编号的进仓单,也就是InventoryMovementDAL的Save办法的开首,
要包括如许一段代码,以DAL+SQLScript的体例暗示
stringmySql=”SELECTCOUNT(1)FROMICMOVHWHERERefNo=’REF1108080001’";
boolexisting=InventoryMovementDAL.Instance.ExecuteScalar(mySql)>0;
能够想像,当并发用户为100时,每笔进仓营业,必要事后一次数据反省,往返于数据库,如许的程序功能一定欠好。
2)关于库存报表,多个并发的InventoryMovementDAL会招致数据前后不一致。库存余额报体现在能够读到物料FLEX0901另有100个pc,一会当有进仓单进库200pc的FLEX0901时,假如不手动革新数据,此时的报表仍旧显现的物料FLEX0901的库存余额是100,而不是300.这偶然候是不成承受的了局。
能够做一个timer,按期革新库存余额。这里的成绩是,InventoryMovementDAL只要一个实例,没法本人告知本人,已有新的库存了,从头读取数据。这里必要一种并发机制,告知InventoryMovementDAL实例,有新的数据到场到库存余额中,必要革新报表。
3)有一些数据项,是全局的,关于全部体系都是独一的,必要特别处置。
好比ERP体系同意的并发用户,同时同意有10个用户毗连进进体系,凌驾则没法处置;
ERP体系的一个用户把以后体系的默许泉币从HK$改善了US$,别的的用户,要能晓得这个改动,此时,不太大概让以后正在操纵营业的用户加入,从头进进体系;
当产生收集妨碍时,ERP体系要能晓得收集妨碍,并suspend以后正在举行的操纵;这一点能够了解为一条无效的改良,当没法毗连到SQLServer时,要制止以后正在录进数据的用户,不然他很辛劳的录进了数据,而体系又没法保留,给出一个提醒Anetwork-relatedorinstance-specificerroroccurredwhileestablishingaconnectiontoSQLServer.Theserverwasnotfoundorwasnotaccessible.VerifythattheinstancenameiscorrectandthatSQLServerisconfiguredtoallowremoteconnections用户会埋怨你的软件没有做好,只管这不是你的错。
以下图,以后用户正在编纂客户材料,产生收集妨碍,界面被Disable了。借助于通信手艺中的并发,能够完成。
当你的程序碰到这几个成绩时,是不是能够思索下通信手艺,来改良功能和客户体验。
刚刚打开这篇专题,猛然见到HAL9000发表的《对于大型公司项目平台选择j2ee的几层认识》系列,深受启发。 目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案. 平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。 HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了. Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。 以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。 众所周知,Windows以易用而出名,也因此占据不少的服务器市场。 业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
页:
[1]