成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET插件的實現方式

開發 后端
本文介紹一直以來我都在尋求基于ASP.NET插件的實現方式,有試過動態加載用戶控件實現,感覺有些沉重,苦思很久,偶然之間想到了第一篇筆記。

還記得我在博客園***篇博客就是學習委托和事件的學習筆記,呵呵,轉眼已經在博客園待了一年多了,學到的東西確實是很多,感謝博客園里面辛勤寫博的各位,給我們帶來了寶貴的學習資料,傳遞著分享知識和技術的快樂。

入正題,一直以來我都在尋求基于ASP.NET插件的實現方式,有試過動態加載用戶控件實現,感覺有些沉重,苦思很久,偶然之間想到了***篇筆記,原來苦苦得尋求,卻在燈火闌珊處,呵呵。其實插件主要是提供可拓展點,其實現實中的需求的插件所要實現的好像也只是拓展操作之前或者操作之后,有點像AOP,那如果程序能提供這些拓展點,ASP.NET插件功能就可以基本實現了!代碼實現思路如下

  1. namespaceMyPlug  
  2. {  
  3. publicclassArticleReadingArg:EventArgs  
  4. {  
  5. publicArticleTheArticle{get;set;}  
  6. }  
  7. publicclassArticlePage:System.Web.UI.Page  
  8. {  
  9. publicstaticeventEventHandler<ArticleReadingArg>OnReading;  
  10. protectedoverridevoidOnInit(EventArgse)  
  11. {  
  12. if(OnReading!=null)  
  13. {  
  14. OnReading(EventArgs.Empty,newArticleReadingArg(GetArticle(WebRequest.GetValue("ID"))));  
  15. }  
  16. base.OnInit(e);  
  17. }  

首先是提供一個拓展點,假設我們要實現新聞管理系統的新聞訪問統計插件,那我們要先提供一個可拓展點代碼如下這是一個頁面的基類,他曝露出了一個靜態的事件OnReading提供拓展者訂閱頁面瀏覽前的事件,當然,其實Page類也有很多事件可以訂閱,不過并沒有公開給其他類訂閱或調用。好了,弄好這一步,基本條件已經成熟啦,因為外部類可以訂閱到Onreading這個事件,并且可以時間的參數是可以訪問到相對應的新聞實體,控制權就轉移到訂閱者手中了。

  1. publicclassCounterPlug  
  2. {  
  3. staticCounterPlug()  
  4. {  
  5. if(this.Enable)ArticlePage.OnReading+=AddCount;  
  6. }  
  7. publicstaticvoidAddCount(objectsender,ArticleReadingArge)  
  8. {  
  9. e.TheArticle.Hit+=1;  
  10. }  

如果你用的ASP.NET模型是WebSite模型,那么很方便,利用本身帶來的動態編譯,可以很方便得實現后續的使用和管理,如果不是,可以編譯成獨立的dll,再利用反射創建實例,這里利用了.net靜態初始化函數的特點-只在該類型的某個靜態成員***次被訪問或該類型***次實例化時執行,具體請查看msdn。我們這里用創建實例的形式激活這個靜態函數,以達到事件的訂閱。我們注意到插件加載是有條件的,這個條件可以根據配置文件,也可以根據數據庫數據獲取。下面是激活的簡單代碼,也就是你點擊啟用之后執行的

  1. Activator.CreateInstance<MyPlug.CounterPlug>(); 

因為創建了一個實例,所以靜態函數執行了,事件也被訂閱了!所以ASP.NET插件的功能就會執行!


靜態變量的生命周期是隨著應用程序的結束而結束的,所以應該不會冒冒然就消失了的。好啦,到這里就實現了插件的啟用了,插件的卸載也挺取巧的,本來想到應用程序域這個概念,想想還是不妥,這玩意要一定的信任級別,***想到webConfig每次修改都會重啟應用程序,嘻嘻,這個本來很討厭的特性,在這里還有得用,關閉插件時修改配置記錄問Disenable之外,修改下WebConfig的***修改時間

  1. stringconfigFile=HttpContext.Current.Server.MapPath("~/Web.config");  
  2. System.IO.File.SetLastAccessTimeUtc(configFile,DateTime.UtcNow); 

【編輯推薦】

  1. 淺談ASP.NET MVC框架
  2. 介紹ASP.NET MVC中的MvcAjaxPanel
  3. ASP.NET MVC框架拯救UpdatePanel
  4. 用ASP.NET MVC源代碼尋找解決方案
  5. ASP.NET MVC框架的ActionInvoker
責任編輯:佚名 來源: IT168
相關推薦

2011-07-04 15:41:14

AjaxASP.NET

2009-03-13 09:48:33

ASP.NETAjaxJQuery

2011-07-12 13:53:25

ASP.NETAjax

2009-08-12 18:19:46

ASP.NET報表打印

2012-05-07 13:23:47

ASP.NET

2009-07-20 15:44:32

ASP.NET MVC

2009-07-22 17:45:35

ASP.NET教程

2009-08-03 14:22:33

什么是ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2009-07-30 12:19:32

ASP.NET中使用A

2011-05-23 10:37:03

2009-07-28 09:45:34

Webpart部署方式使用ASP.NET

2009-08-05 14:27:55

ASP.NET模板基本

2009-07-28 14:47:18

ASP.NET MVC

2009-08-04 10:02:36

中國站長站

2009-07-29 11:18:21

ASP.NET連接My

2009-07-27 12:22:03

ASP.NET和ASPASP.NET入門教程

2011-04-12 13:53:25

ASP.NET MVCjQuery

2009-07-27 15:48:43

2009-07-29 11:19:03

JavaScriptASP.NET
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品99 | 免费视频一区二区 | 美国黄色毛片 | 超碰精品在线 | 一级黄色片免费在线观看 | 国产激情一区二区三区 | 亚洲欧美日韩精品久久亚洲区 | 国产a级黄色录像 | 麻豆91精品91久久久 | 国产分类视频 | 国产成人精品在线 | 久久伊人精品 | 女生羞羞网站 | 成人免费福利 | 国产精品 欧美精品 | 亚洲成人高清 | 成人在线观看中文字幕 | 男人天堂手机在线视频 | 久久久网| 午夜影院视频在线观看 | 久久高清免费视频 | 国产伦一区二区三区四区 | 国产主播第一页 | 一级片免费视频 | 色网在线看 | 亚洲精品一区二区网址 | 一级毛片黄片 | 欧美日韩综合精品 | 成人超碰 | av中文在线播放 | 国产7777 | 欧美日韩在线一区二区 | 成人区精品 | 在线观看精品视频网站 | 午夜精品久久久久久久久久久久 | av一级在线观看 | 免费一级片| 天天摸天天看 | 成人av在线网站 | 欧美性一区二区三区 | 9999国产精品欧美久久久久久 |