《電子技術應用》
您所在的位置:首頁 > 其他 > 設計應用 > 基于AOP的性能監測系統的研究與實現
基于AOP的性能監測系統的研究與實現
來源:微型機與應用2012年第12期
唐雅璇,余金山
(華僑大學 計算機科學與技術學院,福建 泉州362011)
摘要: 提出一種基于動態AOP的監測器模型及其實現,它能夠對現有的、已在運行的系統進行最靈活和能耗最小的代碼級性能分析。利用AOP動態織入機制,可在目標系統運行過程中動態添加或刪除監測器,從而提高監測的靈活性。
Abstract:
Key words :

摘  要: 提出一種基于動態AOP的監測器模型及其實現,它能夠對現有的、已在運行的系統進行最靈活和能耗最小的代碼級性能分析。利用AOP動態織入機制,可在目標系統運行過程中動態添加或刪除監測器,從而提高監測的靈活性。
關鍵詞: 性能監測;AOP;IoC;織入機制

    隨著Internet的日益普及和電子商務的飛速發展,基于B/S的Web應用系統大量出現。在這些Web應用系統中,客戶端只提供人機交互的接口而未參與實際運算,而服務器端將承擔數據存儲及運算的全部工作,在面對海量客戶端數量的情況下,服務端的性能壓力問題就尤為突出。為了保證Web應用系統的正常運行,以及系統在服務器端具有較高的性能來響應大量用戶的并發訪問,進行合理的性能規劃和有效的性能監測就顯得非常重要。性能監測的主要意義[1]是:在系統運行階段,通過監測系統的運行情況,發現錯誤并對故障進行定位,從而解決開發和測試階段中的錯誤。
    現有的監測器存在以下不足[2-3]:監測邏輯與業務邏輯緊密耦合,可擴展性、可復用性、可維護性差;監測部件分散在目標系統中,缺乏合理的組織;監測代碼寫在業務代碼中,不易修改;監測部件在開發階段手動插入,不適合動態添加或刪除。
    本文設計并實現了一款AOP監測器,它圍繞目前.NET平臺下主流的Web開發框架——Asp.net MVC,除了利用AOP關注點分離原則,克服了現有監測器的不足外,還針對MVC框架的特點,實現了注入切面,不僅實現了方法級別的監測,同時還實現了針對Controller及Action級別的監測,與其他方法[2]相比,該監測方式更適合Web系統的使用。
1 性能監測的作用及主要監測對象
    性能監測也可稱為構件交互行為監測[4],指對構件在交互活動期間所進行的操作進行監視記錄的過程。構件交互行為[5]是指在分布式構件軟件中,構件以主體的身份在完成某項協作活動時,通過構件的接口在運行環境中與其他構件進行交互的活動。性能監測主要包括:軟件實體間的交互行為監測、行為信息的收集、為行為診斷、預測和可信評估等提供基礎數據。
    對于分布式構件軟件的性能監測,其各監測類型所對應的監測對象[3]如表1所示。


    現有的監測器大都面向操作系統級別,其監測范圍及粒度均大于Web系統的監測所需,從而導致所監測的數據不能很好地用于對系統性能的提升分析上。由于Web系統屬于非連續性開放系統,基于HTTP協議的基本“請求—響應”特性,決定了其安全性及可用性均與系統的業務存在必然的聯系,傳統的監測器不能根據一定的業務邏輯對所采集的數據進行篩選,而只能通過海量的原始數據結合業務進行判斷。這也是本課題未直接采用傳統性能監測器而是進行構件設計的一個主要原因。
2 基于AOP的性能監測系統及其實現
2.1 系統結構

    本文設計實現的AOP性能監測系統結構如圖1所示,它由3個部分構成:目標監測系統、獨立監測控制臺和性能監測構件包。其中可視化部分——獨立監測控制臺是輔助實現動態織入的關鍵,也是連接目標監測系統和性能監視構件包的橋梁,它提供性能數據讀寫接口以實現標準化的性能數據采集,以及為目標系統擴展IoC功能提供織入控制容器。性能監測構件包提供了基本標準接口,監控器的類型和功能可以根據實際項目需要擴展新的監測組件。

