亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于MVC+ORACLE+ODAC的企業(yè)內(nèi)部業(yè)務(wù)數(shù)據(jù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

        2016-11-08 08:34:00金智勇
        關(guān)鍵詞:數(shù)據(jù)模型視圖控制器

        周 敏 高 濟(jì) 金智勇

        1(浙江大學(xué)軟件學(xué)院 浙江 杭州 310027)2(浙江大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 浙江 杭州 310027)3(浙江樹人大學(xué)信息學(xué)院 浙江 杭州 310015)

        ?

        基于MVC+ORACLE+ODAC的企業(yè)內(nèi)部業(yè)務(wù)數(shù)據(jù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

        周敏1高濟(jì)2金智勇3

        1(浙江大學(xué)軟件學(xué)院浙江 杭州 310027)2(浙江大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院浙江 杭州 310027)3(浙江樹人大學(xué)信息學(xué)院浙江 杭州 310015)

        當(dāng)前不少大企業(yè)都以業(yè)務(wù)數(shù)據(jù)為基礎(chǔ),來判斷企業(yè)的投資領(lǐng)域和員工的績(jī)效,業(yè)務(wù)數(shù)據(jù)的統(tǒng)計(jì)和呈現(xiàn)尤為重要。大多企業(yè)內(nèi)部管理系統(tǒng)的現(xiàn)狀:前臺(tái)不可配置因而維護(hù)量大,后臺(tái)業(yè)務(wù)復(fù)雜因而團(tuán)隊(duì)開發(fā)效率低、新版本發(fā)布延遲,以及跨國(guó)公司業(yè)務(wù)數(shù)據(jù)不能及時(shí)同步因而數(shù)據(jù)不可靠。針對(duì)這一需求和現(xiàn)狀,采用基于MVC+ORALCE+ODAC的架構(gòu)開發(fā),結(jié)合SVN、Robocopy和Jenkins機(jī)制自動(dòng)同步數(shù)據(jù)和實(shí)時(shí)發(fā)布新版本。對(duì)系統(tǒng)的整體設(shè)計(jì)模型、完全可配置的前臺(tái)、MVC+ORACLE+ODAC架構(gòu)在系統(tǒng)中的應(yīng)用和關(guān)鍵技術(shù)進(jìn)行重點(diǎn)描述。該系統(tǒng)目前已應(yīng)用于杭州的某大公司,實(shí)際應(yīng)用證明該系統(tǒng)具有可配置、高效、可靠和安全的特點(diǎn)。

        業(yè)務(wù)數(shù)據(jù)MVCODAC配置Jenkins

        0 引 言

        隨著互聯(lián)網(wǎng)、物聯(lián)網(wǎng)和云計(jì)算等技術(shù)的高速發(fā)展[1],我們?cè)缫巡饺氪髷?shù)據(jù)的時(shí)代[2]。企業(yè)的業(yè)務(wù)數(shù)據(jù)對(duì)企業(yè)的發(fā)展具有重要意義,因此不少大企業(yè)都有自己的內(nèi)部業(yè)務(wù)數(shù)據(jù)管理系統(tǒng),借以來統(tǒng)計(jì)業(yè)務(wù)、分析市場(chǎng)、判斷投資和考核員工等。

        然而目前大多相關(guān)系統(tǒng)在開發(fā)和維護(hù)中的現(xiàn)狀:業(yè)務(wù)邏輯和頁面顯示混合在一起,不利于團(tuán)隊(duì)開發(fā);數(shù)據(jù)訪問方式采用內(nèi)嵌SQL語句,不利于系統(tǒng)的維護(hù);前臺(tái)維護(hù)成本高,尤其在新年度增加新業(yè)務(wù)或部門時(shí);跨國(guó)子公司間業(yè)務(wù)數(shù)據(jù)不能及時(shí)同步,數(shù)據(jù)準(zhǔn)確性低。同時(shí),大公司的業(yè)務(wù)復(fù)雜多變,導(dǎo)致團(tuán)隊(duì)開發(fā)效率低下,新版本發(fā)布延遲。

        由于企業(yè)需求和市場(chǎng)需要,開發(fā)此類系統(tǒng)已成為科研單位和眾多公司承擔(dān)的項(xiàng)目。本文鑒于大多大公司采用ORACLE數(shù)據(jù)庫,采用基于MVC+ORACLE+ODAC的架構(gòu)開發(fā),借助Jenkins機(jī)制實(shí)時(shí)同步數(shù)據(jù)和發(fā)布新版本,采用反射的機(jī)制獲取前臺(tái)動(dòng)態(tài)和靜態(tài)數(shù)據(jù),基于JSON[3]的Ajax更新前臺(tái)呈現(xiàn)方式,為.NET平臺(tái)中結(jié)合ORALCE數(shù)據(jù)庫的MVC開發(fā)提供了一種解決方案。

        相比傳統(tǒng)的意義上的Web開發(fā)框架,本框架中視圖層和業(yè)務(wù)層分離,數(shù)據(jù)訪問層模型可根據(jù)數(shù)據(jù)庫表結(jié)構(gòu)的變化而自動(dòng)更新,減少編程工作量并加大了代碼的重用率,利于團(tuán)隊(duì)分模塊開發(fā),同時(shí)也加強(qiáng)了程序的可維護(hù)性。

        1 系統(tǒng)設(shè)計(jì)

        1.1系統(tǒng)框架

        為了便于團(tuán)隊(duì)的分工開發(fā),提高團(tuán)隊(duì)的開發(fā)效率,并鑒于實(shí)際開發(fā)中大多采用的是ORACLE數(shù)據(jù)庫,本企業(yè)內(nèi)部業(yè)務(wù)數(shù)據(jù)系統(tǒng)應(yīng)用MVC+ORACLE+ODAC框架[4]完成開發(fā),其基本結(jié)構(gòu)如圖1所示。

        圖1 企業(yè)內(nèi)部業(yè)務(wù)數(shù)據(jù)管理系統(tǒng)框架

        用戶通過瀏覽器發(fā)送請(qǐng)求給控制器,控制器根據(jù)具體邏輯訪問模型并處理,發(fā)送給視圖,通過視圖呈現(xiàn)給用戶。在該圖中控制器和視圖相當(dāng)于Web三層結(jié)構(gòu)中的表示層(UI)。Web三層結(jié)構(gòu)中的業(yè)務(wù)邏輯層(BLL)和數(shù)據(jù)訪問層(DAL)對(duì)應(yīng)于MVC架構(gòu)中的模型。本系統(tǒng)采用DatabaseFirst(數(shù)據(jù)庫優(yōu)先)的開發(fā)方式,數(shù)據(jù)訪問采用edmx模型和相關(guān)組建(ODAC),它實(shí)現(xiàn)了業(yè)務(wù)邏輯層(BLL)和數(shù)據(jù)庫中數(shù)據(jù)的交互。原始數(shù)據(jù)源是ORACLE數(shù)據(jù)庫,存儲(chǔ)本系統(tǒng)中需應(yīng)用到的業(yè)務(wù)數(shù)據(jù)。

        1.2功能模塊

        根據(jù)實(shí)際需要,本企業(yè)內(nèi)部業(yè)務(wù)數(shù)據(jù)系統(tǒng)主要分為8大模塊,各個(gè)模塊有相應(yīng)子模塊,如圖2所示。

        圖2 企業(yè)內(nèi)部業(yè)務(wù)數(shù)據(jù)管理功能模塊

        下面對(duì)各個(gè)模塊的功能簡(jiǎn)要說明:

        (1)User模塊:通過登錄完成對(duì)公司用戶的角色認(rèn)證。系統(tǒng)將根據(jù)用戶的角色,對(duì)管理系統(tǒng)業(yè)務(wù)數(shù)據(jù)的訪問進(jìn)行控制,并提供個(gè)性化的操作和服務(wù)。

        (2)RoleManager模塊:對(duì)公司所有用戶進(jìn)行角色管理,以及對(duì)其他模塊需要的角色控制,比如MeetingScore等,并滿足以后用戶拓展的需求。

        (3)Dashboard模塊:這是公司的核心模塊,公司各部門的業(yè)務(wù)數(shù)據(jù)都詳細(xì)統(tǒng)計(jì)在該模塊中,該模塊的主頁面可以完全后臺(tái)配置,并滿足各部門需要。采用反射的方式,將靜態(tài)和動(dòng)態(tài)的數(shù)據(jù)呈現(xiàn)出來,并對(duì)每一具體的數(shù)值都以表格詳細(xì)統(tǒng)計(jì)出來,每一組數(shù)值都以圖表形式直觀展現(xiàn)。

        (4)Program模塊:關(guān)于公司項(xiàng)目情況的統(tǒng)計(jì),按照公司的各種統(tǒng)計(jì)方法,按照日、周、月以圖表的方式動(dòng)態(tài)呈現(xiàn)。

        (5)Metrics模塊:各個(gè)部門具體業(yè)務(wù)數(shù)據(jù)的圖表展示,各部可以上傳自己部門當(dāng)年、季度目標(biāo),實(shí)時(shí)繪制當(dāng)前業(yè)務(wù)情況。

        (6)EmailSend模塊:系統(tǒng)根據(jù)用戶的角色,定時(shí)向所有用戶發(fā)送合乎角色的信息,并可以根據(jù)用戶收藏(關(guān)注)的頁面,定時(shí)發(fā)送給該用戶相關(guān)的業(yè)務(wù)數(shù)據(jù)。

        (7)MeetingScore模塊:公司的會(huì)議系統(tǒng)模塊,包含打分、出勤、分?jǐn)?shù)統(tǒng)計(jì)和分析等情況。

        (8)JenkinsMange模塊:包含對(duì)系統(tǒng)實(shí)時(shí)同步子公司數(shù)據(jù)和實(shí)時(shí)發(fā)布當(dāng)前最新版本的系統(tǒng)配置。

        1.3數(shù)據(jù)庫設(shè)計(jì)

        本文對(duì)數(shù)據(jù)庫Dashboard部分的設(shè)計(jì)做詳細(xì)描述,完全可配置的Dashboard前臺(tái),其余業(yè)務(wù)數(shù)據(jù)、權(quán)限管理等數(shù)據(jù)庫設(shè)計(jì)這里不予介紹。Dashboard模塊數(shù)據(jù)庫設(shè)計(jì)如圖3所示。

        圖3 Dashboard模塊數(shù)據(jù)庫設(shè)計(jì)

        Dashboard設(shè)計(jì)為完全可配置的前臺(tái),Dashboard表為具體某一階段或某一部門的業(yè)務(wù)集名稱。具體的該業(yè)務(wù)集中的所有業(yè)務(wù)和業(yè)務(wù)數(shù)據(jù)內(nèi)容由DashboardRecord表存儲(chǔ)和維護(hù)。

        在DashboardRecord表中,KPI_Name為該業(yè)務(wù)在頁面上顯示的名稱,KPI_NC存儲(chǔ)該業(yè)務(wù)訪問本業(yè)務(wù)中其他頁面(比如該業(yè)務(wù)所屬分類、圖表分析和具體業(yè)務(wù)詳情等)以及參數(shù)的序列化值。ClassType和Parameters為通過反射的方式獲取數(shù)據(jù)的類名和初始化參數(shù),具體參見1.4節(jié)反射機(jī)制和類圖。DisplayOrder為該業(yè)務(wù)對(duì)應(yīng)分類在頁面中顯示的順序,InnerOder為該業(yè)務(wù)在所屬分類中顯示的次序。IsVisible進(jìn)行訪問權(quán)限管理,當(dāng)IsVisible為“Public”時(shí),為公司內(nèi)所有用戶都可訪問,當(dāng)IsVisible為具體角色名時(shí),只有擁有該用戶角色的用戶才可見。

        1.4反射機(jī)制和類圖

        C#反射(Reflection)機(jī)制是在ADO.NET運(yùn)行時(shí)獲取類型信息的方式,即可以通過類名在運(yùn)行創(chuàng)建相應(yīng)類的對(duì)象。因此,為實(shí)現(xiàn)前端業(yè)務(wù)數(shù)據(jù)的顯示方式是可配置的,只需要對(duì)相應(yīng)記錄配置類名和修改相關(guān)參數(shù)即可。

        本系統(tǒng)中公司的數(shù)據(jù)分為靜態(tài)數(shù)據(jù)和動(dòng)態(tài)數(shù)據(jù),對(duì)于動(dòng)態(tài)數(shù)據(jù)通過存儲(chǔ)過程從數(shù)據(jù)庫中獲取數(shù)據(jù),由相應(yīng)的類來實(shí)現(xiàn),對(duì)于靜態(tài)數(shù)據(jù)更加容易,存儲(chǔ)在DashboardStatic表中(見1.3節(jié)圖3)常見的數(shù)據(jù)類型格式畢竟有限,根據(jù)不同的顯示格式可以設(shè)計(jì)出不同的類來獲取數(shù)據(jù)。具體UML類圖設(shè)計(jì)如圖4所示。

        圖4 Dashboard模塊UML類圖設(shè)計(jì)

        設(shè)計(jì)思路如下:定義接口IDashboard,有一個(gè)行為是GetData,并定義一個(gè)實(shí)現(xiàn)該接口的抽象類DashboardItem。派生出獲取動(dòng)態(tài)類數(shù)據(jù)的類DynamicDashboardItem和獲取靜態(tài)類數(shù)據(jù)的類StaticDashboardItem,在以此分別派生為Positive和Negative的類(比如圖3中,靜態(tài)數(shù)據(jù)表DashboardStatic中Value不小于Target為Positive,否則為Negative,動(dòng)態(tài)數(shù)據(jù)類似)。

        對(duì)于靜態(tài)數(shù)據(jù),數(shù)據(jù)從圖3中DashboardStatic中獲取,對(duì)于動(dòng)態(tài)數(shù)據(jù)通過不同的類獲得,比如這里的OCDR、NCDR和Outage類。這時(shí),參考圖3中DashboardRecord表,即可將ClassType(UML類圖中的類名)和Parameters作為參數(shù),通過反射獲取Dashboard中所有的業(yè)務(wù)數(shù)據(jù)。

        2 MVC+ORACLE+ODAC在本系統(tǒng)中的應(yīng)用

        2.1ODAC介紹

        ODAC是Oracle數(shù)據(jù)訪問組建,ODAC編程人員可以直接使用Oracle調(diào)用接口(OCI),使用第三方語言(本文是C#)調(diào)用Oracle數(shù)據(jù)服務(wù)器中的存儲(chǔ)過程、函數(shù)或者通過SQL語句進(jìn)行相關(guān)的操作。

        目前,大多數(shù)ASP.NET中MVC開發(fā)模式,多采用MVC+MSSQL+EF的開發(fā)平臺(tái),使用MVC+ORACLE+ODAC平臺(tái)的研究相對(duì)很少見,然而實(shí)際開發(fā)中,大多大企業(yè)使用的是ORACLE數(shù)據(jù)庫,本文基于這種開發(fā)平臺(tái)彌補(bǔ)了這方面研究的不足。

        2.2基于ORACLE的Database First開發(fā)模式

        在ADO.NET中EntityFramework框架中,針對(duì)常用開發(fā)場(chǎng)景和編程模式優(yōu)化出新的API:DbContextAPI。DbContext可以被用于三種開發(fā)模式:DatabaseFirst,ModelFirst,CodeFirst。在ASP.NET的開發(fā)模式中,DatabaseFirst開發(fā)模式是系統(tǒng)開發(fā)中的一個(gè)傳統(tǒng)模式,對(duì)需求固定的開發(fā)場(chǎng)景來看更為有效;使用ModelFirst可以通過設(shè)計(jì)模型和模型間的關(guān)系,快速映射出實(shí)體類和數(shù)據(jù)庫表的設(shè)計(jì);CodeFirst多用于需求不斷變化的敏捷開發(fā)中,通過定義可變化的實(shí)體類模型映射出現(xiàn)有的數(shù)據(jù)庫或者產(chǎn)生新的數(shù)據(jù)庫結(jié)構(gòu)。

        鑒于大部分公司的數(shù)據(jù)存放在ORACLE數(shù)據(jù)庫服務(wù)器中,公司的其他系統(tǒng)仍舊依賴該數(shù)據(jù)庫,并且本系統(tǒng)需求比較固定,因此本文中使用DatabaseFirst開發(fā)模式,并結(jié)合ODAC組建,數(shù)據(jù)訪問將基于數(shù)據(jù)庫中關(guān)系表及結(jié)構(gòu)生成的模型edmx實(shí)體(Model)框架。

        2.3MVC介紹

        MVC由TrygveReenskaug提出,是“Model(模型)-View(視圖)-Controller(控制器[5])”的縮寫[6]。下面結(jié)合Web三層架構(gòu)和實(shí)際開發(fā)分析MVC模式如下:

        模型是MVC設(shè)計(jì)的核心基礎(chǔ),它是系統(tǒng)的業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層。模型可以作為控制器和視圖之間的載體,實(shí)現(xiàn)數(shù)據(jù)驗(yàn)證和維護(hù);模型也處理業(yè)務(wù)邏輯,是系統(tǒng)的業(yè)務(wù)邏輯層(BLL)。本文中的edmx實(shí)體數(shù)據(jù)模型是數(shù)據(jù)訪問層(DAL)。在企業(yè)內(nèi)部業(yè)務(wù)數(shù)據(jù)系統(tǒng)中,模型很好地完成了數(shù)據(jù)庫中信息和應(yīng)用程序的映射和訪問。

        視圖是表示層,用戶交互的界面。主要負(fù)責(zé)顯示數(shù)據(jù)和用戶輸入,并不參與任何實(shí)際的業(yè)務(wù)處理。它通過模型處理后顯示相應(yīng)的信息或者直接通過控制器中對(duì)應(yīng)的Action返回需要的信息。結(jié)合Razor語法,書寫簡(jiǎn)潔并且可以對(duì)顯示的內(nèi)容進(jìn)行進(jìn)一步的處理,同時(shí)和HTML語法很好的兼容。

        控制器在三者中扮演著非常重要的角色,它是界面和視圖的協(xié)調(diào)者[7]。接收用戶的輸入,結(jié)合模型響應(yīng)給對(duì)應(yīng)的視圖。在本系統(tǒng)中,用戶通過瀏覽器發(fā)送的頁面請(qǐng)求,控制器接收并處理請(qǐng)求信息,并結(jié)合模型去獲取相應(yīng)的數(shù)據(jù)。控制器有效地實(shí)現(xiàn)了視圖和業(yè)務(wù)邏輯的分離。

        MVC這種松耦合的架構(gòu)特性有利于系統(tǒng)的升級(jí)和拓展以及團(tuán)隊(duì)開發(fā),編程人員關(guān)注特定的層次,并行開發(fā)。數(shù)據(jù)庫表結(jié)構(gòu)的改變可自動(dòng)更新出新的實(shí)體模型,大大提高了系統(tǒng)開發(fā)的靈活性和配置性。

        2.4MVC、 ORACLE和ODAC之間的交互

        下面以Dashboard主頁上所有業(yè)務(wù)數(shù)據(jù)列表查詢?yōu)槔敿?xì)說明MVC(模型、視圖和控制器)內(nèi)部與ORACLE數(shù)據(jù)庫之間信息交互的整個(gè)流程。在本系統(tǒng)中,它們的相互關(guān)系[8]如圖5所示。

        圖5 MVC、ORACLE和ODAC間的交互關(guān)系圖

        用戶通過瀏覽器訪問Dashboard主頁,到獲得頁面返回的結(jié)果,需要經(jīng)過以下9個(gè)步驟。

        (1) 用戶通過瀏覽器頁面請(qǐng)求,向控制器發(fā)出相關(guān)命令。

        (2) 控制器接收到請(qǐng)求,將請(qǐng)求發(fā)送給Dashboard業(yè)務(wù)邏輯模型(BLL)進(jìn)行處理。

        (3)Dashboard業(yè)務(wù)邏輯模型(BLL)請(qǐng)求數(shù)據(jù)訪問,需要訪問數(shù)據(jù)庫獲取業(yè)務(wù)數(shù)據(jù)。

        (4) 數(shù)據(jù)訪問模型edmx(DAL)借助ODAC組建,訪問ORACLE數(shù)據(jù)庫源數(shù)據(jù)。

        (5)ORACLE數(shù)據(jù)庫返回業(yè)務(wù)數(shù)據(jù)給模型edmx,該模型對(duì)原始數(shù)據(jù)按照相應(yīng)實(shí)體類進(jìn)行驗(yàn)證和組裝。

        (6) 模型edmx將取得的數(shù)據(jù)交給業(yè)務(wù)邏輯模型(BLL),進(jìn)行指定的業(yè)務(wù)邏輯處理。

        (7) 業(yè)務(wù)邏輯模型處理完成后,返回給控制器。

        (8) 控制器將數(shù)據(jù)發(fā)送給指定的視圖。

        (9) 該視圖將Dashboard數(shù)據(jù)呈現(xiàn)給用戶。

        至此,對(duì)Dashboard的一個(gè)訪問周期完成。從上述9個(gè)步驟不難發(fā)現(xiàn),因?yàn)榭刂破鞯膮f(xié)調(diào),頁面和業(yè)務(wù)邏輯分離,降低了架構(gòu)的耦合性,提高團(tuán)隊(duì)開發(fā)效率和代碼重用率。在本系統(tǒng)中,模型分為業(yè)務(wù)邏輯模型(BLL)和數(shù)據(jù)訪問模型(DAL),ORACLE數(shù)據(jù)訪問部分和模型中的實(shí)體類可通過數(shù)據(jù)庫映射產(chǎn)生,大大減少了代碼的書寫量。編碼工作主要集中在控制器和業(yè)務(wù)邏輯部分以及視圖部分,團(tuán)隊(duì)分工也更加明確。

        3 實(shí)體數(shù)據(jù)模型與數(shù)據(jù)訪問

        3.1實(shí)體數(shù)據(jù)模型

        本系統(tǒng)使用VisualStudio2012(VS2012)開發(fā)平臺(tái),采用MVC+ORACLE+ODAC架構(gòu),采用DatabaseFirst開發(fā)方式,可將ORACLE數(shù)據(jù)庫中的表和視圖,直接映射獲得數(shù)據(jù)庫訪問實(shí)體數(shù)據(jù)模型edmx和對(duì)應(yīng)實(shí)體類以及實(shí)體類之間的關(guān)系。本文由于篇幅限制,僅展示模型edmx(DAL)中Dashboard、Roles、Users和MeetingScore模塊,Dashboard模塊如圖6所示,其余模塊如圖7所示。

        圖6 edmx模型中Dashboard模塊圖

        圖7 edmx模型中Users和Roles模塊圖

        通過實(shí)體數(shù)據(jù)模型工具生成edmx模型框架,完成對(duì)數(shù)據(jù)庫中表和視圖的映射,并生成相應(yīng)實(shí)體類。ORACLE數(shù)據(jù)庫中表結(jié)構(gòu)或視圖的改變,可以通過MVC+ORACLE+ODAC直接更新模型和實(shí)體類,大大提高了開發(fā)效率。

        3.2數(shù)據(jù)訪問

        3.2.1數(shù)據(jù)庫連接

        本系統(tǒng)中,數(shù)據(jù)庫連接字符串存放在Web.config文件中,在實(shí)際開發(fā)中,可通過ConfigurationSetting.AppSettings靜態(tài)字符串集合來獲取連接字符串。本系統(tǒng)Web.config文件中數(shù)據(jù)庫連接字符串如下所示:

        connectionString=″userid=Dashboard;

        password=Dashboard;

        DataSource=db1;″

        providerName=″Oracle.DataAccess.Client″/>

        connectionString=″metadata=

        res://*/DAL.ModelDashboard.csdl|

        res://*/DAL.ModelDashboard.ssdl|

        res://*/DAL.ModelDashboard.msl;

        provider=Oracle.DataAccess.Client;

        providerconnectionstring="

        datasource=db1;

        password=Dashboard;

        userid=Dashboard"″

        providerName=″System.Data.EntityClient″ />

        本文有兩個(gè)數(shù)據(jù)庫訪問字符串,分別為PortalOracle和EntitiesDashboard,后者在使用VS2012數(shù)據(jù)庫映射時(shí)自動(dòng)添加。兩者本質(zhì)上是同一數(shù)據(jù)庫db1的訪問字符串,但作用不同。前者在使用存儲(chǔ)過程時(shí)使用較多(詳見3.2.3節(jié)),后者對(duì)應(yīng)edmx模型(即3.1節(jié)中的實(shí)體數(shù)據(jù)模型,ModelDashboard),通過實(shí)體數(shù)據(jù)模型可直接訪問數(shù)據(jù)庫(詳見3.2.2節(jié))。

        3.2.2LINQ to Entities

        ADO.NET是數(shù)據(jù)庫與.NET互操作的核心,而實(shí)體數(shù)據(jù)模型(edmx模型)則增強(qiáng)了.NET應(yīng)用程序與數(shù)據(jù)庫的交互能力。通過實(shí)體數(shù)據(jù)模型,可更加簡(jiǎn)便地與數(shù)據(jù)庫進(jìn)行強(qiáng)類型的數(shù)據(jù)互操作,減少數(shù)據(jù)訪問所需要的代碼量。

        LINQtoEntities允許編程人員使用C#根據(jù)實(shí)體數(shù)據(jù)模型編寫查詢、插入、修改和刪除操作,滿足大部分?jǐn)?shù)據(jù)庫相關(guān)操作的需要。本文僅以MeetingScore查詢已參加并打分的所有會(huì)議為例,代碼如下:

        1:EntitiesDashboarddb=newEntitiesDashboard();

        2:varmeetingInfos=(fromtempindb.MeetingScore

        3:wheretemp.Attended==user

        4:selecttemp.MeetingInfoID)

        5:.Distinct().ToList();

        代碼第1行,是創(chuàng)建了一個(gè)名為db的實(shí)體數(shù)據(jù)模型,第2-4行使用LINQ表達(dá)式,從MeetingScore表中,查詢參加者為user的所有MeetingInfoID。第5行去重復(fù)并轉(zhuǎn)化為列表。下面只要結(jié)合MeetingInfo表即可查詢會(huì)議相關(guān)的其他信息。這里舉例,實(shí)際開發(fā)中可以實(shí)現(xiàn)更為復(fù)雜的操作。

        3.2.3LINQ to DataSet

        DataSet是生成ADO.NTE的斷開連接式編程模型的關(guān)鍵組件,它是數(shù)據(jù)源中檢索到的數(shù)據(jù)在內(nèi)存中的緩存。本系統(tǒng)中通過數(shù)據(jù)庫訪問字符串名PortalOracle(參考3.2.1),借助SqlDataAdapter,執(zhí)行相應(yīng)的存儲(chǔ)過程以及參數(shù),實(shí)例化DataSet對(duì)象,并通過Fill方法實(shí)現(xiàn)DataSet和Oracle數(shù)據(jù)庫之間的橋接[3],將數(shù)據(jù)填充到DataSet中。最后通過LINQ查詢表達(dá)式從DataSet中獲取相應(yīng)的數(shù)據(jù)。旨在解決關(guān)聯(lián)多張表和邏輯復(fù)雜的查詢過程中,效率低的問題。

        4 版本實(shí)時(shí)發(fā)布與自動(dòng)同步機(jī)制

        Jenkins是基于Java開發(fā)的一種持續(xù)繼承工具,并且是一個(gè)開源軟件項(xiàng)目,可以用于監(jiān)控持續(xù)重復(fù)的工作,本系統(tǒng)中主要的應(yīng)用功能如下:

        (1) 持續(xù)的軟件版本發(fā)布和測(cè)試項(xiàng)目。詳見4.1節(jié)。

        (2) 監(jiān)控外部調(diào)用執(zhí)行的操作。詳見4.2節(jié)。

        4.1版本實(shí)時(shí)發(fā)布機(jī)制

        為了提高團(tuán)隊(duì)的開發(fā)效率,存儲(chǔ)和維護(hù)各個(gè)版本,并實(shí)時(shí)發(fā)布新版本,本系統(tǒng)采用結(jié)合SVN和Jenkins機(jī)制,實(shí)現(xiàn)系統(tǒng)新版本的實(shí)時(shí)發(fā)布,其基本結(jié)構(gòu)如圖8所示。

        圖8 團(tuán)隊(duì)開發(fā)和實(shí)時(shí)發(fā)布版本機(jī)制

        結(jié)合.NETFRAMEWORK中的ASPNET_COMPLIER,將VisualSVNServer中最新版本代碼同步,編譯后存放到指定目錄,即IIS服務(wù)器目錄。減少了人工編譯的繁瑣,提高了系統(tǒng)版本發(fā)布的效率。示例代碼如下:

        1:PathC:WINDOWSMicrosoft.NETFrameworkv4.0.30319

        2:aspnet_compiler-v/ -p.LTE-f-d-u.Build

        該代碼第2行中.LTE為L(zhǎng)ocalmoduledirectory(optional)的值,.Build為編譯后存放地址,即IIS部署目錄。

        4.2自動(dòng)同步機(jī)制

        本文中通過Robocopy和Jenkins的結(jié)合使用,監(jiān)控各分公司(跨國(guó)企業(yè),各公司之間數(shù)據(jù)共享和一致性存在的延遲)的最新業(yè)務(wù)數(shù)據(jù),實(shí)時(shí)刷新并保存數(shù)據(jù)的可靠性,減少了DBA的工作量并且保證數(shù)據(jù)刷新的正確性,實(shí)現(xiàn)類似4.1節(jié)。

        5 系統(tǒng)界面實(shí)例

        在本系統(tǒng)中,界面設(shè)計(jì)應(yīng)用到了HTML、CSS、Ajax、JavaScript和JQuery等相關(guān)技術(shù)。本文搭建的企業(yè)內(nèi)部業(yè)務(wù)數(shù)據(jù)管理系統(tǒng)是一個(gè)比較復(fù)雜的網(wǎng)站,界面較多,本文列出主要界面,如圖9所示。

        圖9 網(wǎng)站總體界面結(jié)構(gòu)

        本系統(tǒng)為企業(yè)內(nèi)部業(yè)務(wù)數(shù)據(jù)管理系統(tǒng),部署在公司內(nèi)網(wǎng),公司內(nèi)部的用戶,可通過匿名方式訪問公共開放的企業(yè)內(nèi)部業(yè)務(wù)數(shù)據(jù)。對(duì)于有權(quán)限設(shè)置的業(yè)務(wù)數(shù)據(jù),系統(tǒng)做了強(qiáng)制登錄設(shè)置。

        本文僅對(duì)Dashboard可完全配置的頁面作簡(jiǎn)單展示,如圖10-圖12所示。圖10是Dashboard主頁,因?yàn)榘婷嫦拗疲@里只是Dashboard中的部分內(nèi)容,有兩類為Quality和Parterner/Lab,每類中有相應(yīng)的業(yè)務(wù),業(yè)務(wù)的數(shù)據(jù)如右側(cè)P01-P08所示,數(shù)據(jù)顯示的格式、顯示的方式、背景顏色等都是可配置的。圖11為Dashboard配置的頁面,對(duì)具體業(yè)務(wù)在Dashboard中顯示的順序這里未展示,對(duì)ClassType、KPI等展示如圖11。圖12對(duì)NCDR業(yè)務(wù)數(shù)據(jù)進(jìn)行編輯,可以更改名字、顯示順序、反射使用的類、參數(shù)以及年度目標(biāo)等所有數(shù)據(jù)。

        圖10 Dashboard主頁(部分內(nèi)容)

        圖11 Dashboard主頁配置頁面(部分內(nèi)容)

        圖12 對(duì)Quality中NCDR進(jìn)行具體參數(shù)配置(部分內(nèi)容)

        6 結(jié) 語

        本文在ADO.NET平臺(tái)中,基于MVC+ORACLE+ODAC的架構(gòu)開發(fā),彌補(bǔ)了MVC結(jié)合ORALCE開發(fā)方面研究的不足。利用Jenkins搭建的兩種機(jī)制,利于團(tuán)隊(duì)開發(fā)并實(shí)時(shí)發(fā)布新版本以及自動(dòng)同步業(yè)務(wù)數(shù)據(jù)。該架構(gòu)中大大減少了編程工作量,并提高了代碼的復(fù)用率,降低了開發(fā)成本和維護(hù)成本。對(duì)于可配置的前臺(tái),利用反射的方式獲取靜態(tài)和動(dòng)態(tài)數(shù)據(jù),提供出了合理有效的解決方案。此外,所開發(fā)的企業(yè)內(nèi)部業(yè)務(wù)數(shù)據(jù)系統(tǒng),對(duì)使用ORACLE數(shù)據(jù)庫開發(fā)的企業(yè)內(nèi)部系統(tǒng)、對(duì)企業(yè)自動(dòng)化測(cè)試、實(shí)時(shí)發(fā)布新版本、各子公司數(shù)據(jù)實(shí)時(shí)同步具有一定的參考價(jià)值。

        [1] 任磊,杜一,馬帥,等.大數(shù)據(jù)可視分析綜述[J].軟件學(xué)報(bào),2014,25(9):1909-1936.

        [2] 王元卓,靳小龍,程學(xué)旗.網(wǎng)絡(luò)大數(shù)據(jù):現(xiàn)狀與展望[J].計(jì)算機(jī)學(xué)報(bào),2013,36(6):1125-1138.

        [3] 孫光明,王碩.基于JSON的Ajax數(shù)據(jù)通信快速算法[J].計(jì)算機(jī)應(yīng)用與軟件,2015,32(1):263-266.

        [4] 李志,賈克斌,李真真,等.基于.NETMVC架構(gòu)的網(wǎng)上珠寶銷售系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(3):186-189,192.

        [5]gvSIGMini.TheIntroductionofgvSIGMini[EB/OL].(2012-4-2).https://confluence.prodevelop.es/display/GVMN/Home.

        [6] 任廣震,侯進(jìn),王獻(xiàn).MVC模式在B/S結(jié)構(gòu)政務(wù)系統(tǒng)的應(yīng)用研究[J].計(jì)算機(jī)應(yīng)用與軟件,2014,31(8):54-58,74.

        [7]StefanSteiniger,GeoffreyJHay.Freeandopensourcegeographicinformationtoolsforlandscapeecology[J].EcologicalInformatics,2009(4):183-195.

        [8]OSM.AndroidsoftwaresupportingOpenStreetMap[EB/OL].(2012-4-2).http://wiki.openstreetmap.org/wiki/Android.

        DESIGNANDIMPLEMENTATIONOFINNERENTERPRISEBUSINESSDATASYSTEMBASEDONMVC+ORACLE+ODAC

        ZhouMin1GaoJi2JinZhiyong3

        1(CollegeofSoftwareTechnology,ZhejiangUniversity,Hangzhou310027,Zhejiang,China)2(CollegeofComputerScienceandTechnology,ZhejiangUniversity,Hangzhou310027,Zhejiang,China)3(CollegeofInformation,ZhejiangShurenUniversity,Hangzhou310015,Zhejiang,China)

        Atpresent,manybig-sizedcompaniesdeterminetheachievementsininvestmentareasandtheperformanceofemployeesbasedonbusinessdata,thestatisticsandpresentationofbusinessdataisparticularlyimportant.Thestatusquoofmostofenterprises’innerbusinessdatasystemis:theuserinterfacecannotbeconfiguredsothatthemaintenanceloadisheavy;thebusinesslogiciscomplicatedsotheefficiencyofteamdevelopmentislowandthereleaseofnewversionwillbedelayed;andthebusinessdataofmulti-nationalcorporationscannotbetimelysynchronisedsothedataisnotreliable.Inviewofthedemandandthecurrentsituation,weusetheMVC+ORACLE+ODAC-basedarchitecturefordevelopment,combinesthemechanismsofSVN,RobocopyandJenkinsforautomaticdatasynchronisationandforreal-timenewversionsrelease.Inthispaper,weputtheemphasisondescribingtheoveralldesignmodelofthesystem,thefullyconfigurableuserinterface,theapplicationofMVC+ORACLE+ODACarchitectureinthesystem,andthekeytechnologies.ThesystemhasbeenappliedinalargecompanyofHangzhou.Practicaloperationsprovethatthesystemhasthecharacteristicsofbeingconfigurable,highefficiency,reliableandsafe.

        BusinessdataMVCODACConfigurationJenkins

        2015-08-31。國(guó)家重點(diǎn)基礎(chǔ)研究計(jì)劃項(xiàng)目(2003cb31700);國(guó)家高技術(shù)研究發(fā)展計(jì)劃項(xiàng)目(2007AA01Z187)。周敏,碩士生,主研領(lǐng)域:軟件工程,多Agent服務(wù)協(xié)同。高濟(jì),教授。金智勇,副教授。

        TP

        ADOI:10.3969/j.issn.1000-386x.2016.10.016

        猜你喜歡
        數(shù)據(jù)模型視圖控制器
        面板數(shù)據(jù)模型截面相關(guān)檢驗(yàn)方法綜述
        加熱爐爐內(nèi)跟蹤數(shù)據(jù)模型優(yōu)化
        5.3 視圖與投影
        視圖
        Y—20重型運(yùn)輸機(jī)多視圖
        SA2型76毫米車載高炮多視圖
        模糊PID控制器設(shè)計(jì)及MATLAB仿真
        MOXA RTU控制器ioPAC 5542系列
        倍福 CX8091嵌入式控制器
        4V三輸出同步降壓型控制器
        亚洲精品国产亚洲av| 亚洲a∨天堂男人无码| 亚洲成aⅴ人片在线观看天堂无码| 国产成人美涵人妖视频在线观看 | 亚洲午夜av久久久精品影院色戒| 亚洲小说区图片区另类春色| 人妻少妇不满足中文字幕| 亚洲一区久久久狠婷婷| 99e99精选视频在线观看| 精品淑女少妇av久久免费 | 精品三级国产一区二区三| 日本一本之道高清不卡免费| 99精品电影一区二区免费看| 一本大道久久精品一本大道久久| 青青草视频在线观看网| 亚洲av永久无码精品网址| 精品人妻无码视频中文字幕一区二区三区 | 国产好大好硬好爽免费不卡| 国产91精选在线观看麻豆| 亚洲免费看三级黄网站| 国产毛片黄片一区二区三区| 熟女熟妇伦av网站| 国内成人精品亚洲日本语音| 字幕网中文字幕精品一区| 真实的国产乱xxxx在线| 97精品伊人久久大香线蕉| 人妻少妇中文字幕久久69堂| 91九色最新国产在线观看| 国产午夜精品一区二区三区嫩草 | 性色做爰片在线观看ww| 亚洲国产精品久久久久秋霞1| 国产成人av一区二区三| 免费国产线观看免费观看| 亚洲av无码国产剧情| 国产AV无码专区亚洲AWWW| 日本精品一区二区三区在线观看| 亚洲裸男gv网站| 久久半精品国产99精品国产| 男人一插就想射的原因| 日韩人妻ol丝袜av一二区| 欧美嫩交一区二区三区|