仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 562|回复: 7
打印 上一主题 下一主题

[学习教程] ASP.NET教程之在Framework4.0中怎样完成提早加载

[复制链接]
老尸 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:18:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
以前学了大概半年时间的asp(没有机会做大系统,最多是自己对公司系统做些调整和修改还有一些小程序)。应该说开始接触asp.net是今年元月5号的事。现在很想把公司的系统重新用.net来架构,却不知道如何下手。</p>提早加载,亦称提早实例化,提早初始化等,次要表达的头脑是,把工具的创立将会提早到利用时创立,而不是在工具实例化时创立工具,即用时才加载。这类体例有助于进步于使用程序的功能,制止华侈盘算,节俭内存的利用等。针关于这类做法,仿佛称之为即用即创立更加符合些。
先来看一下在Framework4.0中怎样完成提早加载。
Framework4.0供应了一个包装类Lazy,能够轻松的完成提早加载。


  • ///这行代码标明:要创立一个提早加载的字符串工具s
  • ///原型为LazyT>工具名=newLazyT>(FunT>)
  • ///接纳泛型托付举行机关,实例化此托付时请求必需是前往值T范例的办法
  • ///如在本例中,T为string,则TestLazy.GetString办法的前往值必需也是string范例
  • Lazystring>s=newLazystring>(TestLazy.GetString);

本例中TestLazy.GetString()办法以下示:


  • publicclassTestLazy
  • {
  • publicstaticstringGetString()
  • {
  • returnDateTime.Now.ToLongTimeString();
  • }
  • }

能够经由过程IsValueCreated属性来断定工具是不是已创立,经由过程Value属性来猎取以后工具的值。


  • Console.WriteLine(s.IsValueCreated);//前往False
  • Console.WriteLine(s.IsValueCreated);//前往True

上面经出完全代码,以供测试:


  • classProgram
  • {
  • staticvoidMain(string[]args)
  • {
  • ///这行代码标明:要创立一个提早加载的字符串工具s
  • ///原型为Lazy工具名=newLazy(Fun)
  • ///接纳泛型托付举行机关,实例化此托付时请求必需是前往值T范例的办法
  • ///如在本例中,T为string,则TestLazy.GetString办法的前往值必需也是string范例
  • Lazys=newLazy(TestLazy.GetString);
  • Console.WriteLine(s.IsValueCreated);//前往False
  • Console.WriteLine(s.IsValueCreated);//前往True
  • }
  • }
  • publicclassTestLazy
  • {
  • publicstaticstringGetString()
  • {
  • returnDateTime.Now.ToLongTimeString();
  • }
  • }

上面再用一个例子,演示提早加载:
在这个例子中,利用了BlogUser工具,该工具包括多个Article工具,当加载BlogUser工具时,Article工具其实不加载,当必要利用Article工具时,才加载。


  • classProgram
  • {
  • staticvoidMain(string[]args)
  • {
  • BlogUserblogUser=newBlogUser(1);
  • Console.WriteLine("blogUserhasbeeninitialized");
  • {
  • Console.WriteLine(article.Title);}
  • }
  • }
  • publicclassBlogUser
  • {
  • publicintId{get;privateset;}
  • publicLazy>Articles{get;privateset;}
  • publicBlogUser(intid)
  • {
  • this.Id=id;
  • Articles=newLazy>(()=>ArticleServices.GetArticesByID(id));
  • Console.WriteLine("BlogUserInitializer");
  • }
  • }
  • publicclassArticle
  • {
  • publicintId{get;set;}
  • publicstringTitle{get;set;}
  • publicDateTimePublishDate{get;set;}
  • publicclassArticleServices
  • {
  • publicstaticListGetArticesByID(intblogUserID)
  • {
  • Listarticles=newList{
  • newArticle{Id=1,Title="LazyLoad",PublishDate=DateTime.Parse("2011-4-20")},
  • newArticle{Id=2,Title="Delegate",PublishDate=DateTime.Parse("2011-4-21")},
  • newArticle{Id=3,Title="Event",PublishDate=DateTime.Parse("2011-4-22")},
  • newArticle{Id=4,Title="Thread",PublishDate=DateTime.Parse("2011-4-23}
  • };
  • Console.WriteLine("ArticleInitalizer");
  • returnarticles;
  • }
  • }

运转了局如图示:



最初说一下,提早加载次要使用场景:
当创立一个工具的子工具开支对照年夜时,并且有大概在程序顶用不到这个子工具,那末能够思索用提早加载的体例来创立子工具。别的一种情形就是当程序一启动时,必要创立多个工具,但唯一几个工具必要当即利用,如许就能够将一些不用要的初始化事情提早到利用时,如许能够十分无效的进步程序的启动速率。
这类手艺在ORM框架失掉了普遍使用,也并不是C#独占的,好比Java里的Hibernate框架也利用了这一手艺。
我实在想不明白java的机制,为什么非要那么蛋疼,在同一个平台下重复编译。
柔情似水 该用户已被删除
沙发
发表于 2015-1-19 08:04:01 | 只看该作者
对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。
小妖女 该用户已被删除
板凳
发表于 2015-1-24 17:55:20 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
若相依 该用户已被删除
地板
发表于 2015-2-2 11:41:02 | 只看该作者
Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。
冷月葬花魂 该用户已被删除
5#
发表于 2015-2-7 19:19:57 | 只看该作者
ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。
深爱那片海 该用户已被删除
6#
发表于 2015-2-23 04:05:40 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
活着的死人 该用户已被删除
7#
发表于 2015-3-7 06:10:25 | 只看该作者
碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。
透明 该用户已被删除
8#
发表于 2015-3-21 10:32:04 | 只看该作者
对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-21 04:25

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表