谁可相欹 发表于 2015-1-16 22:48:41

ASP.NET网页设计缓存手艺及在Rainbow Portal的使用

什么叫数据库怎么样?什么意思?你想单学数据库。(其实变成是我问的)缓存  1.ASP.NET缓存手艺概述
  将数据库中的数据缓存到内存(也能够存储在其他场合),则无需在哀求每一个页面时都会见数据库。因为从内存中前往数据的速率一直比新供应的数据速率快,因此能够年夜年夜进步使用程序的功能。
  ASP.NET为你利用缓存手艺供应最年夜的天真性,你能够缓存全部HTML页面,或是部分HTML页面,或是各类工具。你能够设置过时战略,或是设置依附性,即在其他资本如文件或数据库表改动时,主动移出缓存。
  ASP.NET中有两种基础的缓存:
  输入缓存
  页面输入缓存是最为复杂的缓存机制,该机制将全部ASP.NET页面内容保留在服务器内存中。当用户哀求该页面时,体系从内存中输入相干数据,直到缓存数据过时。在这个过程当中,缓存内容间接发送给用户,而不用再次经由页面处置性命周期。一般情形下,页面输入缓存关于那些包括不必要常常修正内容的,但必要大批处置才干编译完成的页面出格有效。必要注重的是,页面输入缓存是将页面全体内容都保留在内存中,并用于完成客户端哀求。
  能够经由过程在Web.config举行设置,设置缓存战略,在一组ASP.net页面中利用。还能够经由过程HttpCachePolicy类编程性设置页面缓存。
  数据缓存
  使用程序数据缓存供应了一种编程体例,可经由过程键/值对将恣意数据存储在内存中。利用使用程序缓存与利用使用程序形态相似。可是,与使用程序形态分歧的是,使用程序数据缓存中的数据是易掉的,即数据并非在全部使用程序性命周期中都存储在内存中。使用程序数据缓存的长处是由ASP.NET办理缓存,它会在项过时、有效,或内存不敷时移除缓存中的项,还能够设置使用程序缓存,以便在移除项时关照使用程序。
  同时另有两种特别的缓存,基于以上的缓存模子:
  部分缓存
  部分缓存实质上是输入缓存。望文生义,页脸部分缓存是将页脸部份内容保留在内存中以便呼应用户哀求,而页面其他部份内容则为静态内容。页脸部分缓存的完成包含两种体例:控件缓存和交换后缓存。前者也可称为片断缓存,这类体例同意将必要缓存的信息包括在一个用户控件内,然后,将该用户控件标志为可缓存的,以此来缓存页面输入的部份内容。这一体例缓存了页面中的特定内容,而没有缓存全部页面,因而,每次都需从头创立全部页。比方,假如要创立一个显现大批静态内容(如股票信息)的页,个中有些部分为静态内容(如每周总结),这时候能够将静态部分放在用户控件中,并同意缓存这些内容。缓存后交换与控件缓存恰好相反。这类体例缓存全部页,但页中的各段都是静态的。比方,假如要创立一个在划定工夫段内为静态的页,则能够将全部页设置为举行缓存。假如向页增加一个显现用户名的Label控件,则关于每次页革新和每一个用户而言,Label的内容都将坚持稳定,一直显现缓存该页之前哀求该页的用户的姓名。利用缓存后交换机制,能够将页设置为举行缓存,将页的一般部分标志为不成缓存。在此情形下,能够向不成缓存部分增加Label控件,如许将为每一个用户和每次页哀求静态创立这些控件。
  数据源缓存
  数据源缓存是指在数据源控件如SqlDataSource,ObjectDataSource,andXmlDataSource中缓存数据,实践上是数据缓存,只不外缓存由控件外部完成。
  缓存依附
  缓存依附同意缓存项依附于别的一个资本,如许资本变更时,缓存项主动移出。
  ASP.NET包含3种依附范例
  依附于其他缓存项
  依附于文件或文件夹
  依附于数据库查询。
  别的你还可使用聚合依附,或是自界说缓存依附。
  缓存功效也有其本身的不敷。比方,显现的内容大概不是最新、最正确的,为此,必需设置符合的缓存战略。缓存增添了体系的庞大性并使其难于测试和调试,你设置的断点、监控变量等因为缓存在调试时都大概有效。
  2.RainbowPortal中的数据缓存
  RainbowPortal的Portal、页面、模块的设置信息、页面结构、主题等信息全体保留到数据库里,如果每次从数据据库读取,就会影响功能。Rainbow自此处置上利用了数据缓存手艺。
  两个帮助类:
  Rainbow.Framework.Settings.Cache.Key完成缓存键名的猎取,其办法都是静态的。因为Rainbow一个网站能够包括多个Portal,每一个Portal都有自力的设置,因而缓存的键名要辨别分歧的Portal。Key类为键名每一个加上Portal的别号作为前缀。
  如猎取Portal设置信息的键名:
