首頁 公司 產品 產業/方案 服務 夥伴 客戶 論壇 ICE Developer Center Site Map          [搜尋]
ICE Developer Center Overview Register Training LearningSpace Workshop ICE Messaging Express MOM Glossary
Member Login Download GetLicense Support Profile iReal Program Logout

 .艾揚即時訊息技術電子週報 < ICE Messaging Weekly >. 

第 22 期 出刊日期:2003.05.27    本報內容由 艾揚科技 (ICE Technology Corp.) 提供

DB Adaptor 實作篇 - 如何讓資料在寫入資料庫時,同時透過 iPush® 傳送


本期內容大綱

 
[編輯手扎] ICE Messaging Editor's Note 郭漢丞  

不確定當中的確定

SARS 疫情不斷延燒,從大陸到香港、從香港到北台灣、從北台灣到南台灣,我們經歷的是前所未有的防疫戰爭,所有的不確定性充斥於每天的新聞、報紙與各種對話當中,不確定疫情何時能夠結束?不確定生活何時可以回復平靜、不確定自己會不會是下一個感染者。

在諸多不確定當中,我們確定的是,無論是任何行業的人,都在思考如何讓疫情緩和,而且在下一次可能爆發的新危機當中,如何確定已經做好萬全的因應準備。

艾揚的伙伴不是醫護人員,我們確定的是,未來在防疫網絡上,艾揚的即時訊息傳遞技術,可以成為政府、醫療單位、病患與全國人民獲取即時疫情通報的工具。我們也確定良好的訊息傳遞與溝通,是降低每一個人心中不確定性最好的方法。我們確定的是,如果政府單位能夠統籌資料,並且以誠實的態度面對疫情,運用即時訊息傳遞平台,在第一時間將疫情快報透過網路傳播,並且推播 (Push)至使用者手上的電腦、PDA與手機,以迅速通報與確實溝通,降低每一個人心中的不確定性。相關的應用架構與實做,我們已經在製作規劃當中,會盡快與各位讀者分享成果。  

至於在不確定的疫情發展中,把握確定的事情,應該是比憂慮不確定更積極的作為,以此與讀者共勉。

 
 
[訊息論壇]ICE Messaging Forum    徐萬里

DB Adaptor 實作篇 - 如何讓資料在寫入資料庫時,同時透過 iPush 傳送

前言

在很多系統整合的實際例子中,如何連接已經建置好的資料庫,並從中接取資料,是非常常見的需求。

照以前的做法,只能定時向資料庫下達查詢指令撈資料,或者用定時資料複製的方式,這兩種方式都會大大降低資料庫的工作效能,也會耗費掉許多寶貴的頻寬。

在這裡,我要以 MS SQL Server 為例,向各位說明:如何利用 MS-SQL 的觸發程序 (Trigger),讓資料在寫入資料庫時同時透過 iPush® Server 傳送出來。這樣的做法,不僅可以讓資料庫的效能不至降低,也可以節省許多寶貴的網路頻寬。

好的,假設大家都已經把 MS SQL Server、 iPush® Server 都安裝好了,我們現在就開始進行實驗。

Step 0:先準備好測試帳號

使用 iPush® Server 的管理介面 Backoffice,建立一個測試用的帳號,資料包括: company name、 product name 、登錄 id 、登錄 password 、 read permission (接收權限,設定 ch43 為可接收頻道)等,在後續的步驟裡面會用到這些資料。

Step 1:準備好檔案 iPushStoredProc.dll 置於您指定的目錄下

接下來,將預先準備好的 iPushStoredProc.dll 檔案存放在您指定的目錄下,就可以進行下一動作。如果手邊沒有,您可以在ICE Developer Center的Download區取得。(當然了,您得先註冊成為會員~~)

Step 2:設定預存程序 (Stored Procedure)

在 master 資料庫裡頭新增一個「延伸預存程序」(Extended Stored Procedure)(如圖一)

(圖一)

 

接著畫面會變成如圖二所示,出現一個對話視窗,要求您填入這個延伸預存程序的名稱和執行程式:

(圖二)

 

在圖二的畫面裡

  • 名稱欄位填入 myStoredProc (請注意不可任意變更此名稱)
  • 路徑請選取 iPushStoredProc.dll 所在的路徑

最後點擊「確定」按鈕,我們就成功的建立了這個延伸預存程序。到目前為止,我們已經完成了一半的工作。

Step 3:準備測試資料庫

(圖三)

接下來,準備待會兒要使用的測試資料庫 (test) 以及資料庫內的表單 (measure), schema 如下:

欄位名稱 資料型別 (資料長度: bytes )
eqid int(4)
name varchar(50)
amount float(8)
status int(4)

 

Step 4:編輯觸發程序 (Trigger)

接下來是重頭戲,我們要為這個測試資料表 measure 編寫一個觸發程序。當有資料嘗試寫入 measure 時,這個觸發程序就會自動被呼叫執行:

(圖四)

 

首先如圖四所示:

  • 選取資料表 (measure)
  • 按下滑鼠右鍵,選取「管理觸發程序」,準備輸入一觸發程序。

此時畫面上會出現一個編輯視窗,如圖五所示:

(圖五)

 

接著,開始編輯觸發程序,編輯完成之後點擊「確定」即可。觸發程序內容如下:

CREATE trigger iTrigger on dbo.measure

For insert

as

declare @Str1 varchar(16)

declare @Str2 varchar(16)

declare @Str3 varchar(16)

declare @Str4 varchar(16)

Select @Str1 = eqid from Inserted

