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

        ?

        基于存儲(chǔ)過(guò)程和HTTP協(xié)議的消息主動(dòng)推送系統(tǒng)實(shí)現(xiàn)

        2016-12-12 07:34:20夏凌云龔文濤
        微型電腦應(yīng)用 2016年11期
        關(guān)鍵詞:輪詢觸發(fā)器調(diào)用

        夏凌云,龔文濤

        基于存儲(chǔ)過(guò)程和HTTP協(xié)議的消息主動(dòng)推送系統(tǒng)實(shí)現(xiàn)

        夏凌云,龔文濤

        數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程和觸發(fā)器多用于數(shù)據(jù)完整性檢測(cè)和復(fù)雜規(guī)則約束,其提供了一個(gè)當(dāng)數(shù)據(jù)表數(shù)據(jù)發(fā)生變更后的主動(dòng)操作機(jī)制,Oracle數(shù)據(jù)庫(kù)還提供了UTL_HTTP包來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)對(duì)外部WEB服務(wù)器的主動(dòng)訪問(wèn)。利用這兩個(gè)特性,可以在數(shù)據(jù)發(fā)生變化的時(shí)候主動(dòng)地將變化內(nèi)容及時(shí)傳輸給外部業(yè)務(wù)服務(wù)器,再通過(guò)業(yè)務(wù)服務(wù)器發(fā)送給相應(yīng)的業(yè)務(wù)人員,以此避免外部業(yè)務(wù)系統(tǒng)主動(dòng)和頻繁讀取數(shù)據(jù)庫(kù)服務(wù)器,提高系統(tǒng)消息發(fā)送效率,降低系統(tǒng)查詢負(fù)擔(dān)。

        存儲(chǔ)過(guò)程;觸發(fā)器;消息推送;Oracle;UTL_HTTP

        0 引言

        隨著高校信息化建設(shè)發(fā)展和個(gè)人智能終端越來(lái)越普及,移動(dòng)化學(xué)習(xí)和辦公逐漸成為趨勢(shì),需要向師生用戶的移動(dòng)終端主動(dòng)推送消息或提醒的應(yīng)用和場(chǎng)景也越來(lái)越多。在以往的使用過(guò)程中,主動(dòng)推送的消息一般采用應(yīng)用內(nèi)推送的方式,在各個(gè)業(yè)務(wù)系統(tǒng)的APP端獨(dú)立推送,以保證推送的及時(shí)性。但是隨著高校信息化建設(shè)情況的發(fā)展,這種模式也顯現(xiàn)出了一些弊端,主要是需要推送消息的 APP會(huì)越來(lái)越多,用戶安裝起來(lái)比較復(fù)雜和混亂,也不符合統(tǒng)一門(mén)戶和入口的高校信息化移動(dòng)建設(shè)要求。

        現(xiàn)在很多高校比較常用的是將一些應(yīng)用和消息推送功能統(tǒng)一集成到微信公眾平臺(tái)或者QQ公眾平臺(tái)上,通過(guò)這些公共平臺(tái)進(jìn)行校園信息化功能的消息推送和用戶交互。使用這樣的第三方獨(dú)立平臺(tái)來(lái)進(jìn)行消息推送在解決了老問(wèn)題的時(shí)候又帶來(lái)了新問(wèn)題,由于校內(nèi)的信息化系統(tǒng)消息接口并不統(tǒng)一,致使第三方公共平臺(tái)的后臺(tái)服務(wù)器很多情況下不得不對(duì)各個(gè)系統(tǒng)消息接口進(jìn)行定時(shí)輪詢,以確定是否有新消息和發(fā)送目標(biāo)。而每個(gè)系統(tǒng)需要推送的消息、目標(biāo)用戶往往非常多,消息也往往不是內(nèi)容完全相同的群發(fā)消息。在這種情況下對(duì)每個(gè)業(yè)務(wù)系統(tǒng)的輪詢將消耗后臺(tái)服務(wù)器和業(yè)務(wù)系統(tǒng)服務(wù)器太多的資源,給整個(gè)校園信息化系統(tǒng)帶來(lái)很大的負(fù)擔(dān)。經(jīng)過(guò)不斷探索,我們發(fā)現(xiàn)采用數(shù)據(jù)庫(kù)自帶的存儲(chǔ)過(guò)程和高級(jí)接口,并結(jié)合通用HTTP協(xié)議來(lái)實(shí)現(xiàn)消息的主動(dòng)推送,在用來(lái)替代輪詢過(guò)程和減輕系統(tǒng)負(fù)擔(dān)上有著很好的效果。

        1 存儲(chǔ)過(guò)程和觸發(fā)器

        存儲(chǔ)過(guò)程是一種重要的數(shù)據(jù)庫(kù)對(duì)象,一般由SQL語(yǔ)句組合而成,具有在存儲(chǔ)過(guò)程中聲明和設(shè)置的SQL變量、實(shí)現(xiàn)流程控制、處理異常,能夠?qū)?shù)據(jù)進(jìn)行更新、讀取和刪除操作并返回結(jié)果集的功能[1]。一般來(lái)說(shuō),SQL語(yǔ)句每次提交執(zhí)行一次就需要編譯一次,而存儲(chǔ)過(guò)程在創(chuàng)造時(shí)經(jīng)過(guò)一次編譯后,可以將編譯結(jié)果保存在數(shù)據(jù)庫(kù)中以便反復(fù)調(diào)用,因此具有較高的執(zhí)行效率。同時(shí),存儲(chǔ)過(guò)程還可以降低整個(gè)應(yīng)用程序的復(fù)雜性,具有可移植性、重用性、安全性和伸縮性等特性。因此,使用存儲(chǔ)過(guò)程操作數(shù)據(jù)庫(kù)可以有效地提高數(shù)據(jù)

        庫(kù)應(yīng)用的實(shí)現(xiàn)效率[2]。

        觸發(fā)器是一種特殊類型的存儲(chǔ)過(guò)程,顧名思義,它是由某個(gè)數(shù)據(jù)庫(kù)事件的發(fā)生而被自動(dòng)隱式調(diào)用的一種存儲(chǔ)過(guò)程。除了在一些數(shù)據(jù)庫(kù)系統(tǒng)事件里觸發(fā)的系統(tǒng)觸發(fā)器,數(shù)據(jù)庫(kù)系統(tǒng)中最常用的是DML(Data Manipulation Language 數(shù)據(jù)操控語(yǔ)言)觸發(fā)器,在我們的消息主動(dòng)推送系統(tǒng)實(shí)現(xiàn)中采用的也是DML觸發(fā)器。觸發(fā)器主要由觸發(fā)對(duì)象、觸發(fā)事件、觸發(fā)事件和觸發(fā)頻率等等元素組成,細(xì)節(jié)如圖1所示:

        圖1 觸發(fā)器組成

        我們可以這樣簡(jiǎn)要地理解觸發(fā)器工作過(guò)程:在數(shù)據(jù)庫(kù)中編譯成功并保存的觸發(fā)器,會(huì)一直監(jiān)測(cè)著其設(shè)置的觸發(fā)對(duì)象(某個(gè)表、視圖或其它數(shù)據(jù)庫(kù)對(duì)象),當(dāng)在該對(duì)象上發(fā)生指定的觸發(fā)事件(數(shù)據(jù)插入、 更新、刪除或其它數(shù)據(jù)庫(kù)事務(wù))時(shí),將在該觸發(fā)事件被執(zhí)行前或執(zhí)行后(由觸發(fā)時(shí)機(jī)指定),以指定的觸發(fā)頻率(語(yǔ)句級(jí):每句SQL指令調(diào)用一次;行級(jí):每影響一行數(shù)據(jù)調(diào)用一次)來(lái)執(zhí)行觸發(fā)器中所設(shè)置的一系列指令操作。

        2 系統(tǒng)總體設(shè)計(jì)

        總體設(shè)計(jì)如圖2所示:

        圖2 系統(tǒng)總體設(shè)計(jì)

        從上所述我們可以看出,觸發(fā)器可以由一個(gè)數(shù)據(jù)庫(kù)事件啟動(dòng),在某個(gè)具體的數(shù)據(jù)庫(kù)事件發(fā)生時(shí)自動(dòng)后臺(tái)運(yùn)行。結(jié)合我們的需求,當(dāng)我們需要主動(dòng)提醒的數(shù)據(jù)每次插入到數(shù)據(jù)表中的同時(shí),我們都可以利用觸發(fā)器在數(shù)據(jù)庫(kù)中觸發(fā)一系列指定操作的運(yùn)行,現(xiàn)在的問(wèn)題就是如何使這一系列觸發(fā)操作能傳遞到數(shù)據(jù)庫(kù)外部的其它服務(wù)器中。以O(shè)racle數(shù)據(jù)庫(kù)軟件為例,其提供了 UTL_HTTP包[3],用以實(shí)現(xiàn)數(shù)據(jù)庫(kù)事務(wù)對(duì)外部WEB服務(wù)器的HTTP訪問(wèn)與互聯(lián)。

        編寫(xiě)一個(gè)行觸發(fā)器監(jiān)視通知提醒數(shù)據(jù)表,當(dāng)每有一行新通知插入到該表的時(shí)候,觸發(fā)器被觸發(fā)并調(diào)用預(yù)先編譯好的存儲(chǔ)過(guò)程,使用UTL_HTTP包將具體消息發(fā)送到外部WEB服務(wù)器,外部服務(wù)器接收到消息后再對(duì)用戶進(jìn)行相應(yīng)的消息具體推送??梢钥闯?,在如此設(shè)計(jì)思路充分利用了數(shù)據(jù)庫(kù)的觸發(fā)器機(jī)制,外部服務(wù)器再不需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行定時(shí)輪詢,在大大降低了雙邊系統(tǒng)的負(fù)載的同時(shí),還消除了輪詢時(shí)間間隔,使消息推送更加的及時(shí)。

        3 系統(tǒng)實(shí)現(xiàn)

        在這里我們以實(shí)現(xiàn)將校園門(mén)戶中的待辦事項(xiàng)提醒推送到微信企業(yè)號(hào)的通知消息中為例,介紹整個(gè)流程的具體實(shí)現(xiàn)方法。假設(shè)所有用戶的新增待辦事項(xiàng)都被業(yè)務(wù)系統(tǒng)插入到數(shù)字校園公共數(shù)據(jù)庫(kù)用戶CORE_iUPC的TODO_INFO表中,我們需要通過(guò)行觸發(fā)器調(diào)用一段存儲(chǔ)過(guò)程,將該插入數(shù)據(jù)的具體內(nèi)容(代辦人員和待辦事項(xiàng))通過(guò)HTTP協(xié)議主動(dòng)推送到微信企業(yè)號(hào)后臺(tái)服務(wù)器。本系統(tǒng)示例中的數(shù)據(jù)庫(kù)軟件為Oracle 11g RAC,存儲(chǔ)過(guò)程和觸發(fā)器[4]采用PL/SQL編寫(xiě)[5],HTTP端代碼采用C#編寫(xiě),使用IIS7.0發(fā)布WEB服務(wù)。

        3.1 觸發(fā)器設(shè)計(jì)觸發(fā)器的PL/SQL的代碼如下,具體含義見(jiàn)注釋:

        3.2 存儲(chǔ)過(guò)程設(shè)計(jì)

        存儲(chǔ)過(guò)程SendNotice的代碼如下,該存儲(chǔ)過(guò)程的重點(diǎn)是在調(diào)用oracle所提供的utl_http包來(lái)訪問(wèn)HTTP服務(wù),賦予該存儲(chǔ)過(guò)程HTTP Client的角色和功能,具體含義見(jiàn)注釋:

        在這里為了簡(jiǎn)要演示UTL_HTTP的調(diào)用方法,我們使用其來(lái)調(diào)用HTTP_GET方法來(lái)向外部服務(wù)器發(fā)送信息,將相關(guān)變量組合成GET頁(yè)面的URL參數(shù)部分進(jìn)行發(fā)送,這樣的實(shí)現(xiàn)方法比較簡(jiǎn)單易懂。不過(guò)在參數(shù)較多或者參數(shù)比較復(fù)雜的情況下,利用URL傳遞參數(shù)的方法可能不太適用,我們還是推薦使用HTTP_POST方法來(lái)發(fā)送數(shù)據(jù),將所有參數(shù)打包成一個(gè)XML或者JSON格式的數(shù)據(jù),通過(guò)POST方法把數(shù)據(jù)發(fā)送到對(duì)方服務(wù)器。POST方法對(duì)所傳參數(shù)的長(zhǎng)度和格式一般沒(méi)有限制,也基本不會(huì)有特殊字符沖突處理問(wèn)題。

        3.3 HTTP接收消息和對(duì)外推送

        為了便于接收從數(shù)據(jù)庫(kù)推送來(lái)的消息并同時(shí)往微信企業(yè)號(hào)推送,我們直接在微信企業(yè)號(hào)的后臺(tái)創(chuàng)建了上述UTL_HTTP包所指定的接受推送頁(yè)面sendnotice.aspx,在接收到參數(shù)后調(diào)用微信企業(yè)號(hào)的后臺(tái)消息發(fā)送功能,往指定人員的微信推送相應(yīng)通知信息。后臺(tái)Web服務(wù)器由IIS7.0搭建,代碼用C#編寫(xiě),在Page_Load時(shí)運(yùn)行的有關(guān)代碼片段如下:

        其中往微信企業(yè)號(hào)內(nèi)用戶發(fā)送通知消息的iUPC_Notice類具體實(shí)現(xiàn)的是與微信企業(yè)號(hào)公眾平臺(tái)所對(duì)接的相關(guān)標(biāo)準(zhǔn)[6],具體內(nèi)容參見(jiàn)騰訊公司發(fā)布的企業(yè)號(hào)使用文檔,該文檔描述了后臺(tái)服務(wù)器與微信企業(yè)號(hào)之間的接口規(guī)范和調(diào)用流程等等細(xì)節(jié),在此不再累述。

        4 Oracle 11 g相關(guān)權(quán)限和安全設(shè)置

        從數(shù)據(jù)安全角度來(lái)說(shuō),在數(shù)據(jù)庫(kù)軟件中主動(dòng)調(diào)用HTTP協(xié)議訪問(wèn)外部站點(diǎn)是一個(gè)高危動(dòng)作,因此Oracle對(duì)內(nèi)部用戶是否能發(fā)起對(duì)外HTTP連接做了嚴(yán)格的限制。在以前的版本是控制某用戶對(duì) UTL相關(guān)網(wǎng)絡(luò)訪問(wèn)包(UTL_HTTP、UTL_MAIL、UTL_TCP等等)的調(diào)用權(quán)限,而在Oracle 11g版本中進(jìn)行了更高細(xì)粒度的ACL(Access Control List,訪問(wèn)控制列表)限制。在PL/SQL下配置用戶“test”訪問(wèn)某個(gè)IP地址80端口的ACL的具體方法如下:

        DBMS_NETWORK_ACL_ADMIN包用于創(chuàng)建、管理、修改和刪除ACL,其中的create_acl方法用于創(chuàng)建一條ACL,如果這條 ACL還需要指定給其他用戶使用,還可以利用add_privilege 方法進(jìn)行添加用戶,assign_acl方法用于對(duì)某條ACL及其用戶分配網(wǎng)絡(luò)訪問(wèn)權(quán)限,指定其可以訪問(wèn)的主機(jī)和端口,其中host變量可以是IP地址或者域名,也可以使用通配符匹配一段網(wǎng)段。同時(shí)也可以多次調(diào)用 assign_acl為同一個(gè)ACL和其所含用戶授權(quán)訪問(wèn)多個(gè)host主機(jī)和端口號(hào)。

        5 總結(jié)

        在本文中我們利用存儲(chǔ)過(guò)程和觸發(fā)器,在數(shù)據(jù)表發(fā)生變化時(shí)主動(dòng)調(diào)用UTL_HTTP包訪問(wèn)數(shù)據(jù)庫(kù)服務(wù)器外部的網(wǎng)站,并通過(guò)HTTP協(xié)議傳遞出相關(guān)內(nèi)容,使消息可以第一時(shí)間發(fā)送到微信客戶端,避免了輪詢過(guò)程對(duì)雙方系統(tǒng)的額外開(kāi)銷。該方法還是個(gè)非常適用于通過(guò) POST方法將格式數(shù)據(jù)發(fā)送到通信運(yùn)營(yíng)商所提供的短信發(fā)送接口,實(shí)現(xiàn)全自動(dòng)的短信提醒功能。除了 UTL_HTTP包外,Oracle 11g還提供了UTL_TCP、UTL_MAIL來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)對(duì)外的socket連接功能和對(duì)外發(fā)送郵件功能,同樣可以實(shí)現(xiàn)本文類似的主動(dòng)推送功能。另外Microsoft SQL Server和其它主流數(shù)據(jù)庫(kù)軟件均具有類似的存儲(chǔ)過(guò)程、觸發(fā)器和HTTP訪問(wèn)機(jī)制,有待大家參考和利用。

        [1] 馬洪江,周相兵.基于存儲(chǔ)過(guò)程的科研績(jī)效統(tǒng)計(jì)分析系統(tǒng)的實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展, 2011,21(8)181-184.

        [2] 郭紹忠,甄濤,賈琦.基于存儲(chǔ)過(guò)程的海量郵件數(shù)據(jù)挖掘[J].計(jì)算機(jī)工程, 2010,36(1):40-42.

        [3] Database PL/SQL Packages and Types Reference. Chapter 225 UTL_HTTP[EB/OL].[2016-03-02],http://docs.oracle. com/cd/E11882_01/appdev.112/e40758/u_http.htm#ARPL S070.

        [4] 林樹(shù)澤, 盧芬, 柳冬青. Oracle DBA高可用、備份恢復(fù)與性能優(yōu)化[M].北京:清華大學(xué)出版社,2015.

        [5] Michael McLaughli.Oracle Database 11g PL/SQL程序設(shè)計(jì) [M].張?jiān)?,等譯.北京:清華大學(xué)出版社,2009.

        [6] 微信公眾平臺(tái)企業(yè)號(hào)接口文檔[EB/OL].[2016-03-02] http://qydev. weixin.qq.com/wiki/.

        Implementation of Message Push System Based on the Stored Procedure and HTTP Protocol

        Xia Lingyun, Gong Wentao
        (Internet and Education Technology Center, China University of Petroleum (East China), Qingdao 266580, China)

        Stored procedures and triggers in database are formerly used for data integrity checking and complex rule restriction, they also provide an actively operating mechanism when the data change in the database table. Oracle Database also provides UTL_HTTP package to achieve the access from database to external WEB server. Using these two characteristics, it can send the changing data to an external service server initiatively and promptly, and then sends the message to the appropriate user through the service server. Thereby avoiding external service systems avoid frequent reading the database server initiatively, it improves messaging system efficiency and reduces the burden on system queries

        Stored procedure; Trigger; Message push; Oracle; UTL_HTTP

        TP393

        A

        1007-757X(2016)11-0066-03

        2016.07.06)

        夏凌云(1980-)男,瀘州人,中國(guó)石油大學(xué)(華東),網(wǎng)絡(luò)及教育技術(shù)中心,碩士研究生,工程師,研究方向:互聯(lián)網(wǎng)技術(shù)、計(jì)算機(jī)軟

        硬件技術(shù)和物聯(lián)網(wǎng)技術(shù),青島 266580

        龔文濤(1984-)男,潛江人,中國(guó)石油大學(xué)(華東),網(wǎng)絡(luò)及教育技術(shù)中心,碩士,工程師,研究方向:網(wǎng)絡(luò)信息安全,青島 266580

        猜你喜歡
        輪詢觸發(fā)器調(diào)用
        核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
        基于等概率的ASON業(yè)務(wù)授權(quán)設(shè)計(jì)?
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        主從JK觸發(fā)器邏輯功能分析
        電子世界(2017年22期)2017-12-02 03:03:45
        使用觸發(fā)器,強(qiáng)化安全性
        基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
        依托站點(diǎn)狀態(tài)的兩級(jí)輪詢控制系統(tǒng)時(shí)延特性分析
        利用時(shí)間輪詢方式操作DDR3實(shí)現(xiàn)多模式下數(shù)據(jù)重排
        利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
        對(duì)觸發(fā)器邏輯功能轉(zhuǎn)換的分析
        妺妺窝人体色www看人体| 国产大学生自拍三级视频| 91国产自拍精品视频| 4hu四虎永久免费地址ww416| 99久久久精品免费观看国产| 1精品啪国产在线观看免费牛牛| 全程国语对白资源在线观看| 国产精品国产三级国产av品爱 | 丝袜人妻中文字幕首页| 亚洲国产精品久久精品| 久久夜色精品国产欧美乱| av色综合网站| 日韩精品久久伊人中文字幕| 免费a级毛片18禁网站免费| 国产成人午夜精华液| 精品无吗国产一区二区三区av| 蜜桃视频一区视频二区| 一本久久综合亚洲鲁鲁五月天| 美女视频黄的全免费的| 欧美日韩国产乱了伦| 一级老熟女免费黄色片| 亚洲热线99精品视频| 无码的精品免费不卡在线| 极品少妇一区二区三区四区| 又黄又刺激的网站久久| 免费国产黄网站在线观看| 91精品国产免费青青碰在线观看| 中国黄色偷拍视频二区| 成人试看120秒体验区| 久热在线播放中文字幕| 国产精品三级av一区二区| 亚洲一区二区国产激情| 中国老熟妇自拍hd发布| 岛国熟女一区二区三区| 亚洲熟女熟妇另类中文| 99精品国产在热久久无码| 久久精品亚洲牛牛影视| 日韩十八禁在线观看视频| 精品午夜福利在线观看| 欧美疯狂性xxxxxbbbbb| 国产一区二区丁香婷婷|