<P>  publicstaticstringPortalSettings()
  {
  returnstring.Concat(Portal.UniqueID,"_PortalSettings");
  }
  Rainbow.Framework.Settings.Cache.CurrentCache类封装对以后缓存的操纵。
  Rainbow.Framework.Site.Configuration定名空间中的PortalSettings类,PageSettings类,ModuleSettings类;Rainbow.Framework.Design定名空间中的LayoutManager类,ThemeManager类等,都使用了缓存手艺。一样平常历程为:先判别以后的Cache里有无缓存值,如有则从缓存中间接读取,若没有就从数据库中读取,然后保留到以后缓存中。
  以PortalSettings类为例申明:
  publicclassPortalSettings
  {
  ......
  publicstaticHashtableGetPortalBaseSettings(stringPortalPath)
  {
  Hashtable_baseSettings;
  if(!CurrentCache.Exists(Key.PortalBaseSettings()))
  {
  //从数据库里读取
  ......
  保留到缓存中
  CacheDependencysettingDependencies=
  newCacheDependency(
  newstring[]
  {
  LayoutManager.Path,
  layoutManager.PortalLayoutPath,
  ThemeManager.Path,
  themeManager.PortalThemePath
  });
  using(settingDependencies)
  {
  CurrentCache.Insert(Key.PortalBaseSettings(),_baseSettings,settingDependencies);
  }
  }
  else
  {
  _baseSettings=(Hashtable)CurrentCache.Get(Key.PortalBaseSettings());
  }
  return_baseSettings;
  }
  }  针对缓存移除的成绩,Rainbow一方面接纳了缓存依附主动移除,如上述代码中的settingDependencies,别的一方面在程序中显式移出,如在PortalSettings类中,当变动Portal设置后,就移除缓存:
<P>  publicstaticvoidUpdatePortalSetting(intportalID,stringkey,stringvalue)
  {
  //更新
  ....
  CurrentCache.Remove(Key.PortalSettings());
  }  RainbowPortal的一些模块中,也用到了缓存手艺,但有些存在必定成绩,如WhosLoggedOn模块中也利用了数据缓存,可是并没有经由过程Rainbow.Framework.Settings.Cache.Key类完成缓存键名的猎取,如许在一个站点存在多个Portal的时分,站点的统计数会呈现不准确的情形。J2EE比较成熟一点,一些比较出名的企业应用软件都是基于J2EE的。以后的发展就不好说了。不过java比较烦,学.net的话,微软把很多工具都封装好了,学起来可能容易一点。

海妖 发表于 2015-1-19 17:54:29

那么,ASP.Net有哪些改进呢?

飘灵儿 发表于 2015-1-24 15:16:26

是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。

小魔女 发表于 2015-2-1 18:01:08

能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。

冷月葬花魂 发表于 2015-2-7 12:46:46

现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。

第二个灵魂 发表于 2015-2-21 21:13:51

能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。

小妖女 发表于 2015-3-6 21:49:38

众所周知,Windows以易用而出名,也因此占据不少的服务器市场。

若相依 发表于 2015-3-13 21:53:49

我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。

乐观 发表于 2015-3-20 19:44:33

但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。
页: [1]
查看完整版本: ASP.NET网页设计缓存手艺及在Rainbow Portal的使用