Select @Str2 = name from Inserted

Select @Str3 = amount from Inserted

Select @Str4 = status from Inserted

Exec master..myStoredProc 4, iceps, 8000, ‘ICE’, ‘ICE’, ‘ice’, ‘ice’, ch43, @Str1, @Str2, @Str3, @Str4

<<說明>>

在此不對觸發程序的每一個指令去做解釋,有興趣的讀者請參考相關書籍會有更詳細的說明。我們直接看最後一行程序:

Exec master..myStoredProc 4, iceps, 8000, ‘ICE’, ‘ICE’, ‘ice’, ‘ice’, ch43, @Str1, @Str2, @Str3, @Str4

這代表此觸發程序會呼叫 master 資料庫裡頭的延伸預存程序 myStoredProc ,參數說明如下

  • 參數一:4代表要送到 iPush® 的資料個數,在這個例子裡頭就是 @Str1、@Str2、@Str3、@Str4
  • 參數二:要連結的 iPush® Server (IP 位址或 domain name)
  • 參數三:連結的 iPush® Server port
  • 參數四:連結 iPush® Server 的 company name
  • 參數五:連結 iPush® Server 的 product name
  • 參數六:連結 iPush® Server 的登錄 id
  • 參數七:連結 iPush® Server 的登錄 password
  • 參數八:要透過 iPush® Server 傳送資料的 channel id
  • 參數九~:實際要傳送的資料

[註] MS SQL Server 對於任何觸發程序有一個共同限制:觸發程序的參數長度總和不可超過 162 bytes 。以前面的觸發程序為例,前 8 個參數已經用掉了 29 個bytes,所以後面 Str1~Str4 參數只能傳遞 133 bytes 長度的資料。

Step5:測試觸發程序

不管多小的系統或程式,最後總是要經過測試才能宣布大功告成,我們這個實驗也不例外。接下來就是測試:

(圖六)

 

  • 開啟接收端 (使用艾揚提供的測試接收端 TestAgent.exe )
  • 連線並登入 iPush®
  • 訂閱 ch43 頻道 (因為剛才傳送時是用 ch43 頻道來傳送)
  • 勾選「將收到的資料解壓」 (unpack)

[註1] 觸發程序所呼叫的 DLL 會把資料以逗號隔開,並且一律 pack 包裝起來,再傳送出去,因此接收端必須勾選「將收到的資料解壓」,才能收到原始的資料。

[註2]:這裡的 iPush® 連線資訊以及所使用的頻道以使用者實際訂定為主,此處提供的是一個連線範例。

(圖七)

 

  • 使用 MS-SQL 的指令輸入介面,下一道 SQL 指令。 Insert 一筆資料進表單 measure :

Insert into measure (eqid, name, amount, status) values (3,’john’,1000,5)

  • 此時表單啟動觸發程序,將資料送進 iPush®。測試接收端此時便接收到 iPush 主動傳送過來的資料,如圖八左邊的畫面。

(圖八)

 

至此整個觸發程序的測試已經完成。是不是很容易呢?趕快下載回去試試看吧!

 

 

[訊息技術說文解字] ICE Messaging Glossary   陸一凡
  • Java 2 Platform, Standard Edition ( J2SE )

Sun Microsystems 為網路導向的應用所發展的 Java 平台。J2SE 含括了 Java 2 Software Development Kit (簡稱為 J2SDK 或 JDK) 與 Java 2 Run-Time Environment (簡稱為 J2RE )。

艾揚公司藉由實作 iPush Server 的 Java Class (或包裝成 Java Package) 應用程式開發介面,在訊息中介軟體中支援此新一代的資訊架構。

  • Java 2 Software Development Kit ( J2SDK / JDK )

為 Java 2 平台的一部份。Sun Microsystems 為協助發展 Java 應用軟體所提供的工具,專門使用於 Java 應用程式 ( Java Application 與 Java Applet ) 的開發。

[艾揚快訊] ICE Express   ICE Developer Center  

 


上一期精采內容:Rich Content, Simple Messaging ─ 水資源管理


若您覺得本期內容值得參考,請轉寄給認識的朋友或同事,為國內的訊息技術社群發展盡一份力。感謝您。 

免費試用 iPush Server,請連結 ICE Developer Center 網站:http://www.icetech.com.tw/icedc,進行 Register → Login → GetLicense → Download 作業即可。

訂閱與取消訂閱本電子週報,請連結 ICE Messaging Weekly 網站:http://www.icetech.com.tw/icedc/weekly.shtml

查閱本電子週報舊有出刊內容,請連結 ICE Messaging Weekly 網站:http://www.icetech.com.tw/icedc/weekly.shtml

 

回艾揚即時訊息技術電子週報主頁 | 上一期 | 下一期
Copyright 2002-2004, 艾揚科技股份有限公司版權所有;歡迎轉寄。
關於電子報發送有任何問題,或是欲轉載內容,請連絡 icedc@icetech.com.tw
台北市 100 羅斯福路二段 9 號 12 樓之 1 ,TEL: +886-2-2396-1880,FAX: +886-2-2396-1881

Unsubscribe >>
欲取消訂閱艾揚即時訊息技術電子週報 (ICE Messaging Weekly),請 Mail 至 icedc@icetech.com.tw
主旨註明:取消訂閱艾揚即時訊息技術電子週報 即可。




艾揚科技股份有限公司  台北市 103 承德路二段 81 號 15 樓之 1   電話:+886-2-25586101   傳真:+886-2-25586102

Copyright © 2002-2008 ICE Technology Corporation. All Rights Reserved.