2.2 相關技術介紹
    本系統主要采用AOP 技術實現監測代碼和業務代碼松散耦合,并可在目標系統運行過程中動態添加或刪除監測器。本系統主要采用的開發工具有Asp.net MVC、NInject.WEB.MVC、WMI。
    面向方面編程(AOP)是美國施樂公司帕洛阿爾托研究中心在20世紀90年代提出的一種編程思想。AOP技術作為一種新興的軟件開發方法,提供了不同關注點的分離實現機制,具有可擴展性、可復用性、易理解性、易維護性等特性。本監測器利用AOP關注點分離原則,實現監測代碼與業務代碼松散耦合,提高目標系統的可擴展性、可復用性、易維護性;使用AOP的動態織入機制,允許動態添加、刪除監測器,從而實現監測的可控性與動態性。
    Asp.net MVC框架將模型、視圖、控制器引入開發模型,將Web系統跟蹤從頁面層次提升到了面向業務的層次。NInject是一個超輕量級的依賴注入框架,具備靈活、自由的織入機制,其擴展框架NInject.WEB.MVC是專門為Asp.net MVC設計的擴展包。除了一般IoC所具備的構造函數、方法、屬性注入之外,還提供了針對Controller生命周期的注入及擴展的MvcInjectApplication類。WMI是Windows的核心管理技術,本系統中多處需要提取操作系統及硬件信息,而在Windows操作系統環境下,WMI編程接口具有良好的可操作性,因此本系統的交互行為監測組件主要使用該技術實現。
2.3 系統的實現
    本系統使用Visual Studio.Net2010開發,使用Asp.net MVC2.0和NInject.Web.MVC技術實現。
    一般的Web系統由于頁面級別和類級別往往不能包含一個完整的業務功能,因此在實現對業務功能級別的性能監測上存在著一定的復雜度。本系統圍繞Asp.net MVC框架而實現,它改變Web Form框架依賴頁面的Web架構模式,按照控制器和動作的方式將業務功能進行邏輯劃分,使得IoC注入方式增加了控制器注入、動作注入、控制器異常注入、動作異常注入等幾種方式,使得Web系統的性能監測粒度范圍有了更實際的業務價值。圖2為Asp.net MVC的執行流程。

 

 

    AOP技術中存在多種編譯時機和織入方式,由于本系統所設計的運行環境一般不能獲取被監測系統的源代碼,也不能對其進行修改和重編譯。因此,采用運行時的動態織入技術實現監測組件到被監測系統指定連接點的織入。
    在.NET平臺下的多種IoC框架中,NInject框架最符合本系統的設計要求。它提供了對Asp.net MVC系統的良好基礎擴展,而且只提供運行時織入。本系統中,通過NInjectMvcApplication類對HttpApplication的替換,實現了由NInject的IoC容器替換原本Web系統應用程序的目的,從而使系統內對象的創建全部受到NInject容器的控制。其替換過程示意圖如圖3所示。

    該替換過程首先將NInjectMvcApplication類注冊到公共運行庫(GAC),而后搜索目標Web系統的全局配置文件并替換其HttpApplication,其關鍵代碼邏輯如下:
public void ReplaceIoContainer(string path)
{
    if(string.IsNullOrEmpty(path)) throw new FileNotFound-
Exception(path);
    var files = Directory.GetFiles(path);
    foreach(var file in files)
    {
        if(file.ToLower().Equals("global.asax"))
        {
            using(var sr=new StreamReader(file))
            {
                var data = sr.ReadToEnd();
                Regex reg=new Regex("inherits=\"(\\w+)
\"",RegexOptions.IgnoreCase | RegexOptions.Multiline);
                var mat = reg.Match(data);
                if(mat.Length==0) throw new InvalidOpera-
tionException();
                reg.Replace(data, typeof (NInjectMvcAppli-
cation).FullName);
                using (var sw=new FileStream(path,
FileMode.Open))
                {
                    var writeData = Encoding.UTF8.Get-
Bytes(data);
                    sw.Write(writeData,0,writeData.Length);
                }
            }
        }
    }
}
    替換IoC容器后可按配置將監測組件按需進行織入,織入連接點為構造函數、方法、屬性、控制器、動作等,以常量進行標識,其關鍵代碼如下:
/// <summary>
/// 檢測器的插入位置(可以用或符號多重選擇)
/// </summary>
[Flags]
public enum MonitorPoint
{
    mpBeforeContructor,mpBeforeMehtod,mpBeforeProperty,
mpAfterContructor,
    mpAfterMethod,mpAfterProperty,mpBeforeController,
mpSurroundController,
    mpAfterController,mpBeforeAction,mpSurroundAction,
mpAfterAction,mpActionException
}

