大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> NET专区 -> Global.asax 和 HttpApplication 类

Global.asax 和 HttpApplication 类

时间: 2021-07-31 作者:daque

Global.asax 和 HttpApplication 类从httpapplication派生的global 类有很多用途,囊括管理当用步调状况和乞求状况visual studio.net 创造的global.asax文献为每个web 运用步调天生一个从httpapplication类派成的global类,这个类包括很多事变处置步调,比方application_start和 session_start. 大概有人觉得每个web运用步调惟有一个global类的范例。究竟上,在大普遍运用步调框架中,代办”application”的东西都是singleton – 即是说惟有一个范例生存。咱们也领会asp.net运转时惟有在运用步调发端的功夫才挪用application_start事变处置本领。一切那些犹如都在表示,在咱们的asp.net web运用步调中惟有一个global东西的范例,然而一切那些确真实实是误导! asp.net 运转时(asp.net runtime,以次简称“运转时“)保护了一个httpapplication东西池。当一个乞求进入的功夫,运转时从该池中掏出一个httpapplication东西来效劳于暂时乞求,该httpapplication东西从来和该乞求关系联,且只和该乞求关系联,直到乞求被处置结束。当乞求实行后,运转时把该东西偿还到池中,稍后会从池中再次掏出去效劳于其余的乞求 – 但一个乞求历次只能和某一个httpapplication东西关系联。application state vs request stateapplication东西(httpapplicationstate 典型,翻译按:application东西是httpapplication类的一个属性,是web运用步调全部独一的,web运用步调第一次有乞求进入的功夫创造的) 是咱们在web运用步调内生存全部消息的场合,application东西是一个很简单的生存全部消息的场合,比方生存数据库的贯穿字符串: private void page_load(object sender, system.eventargs e){ string connectionstring = application["connectionstring"].tostring();. . . . } 你也不妨在httpapplication类中证明静态分子变量来生存运用步调状况消息,比方,上例中的数据库贯穿字符串不妨用如次办法生存。 public class global : system.web.httpapplication { public static readonly string connectionstring = "connection information"; . . . }不妨在asp.net代码的任何场合考察该静态分子变量,比方string connectionstring = global.connectionstring; 特殊要害的一点是,即使你想让该字符串不妨全部范畴内被考察到,则该字符串必需证明为静态分子变量(你也不妨创造一个静态的属性)。差异,即使你在global典型运用普遍分子变量(非静态),则只能用来生存乞求状况,举个例子来证明,底下的代码将在调节和测试窗口中输入一切乞求的处置功夫(毫秒)public class global : system.web.httpapplication{ protected datetime beginrequesttime; protected void application_beginrequest(object sender, eventargs e) { beginrequesttime = datetime.now; } protected void application_endrequest(object sender, eventargs e) { string messageformat = "elapsed request time (ms) = {0}"; timespan difftime = datetime.now - beginrequesttime; trace.writeline( string.format(messageformat, difftime.totalmilliseconds ) ); } . . . } 好,此刻让咱们回到上头对于生存运用步调状况的话题。谁人本领更好的呢:在application东西中生存东西的援用,仍旧在global类中证明静态分子或属性?百般办法各有是非。 在global类中生存全部静态分子不妨使你的数据考察具备强典型,不象application东西,你不须要举行典型变换,底下的代码说领会它们的辨别:dataset cacheddata = (dataset)application[“mydataset”];string mystring = application[“mystring”].tostring();dataset cacheddata = global.mydataset;string mystring = global.mystring; 强典型使你的的代码越发明显和健康,在运用步调本能诉求比拟高的情景下,这种办法不妨制止运转时典型变换带来的本能丢失。即使你生存的是值典型的数据,强典型还不妨制止装箱(boxing)和卸箱(unboxing)所带来的本能丢失。其余,application东西再有由于线程同步形成的锁定所带来的本能上题目。即使你的全部数据只初始化一次,再也不会变换,运用global类中的静态分子不妨制止锁定带来的本能丢失。但,即使你沿用了这种办法,激烈引荐你运用考察器(属性),以保护该变量是只读的。即使你既要读又要写在global类中的静态分子变量,记取要保护线程安定。application东西经过获得读写锁仍旧内涵的供给了线程安定保护。 比拟安定的初始化全部静态分子变量的场合是在application_start事变处置步调中。纵然全部范畴有很多个global东西的范例,运转时只会在global东西第一次创造的功夫挪用application_start事变

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.