|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
捆绑编译器。用户不需要受制于厂家,自己就能将程序在新平台上编译运行。除了牛B轰轰的linux,估计也没有系统捆绑c/c++的编译器,而且许多新平台都无法支持复杂的c/c++编译器在上面直接运行。<p>假如你有一个十分酷的页面,页面上良多器材主动地呼应用户操纵而展示丰厚的变更,你的ViewState是很有大概到达200K的。
这里是我将ViewState耐久化坚持在服务器真个代码,如许ViewState不占用收集带宽,因而其存取只是服务器的磁盘读取工夫。而且它很小,能够说是磁盘任意转一圈就可以同时读取很多多少ViewState,因而能够说“不占工夫”。为了再“不占磁盘工夫”,我还利用了缓存。
一下这段代码能够放在页面中,大概页面的父类中:
ViewState耐久化C#code
<OLclass=dp-c>protectedoverrideobjectLoadPageStateFromPersistenceMedium(){varviewStateID=(string)((Pair)base.LoadPageStateFromPersistenceMedium()).Second;varstateStr=(string)Cache[viewStateID];if(stateStr==null){varfn=Path.Combine(this.Request.PhysicalApplicationPath,@"App_Data/ViewState/"+viewStateID);stateStr=File.ReadAllText(fn);}returnnewObjectStateFormatter().Deserialize(stateStr);}protectedoverridevoidSavePageStateToPersistenceMedium(objectstate){varvalue=newObjectStateFormatter().Serialize(state);varviewStateID=(DateTime.Now.Ticks+(long)this.GetHashCode()).ToString();//发生团圆的id号码varfn=Path.Combine(this.Request.PhysicalApplicationPath,@"App_Data/ViewState/"+viewStateID);ThreadPool.QueueUserWorkItem(obj=>File.WriteAllText(fn,value));Cache.Insert(viewStateID,value);base.SavePageStateToPersistenceMedium(viewStateID);}
不利用Session,由于它会“丧失”。ViewState保留在磁盘上,即便服务重视新启动,也不会丧失页面形态。
上面这段能够放在Global.asax中,也能够基本不论:
ViewState耐久化C#code
<OLclass=dp-c>protectedvoidApplication_Start(objectsender,EventArgse){vardir=newDirectoryInfo(this.Server.MapPath("~/App_Data/ViewState/"));if(!dir.Exists)dir.Create();else{varnt=DateTime.Now.AddHours(-1);dir.GetFiles().ForEach(f=>{if(f.CreationTime<nt)f.Delete();});}}
这能够确保相对不乱牢靠地事情。今后请宁神利用ViewState,把交互式页面进步程度才是最主要的,不要胶葛在“ViewState太年夜”上。实践上,因为页面计划不敷酷,交互变更看上往不敷丰厚,ViewState其实是太小太小了。
假如你利用了它无效进步了庞大交互页面的效力,能够说一下进步了几?!假如你以为没用,也能够说一下在甚么情形下没用。
<p>我也不知道,我原来理解的,NET就是C++编程,只是与JAVA相对,呵呵。以为.ET就是高级C++编程。 |
|