public interface IMonitorContainer
{
    /// 注入的位置
    MonitorPoint InjectPosition { get; set; }
    /// 所要注入的監視器
    MonitorBase Monitor { get; set; }
    /// NInject注入引擎
    IKernel Component { get; set; }
}
    通過連接Ikernel和MonitorBase,容器將監測組件織入到目標系統指定位置。由于監測組件存在多樣性,本系統為使監測組件設計具有更好的擴展性,做了以下工作:
    (1)標準化織入目標連接點方式:任何拓展的監測組件,都必須支持IoC容器所提供的所有織入點的監測工作;
    (2)預留監測數據輸出接口:由于監測組件的多樣性,其數據產生量也有不同的變化,因此預留了多個監測數據輸出接口(例如文本中HTTP、數據庫、XML、電子郵件等)。
    圖4列出了監測組件的可拓展接口。

    本文設計并實現了一款運行在作業環境下的代碼級的Web性能監測分析工具。它采集實時數據進行分析;使用AOP技術實現了Web應用系統的代碼級監測分析,并且可自由控制監測范圍;使用構件技術實現了即插即用,減少了對現有系統的修改和結構上的破壞,避免因性能監測而引入新的BUG;通過控制臺自由配置變更監測的范圍,靈活調整監測的目標;利用Windows性能計數器顯示檢測和分析的結果。該工具對系統進行監測分析時,不需要對作業系統進行任何重編譯的工作,盡量地降低性能監測所帶來的額外損耗。下一步將對構件包進行擴展,使其能夠應用在更多的系統上,實現多個被測系統的聯合監測。
