|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我觉得很重要,一般所说的不重要应该指的是:你学好一种以后再学另一种就很容易了。(因为这样大家可能有一个错觉就是语言不是很重要,只要随便学一种就可以了,其实不是这样的。一般的三层架构,数据库,数据会见层,界面层。通信手艺界说了三层组件之间的挪用商定,和办法。如许提及来有些笼统,举例为证。如今要制造一个进销存项目,基础的功效是进仓,出仓,转仓,查询功效要能查询到堆栈收支日志帐,
库存余额。关于一笔物料为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的几层认识》系列,深受启发。 |
|