參考文獻
[1] 朱幸輝,楊樹強.基于CORBA分布式對象監測系統的研究與實現[J].計算機應用研究,2005,22(10):39-41.
[2] 萬燦軍,李長云.基于動態AOP的構件交互行為監測器[J].計算機應用,2011,31(2):572-576.
[3] 黃興華,胡飛.AOP技術在面向用戶的軟件組件測試中的應用[J].計算機應用與軟件,2009,26(8):125-127.
[4] 萬燦軍,李長云.動態演化環境中可信軟件行為監控研究與進展[J].計算機應用研究,2009,26(4):1201-1204.
[5] 萬燦軍,李長云,賀宗梅.分布式軟件的交互行為監測機制的研究[J].計算機工程與應用,2011,47(5):60-64.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
伊人久久噜噜噜躁狠狠躁| 国语自产精品视频在线看8查询8 | 老司机午夜免费精品视频| 久久国内精品视频| 香蕉久久精品日日躁夜夜躁| 亚洲综合精品一区二区| 在线亚洲免费视频| 亚洲视频每日更新| 亚洲一线二线三线久久久| 亚洲一区免费在线观看| 亚洲一区二区三区在线播放| 亚洲性视频网站| 亚洲男人av电影| 亚洲欧美一区二区三区在线| 亚洲欧美日韩在线| 欧美一级电影久久| 欧美专区亚洲专区| 久久亚洲国产成人| 欧美成ee人免费视频| 欧美成人小视频| 欧美精品v日韩精品v韩国精品v| 欧美国产日韩二区| 欧美精品一区二| 欧美视频一区二| 国产精品视频内| 国产三区二区一区久久| 韩国女主播一区| 亚洲国产成人91精品| 亚洲看片网站| 亚洲一区二区精品在线观看| 午夜国产一区| 亚洲国产精品免费| 一区二区欧美在线观看| 亚洲欧美日韩一区二区在线 | 欧美专区在线观看| 久久精品国产亚洲aⅴ| 久久视频在线看| 欧美激情在线狂野欧美精品| 国产精品成人午夜| 国产欧美一区二区精品仙草咪| 国内成人精品2018免费看| 亚洲大胆av| 中文日韩在线视频| 欧美在线观看你懂的| 亚洲欧洲另类| 亚洲视频一区在线| 久久精品观看| 欧美日本韩国一区二区三区| 欧美午夜片在线免费观看| 国产日韩欧美在线播放| 伊人一区二区三区久久精品| 亚洲精品一区二区三区四区高清| 亚洲一二三级电影| 亚洲电影免费观看高清完整版在线 | 亚洲日本欧美日韩高观看| 在线亚洲激情| 亚洲国产福利在线| 亚洲免费影院| 免播放器亚洲| 国产精品网站一区| 亚洲黄色高清| 欧美亚洲网站| 一区二区精品| 久久中文字幕一区二区三区| 欧美日韩亚洲一区二区三区| 国产一区二区三区高清在线观看| 亚洲乱码国产乱码精品精 | 久久精品理论片| 欧美另类99xxxxx| 国产有码在线一区二区视频| 99日韩精品| 亚洲国产成人在线播放| 午夜精品久久久久久久99热浪潮| 女同性一区二区三区人了人一| 国产精品黄页免费高清在线观看| 日韩一区二区高清| 狠狠入ady亚洲精品| 99亚洲视频| 亚洲福利久久| 久久成人18免费观看| 欧美日韩mp4| 尤物九九久久国产精品的分类| 亚洲性感美女99在线| 亚洲人成小说网站色在线| 欧美一区二区在线观看| 欧美日韩高清区| 亚洲国产成人不卡| 先锋影音网一区二区| 亚洲欧美国产va在线影院| 欧美黄色一级视频| 狠狠综合久久av一区二区小说 | 在线电影一区| 欧美亚洲综合网| 性色av一区二区三区| 欧美精选一区| 亚洲第一区在线| 久久成人这里只有精品| 午夜亚洲福利| 国产精品久久久久久久久久久久久| 亚洲精选一区| 日韩一级免费观看| 欧美va天堂在线| 伊伊综合在线| 亚洲国产高清高潮精品美女| 久久久蜜臀国产一区二区| 国产欧美一区二区三区视频| 亚洲图片自拍偷拍| 亚洲调教视频在线观看| 欧美日产国产成人免费图片| 亚洲激情视频在线| 亚洲精品乱码久久久久久蜜桃91| 久久人人精品| 精品99视频| 亚洲激情视频在线观看| 看片网站欧美日韩| 在线日韩电影| 亚洲国产精品一区制服丝袜 | 亚洲高清视频的网址| 亚洲高清视频在线| 另类尿喷潮videofree| 极品中文字幕一区| 亚洲国产日本| 欧美国产另类| 欧美在线视频一区二区| 性欧美1819sex性高清| 午夜国产不卡在线观看视频| 国产精品美女久久久免费| 亚洲一二三区精品| 午夜综合激情| 国产亚洲精品久久久| 欧美一区二区视频在线| 久久中文字幕一区| 亚洲国产日韩欧美在线动漫| 日韩天堂在线观看| 欧美日韩亚洲另类| 亚洲无亚洲人成网站77777| 午夜欧美理论片| 国产亚洲欧美日韩美女| 亚洲国产精品一区二区www| 欧美黄色aaaa| 一区二区冒白浆视频| 午夜欧美电影在线观看| 国产午夜一区二区三区| 亚洲国产精品久久久久秋霞不卡| 欧美大片免费久久精品三p| 亚洲美女少妇无套啪啪呻吟| 亚洲一区在线看| 国产亚洲一区二区三区在线播放| 亚洲成色最大综合在线| 欧美激情亚洲自拍| 国产精品99久久久久久www| 久久99在线观看| 亚洲电影免费观看高清完整版在线观看 | 亚洲天堂av高清| 国产视频不卡| 亚洲国产成人精品久久| 欧美日韩精品三区| 亚洲欧美日韩国产成人| 另类图片综合电影| 一本色道久久| 久久久国产亚洲精品| 亚洲破处大片| 欧美一级免费视频| 亚洲国产天堂久久综合网| 亚洲欧美日韩视频一区| 国产综合第一页| 亚洲五月婷婷| 激情小说另类小说亚洲欧美| 一区二区三区精品在线| 国产日韩精品一区二区三区在线| 亚洲国产欧美国产综合一区| 国产精品高清在线| 亚洲激情不卡| 国产精品嫩草99a| 欧美成人激情在线| 欧美成人免费在线视频| 亚洲午夜视频在线| 欧美mv日韩mv国产网站app| 亚洲丝袜av一区| 欧美刺激性大交免费视频| 亚洲欧美在线aaa| 欧美日韩国产成人在线91| 欧美一区二区三区视频在线 | 老巨人导航500精品| 亚洲色诱最新| 欧美插天视频在线播放| 亚洲在线观看免费视频| 欧美黄网免费在线观看| 欧美一级黄色网| 国产精品99免费看 | 国产农村妇女精品一区二区| 99精品欧美| 国内成+人亚洲| 午夜激情亚洲| 亚洲理论在线观看| 免费在线播放第一区高清av| 午夜精品在线看| 欧美日韩视频第一区| 亚洲黄色av| 国产亚洲精品综合一区91|