TWI571747B - 資料交換系統 - Google Patents
資料交換系統 Download PDFInfo
- Publication number
- TWI571747B TWI571747B TW101139728A TW101139728A TWI571747B TW I571747 B TWI571747 B TW I571747B TW 101139728 A TW101139728 A TW 101139728A TW 101139728 A TW101139728 A TW 101139728A TW I571747 B TWI571747 B TW I571747B
- Authority
- TW
- Taiwan
- Prior art keywords
- server
- data
- client
- application
- client application
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/60—Types of network addresses
- H04L2101/618—Details of network addresses
- H04L2101/64—Asynchronous transfer mode [ATM] addresses
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
- User Interface Of Digital Computer (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本發明係有關於一種特別施行於電腦網路系統主從式(client/server)應用程式遠端演示服務的資料交換系統。藉由使用非常薄客戶端(thin client)如智慧型手機(smart phone)上的應用服務(apps),可改善網路系統在伺服器及客戶端應用程式間要求轉換資料的效能,其中操作應用程式所需的商務規則(business rules)儘可能置於伺服器上而非客戶端應用程式中。此外,用來顯示在客戶端應用程式或操作客戶端應用程式的資料量應被保持在最少,此可藉由僅轉換所需資料的最少量以及在符合預設情形下利用欄位預設而不轉換任何資料來達成。本發明更包括新的客戶端應用程式可快速被發展及可配置在不同客戶端平台的優點。
金融服務業,如同其他行業一般,已有很長的歷史以主從式方案作為軟體發展的方案。目前在平台以及用以配置相應軟體解決方案的技術上產生了一些變化。一個主要的變化即為雲端計算解決方案的配置。
結合主從式軟體應用程式和薄客戶端代管(thin client hosted)解決方案具有若干優點。此等方案允許使用較多種類的客戶端裝置,特別是除了個人電腦(PCs)之外的小型可攜式裝置(portable device),如手機
(mobile phone)、智慧型手機(smart phone)、平板電腦(tablet)或者小筆電(net book)。客戶端應用程式(client application)可使用一標準網際網路瀏覽器(internet browser)作為其介面,或者如在智慧型手機上的小應用程式(applet),以取代通常是大型及資源密集的專用應用程式或程式(program)。同時,在此等薄客戶端及代管解決方案中,所要求的支援階層通常較少。採用代管解決方案僅需很少的支援以作為客戶端安裝之用,大部分僅支援伺服器(server)使用。這種情形當代管解決方案是多租戶解決方案(multi-tenanted solution)時則更加顯著,前述案例中僅實體單一伺服器需要支援可忽略隱藏的大量租戶,而傳統上必須針對每一租戶支援一伺服器。但是也具有若干缺點,當應用程式在伺服器及客戶端進行拆分時,則大量資料通常必須透過網路在兩者之間進行傳輸,以及當使用無線(wirelessly)連結裝置時頻寬往往被限制,應用程式結果尤其苦於效率。
現行有許多不同的平台可用來建立薄主從式應用程式,舉例而言,可作為客戶端應用程式的平台包含:HTML、HTML5、Microsoft Silverlight、Adobe Flash、Java,原生作業系統(native operating system)應用程式如Microsoft Windows應用程式、Microsoft Mobile應用程式、Apple OSx應用程式、Apple iOS應用程式、Google Android應用程式等。可作為網路伺服器的平台包含:Misrosoft.net、Java、C、C++、Cobol、PHP等。遠端程
序呼叫(remote procedure call)(RPC)技術包含:SOAP、REST、DCOM、CORBA等。序列化(serialisation)方法包含:XML、JSON、CSV、Binary等。雙工通訊(duplex communication)方法包含:Web Sockets、long-Polling、net TCP Binding、Http Duplex Binding等。永久儲存(permanent storage)(如資料庫)伺服器平台包含:Microsoft SQLServer、MySQL、Oracle、IBM DB2、Microsoft Azure table storage、以及如單純檔(flat files)等。
目前正有許多新興的研究,以及許多新的技術被視為可發展更佳薄客戶端使用者介面平台。現行有許多不同的使用者介面平台,包含:Microsoft Silverlight、HTML、Java,以及iOS平台(即AppleTM“iPad”及“iPhone”)及其他智慧型手機或平板電腦平台如“Android”所需不同的專有解決方案。目前現行多樣的客戶使用者介面平台,正如每一個別內在的特質,在軟體解決方案上都表現出一些問題。使用傳統技術作為客戶端應用程式及伺服器間通訊具有缺點,因為軟體發展人員對於每一種不同的使用者介面平台技術導入解決方案到市場上需要很長的時間,其又會繼續不斷進展及擴張。
典型地,網路服務(web service)都不約而同的被設計成回傳(return)包含豐富大量及詳細資料集合的資料集(data set),其係基於使用服務的客戶端應用程式消耗伺服器是在包含處理資料所需的商務邏輯或稍後再使用
商務邏輯的前提之下。舉例而言,前述的網路服務可見示例如下,在一客戶關係管理系統(Customer Relationship Management,CRM)或一網路服務中,個人聯絡資料可被建立(created)、讀取(read)、更新(updated)或刪除(deleted)。客戶端應用程式就發展為消耗這些服務並且以不同型態及導引(navigation)演示資料,這樣的情形出現在許多型態的應用程式中,且不限於CRM產品。
在許多實例中,前述服務回傳包含如人名、目前及過去聯絡細節(地址、電話、傳真、手機、電子郵件)、生日等等資料項目。當客戶端應用程式在發展及消耗前述服務時,所有資料會由伺服器被傳輸,即使客戶端應用程式僅需顯示如生日資料項目。
軟體公司企圖發展僅需最少量資料即可將客戶端應用程式轉移到所有目前必須配合的、不同使用者介面平台的解決方案。這樣的目標確實難以達成。另一考量為若干主流供應商(Microsoft、Apple、Google等)較願意或鼓勵維持現狀,因為若改善現狀則發展人員較易改變使用者介面平台。投資時間及人力對同一特定平台進行發展意即發展人員可能會持續在原有平台上強化應用程式,而非經常轉移到許多不同及較新的平台上。
因此,提供在薄客戶端環境下可促進不同使用者介面平台間快速轉移的解決方案,或者至少提供目前方法的有效改善方案係具有優勢的。
本發明之一面向即提供一種電子裝置的主從式網路,包括:具有至少一資料庫的至少一伺服器裝置,以及根據若干商務規則在上述資料庫中處理資料的至少一伺服器應用程式,以及具有至少一客戶端應用程式的至少一客戶端裝置,其用以接收來自一使用者的輸入資料並透過網路傳輸資料給上述伺服器應用程式以及用以顯示由上述使用者輸入或透過上述網路所接收來自上述伺服器應用程式的上述使用者資料,以及上述客戶端應用程式用以根據若干商務規則處理資料,其中上述客戶端應用程式及上述伺服器應用程式透過上述網路交換資料至少部分非同步,以及在上述非同步資料交換期間上述客戶端應用程式及上述伺服器應用程式彼此同步。
在此,“資料庫(database)”一詞用以指稱任何形式長期或永久的資料儲存,包含關連式資料庫(relational database)、其他資料庫、固定檔(fixed files)以及配合電子儲存裝置中的其他類型資料。
本發明提供一解決方案藉由將客戶端商務處理儘可能薄化以允許不同使用者介面平台間較快速的移植(migration)。此包括當從客戶端使用者介面平台移除大多數商務邏輯時,相對應的伺服器必須儘可能維持智能的處理。
前述情形可藉由提供一種電子裝置的主從式網路來達成,其包括:具有至少一資料庫的至少一伺服器裝置,以及根據若干商務規則在上述資料庫中處理資料的至少一伺服器應用程式,以及具有至少一客戶端應用程式的至少一客戶端裝置,其用以接收來自一使用者的輸入資料並透過網路傳輸資料給上述伺服器應用程式以及用以顯示由上述使用者輸入或透過上述網路所接收來自上述伺服器應用程式的上述使用者資料,以及上述客戶端應用程式用以根據若干商務規則處理資料,其中上述客戶端應用程式及上述伺服器應用程式透過上述網路交換資料至少部分非同步。
資料交換可由客戶端應用程式或伺服器應用程式啟動,結果在上述非同步資料交換期間上述客戶端應用程式及上述伺服器應用程式彼此同步。
此新的方法係為透過非同步通信利用交談式資料(chatty data)的傳輸過程。在本文件中前述過程稱為遠端演示服務(Remote Presentation Service,RPS)。RPS允許使用者介面僅將有變更的特定資料欄位傳回給伺服器。伺服器接著將執行與變更有關的商務邏輯,並且僅回傳包含在圖形化使用者介面中經過修正的使用者控制及元件屬性給客戶端。
前述程序可以僅傳送載入初始頁面(page)所需顯示在客戶端使用者介面平台上的資料,也可以僅從客戶端到伺服器傳送變更的資料單元,當伺服器回傳一回應(response)後顯示在客戶端上。
目前已發現客戶端及伺服器之間的通信速度可藉由一顯著因素加以改善。主要即透過減少所需傳輸的資料量來達成,而且更可透過不同欄位預設值的初始使用來達到進一步的改善。一種常見的情形是當欲顯示的資料實際上符合預設值時,則資料不需要被傳輸。
採用RPS方案還有一些其他的效益。例如:伺服器可儲存使用者在一期程(session)內所執行的每一變更,此為“狀態化(stateful)”。一程序如果為可狀態化則可追蹤每一交易(transaction),相較於“非狀態化(stateless)”即無法記錄所發生交易的歷程。因此,在RPS模型下,若客戶端與伺服器的連接發生中斷,一旦兩者重新連接時可在只遺缺少量資料下重建期程。前述情形對執行在網路容易中斷的手機應用程式而言特別具有效益。
另一效益是客戶端上的安裝可以最小化,而在某些特殊情形下甚至可以無需任何安裝。因為客戶端應用程式要求極少甚至不要求商務邏輯,既然發展客戶端應用程式的程式很小,則客戶端應用程式隨之為小。
在過去,傳統方案因為無論資料是否被使用,全部資料結果必須被傳送,造成頻寬及執行效率的浪費。現在藉由精確的回傳客戶端應用程式所要求的資料,此問題可被最小化。以前述CRM系統在RPS模型(model)下為例,客戶端應用程式可要求生日,而伺服器可僅傳回生日,而非傳回填入網頁或表單(form)的整個資料集。
在此所述的範例可使用Microsoft Silverlight,以及Microsoft Windows Communication Foundation(“WCF”)或其他類型Microsoft ASP.net MVC WebAPI、SignalR、及Microsoft SQL Server作為主要發展平台。然而,也可用其他平台代替以建立如前所述的應用程式。
如第1圖所示,第1圖係為依據本發明之遠端演示服務(RPS)之一目標示意圖。移除若干或大部分在客戶端101所定義的商務規則到伺服器102中,其同時具持久性及狀態化。大部分或儘可能多的商務規則,而最佳為全部,重置於伺服器。為達此目的,客戶端101與伺服器102兩者必須同步。可藉由對每一圖形化使用者介面(GUI)事件103從客戶端101傳送非同步104訊息以及從伺服器102回應訊息108來達成。此外,也可藉由當伺服器102作出變更時,從伺服器105廣播108訊息到一或多客戶端101來達成。
較佳地,在伺服器保留及處理大部分商務規則,以及更佳者至少80%以上的規則位在伺服器,或者甚佳者至少約90%或95%的規則位在伺服器。理想狀態為95%到100%的規則在伺服器被保留及處理,以及僅0%到5%的規則位在薄客戶端。伺服器上規則的擴充通常依情況不同而決定。在某些情形下,也許可以將100%的商務規則移至伺服器,但在某些情形下也許只能將大部分規則移至伺服器而保留一部分在客戶端。在理想情形下,100%的複雜商務規則位在伺服器,而若干不會影響資料的簡單規則可在
客戶端定義。較佳目標是即使非全數,最好大部分的商務規則在伺服器。另一考量為當越多的商務規則保留在客戶端,在之後發展新客戶端應用程式時必須更多部分進行轉換。
本文所用一事件(event)是一動作的立即結果,如變更文字方塊(textbox)值、點擊按鈕(button)等。通常只有由使用者所啟動的事件會傳輸回伺服器應用程式以進行處理。
同時,一訊息(message)是在客戶端及伺服器間傳送包含資料集合的通信封包。訊息接收者會解讀訊息並瞭解如何對訊息所包含的資料進行處理。
舉例而言,來自客戶端的訊息104可能是已變更的文字項目,如地址的第一行,或是點擊按鈕以表示文字校訂完成。同樣地,從伺服器到客戶端的訊息108可以是顯示地址第一行的修正文字,用以重繪頁面(page)或表單上完整地址的顯示。RPS的運作係藉客戶端應用程式對每一事件傳送訊息到伺服器。一事件可以是文字方塊中值的改變或是按鈕的點擊。訊息的內容包含引發事件的控制以及更新的值。在變更地址文字方塊的案例中,訊息可能包含作為引發的“Address_Textbox”以及值(value)可為輸入的新地址。在點擊儲存按鈕的案例中,訊息可能包含作為引發的“Save_Button”以及值可為“click”。
在某些情形下,也可能伺服器本身進行一些變更。這可能發生在當另一程序更新使用者暫態儲存106時,如自
動程序、外部系統或並行使用者。當此情形發生時,伺服器會廣播訊息108給受影響的客戶端101,以通知變更的狀況。
本發明之遠端演示服務的另一目的是儘可能小化訊息104、108在客戶端及伺服器間的傳輸。這可藉由僅提供絕對需要的資料來達成。若資料對於圖形化使用者介面(GUI)103沒有直接影響,就不該作為訊息108的一部分。
若訊息在傳送前進行壓縮,則訊息104、108可被更小化。接收者在處理訊息前必須進行解壓縮。若採用壓縮,則可使用任一通用的壓縮協定,例如gzip、deflate、exi、sdch、peerdist等。
所有包含在圖形化使用者介面(GUI)103中的使用者控制及元件對每一屬性(property)具有預設值(Visible、Enabled、Value等)。當填入訊息108時,演示引擎105應對此等預設值有所察覺。執行效率也仰賴預設值加以改善,不透過網路傳輸欄位符合預設值的資料。預設值的使用通常僅在表單初始建立時有效。若預設值已發生變更,接著就必須將變更值回饋預設值,而系統將透過網路傳送值。
演示引擎105是位在伺服器上的商務邏輯,用以解譯所接收來自客戶端的每一訊息,以及決定如何進行處理。在大多數情形下,演示引擎105不僅更新儲存在暫態儲存106中的對應值,也施用所需要的商務邏輯,例如當接收
到包含引發“Save_Button”及點擊值的訊息時,則會將儲存在暫態儲存106中的資料儲存到永久儲存107中。接著,掃描儲存在暫態儲存106中資料的變更並建立一訊息傳送回客戶端以反應這些變更。
遠端演示服務的一優點為發展人員可對不同平台及技術快速發展及配置新的客戶端應用程式。藉由移除若非全部即大多數在客戶端101定義的商務規則並搬移至伺服器102中而完成,意即客戶端應用程式101非常樸拙、簡約及容易重製,因為沒有包含任何複雜的程式邏輯。
遠端演示服務之一架構示意圖如第1圖所示。發展採用遠端演示服務的典型客戶端應用程式101。客戶端應用程式101不限於任何技術,可簡單的使用任何平台或使用任何語言或技術來發展。若干適合的語言如:.Net、Java、JavaScript、C、C++、Perl、PHP、Python、Ruby以及Delphi。若干適合的技術如:console applications、mobile applications、web applications、plugin applications、applets以及native OS applications。
正如同典型的客戶端應用程式,應用程式101通常包含圖形使用者介面(GUI)103。圖形使用者介面(GUI)包含許多允許使用者和應用程式101進行互動的使用者控制及元件。當應用程式101的使用者與應用程式進行互動時,一非同步訊息104被發送至設置在伺服器應用程式102中的演示引擎105。應用程式101接著偵聽作為回應的訊息108。當接收到回應訊息108時,圖形化使用者介
面(GUI)103則進行更新以反映在訊息108中所接收到的變更。
原始訊息104包含已發生的使用者介面(UI)事件細節。舉例而言,若使用者點擊一按鈕,訊息104可包含按鈕的識別以及表示按鈕被按下的資訊。另外又如,若使用者變更文字方塊值,例如從“22 Smith Street”改為“23 Smith Street”,則訊息可包含“Address_Line_1”的欄位識別,其值已變更而輸入新值即“23 Smith Street”。
伺服器應用程式102可以是遠端演示服務的宿主。伺服器應用程式102不設限於任何特定技術,以及可使用任何語言或技術在任何平台上輕易的發展。若干適合的語言如:.Net、Java、JavaScript、C、C++、Perl、PHP、Python、Ruby以及Delphi。若干適合的伺服器平台如:Microsoft Server、Microsoft Azure、Amazon Cloud Services、Salesforce.com、Google Cloud Services、Unix、IBM Websphere、Oracle Web Logic、SAP、JBoss以及ColdFusion。
演示引擎105囊括許多,是一般在客戶端應用程式會發生事項的抽象總成。演示引擎105偵聽由客戶端應用程式101所發出的訊息104並決定應進行何種作為。演示引擎105包含用以定義每一訊息104應進行何種作為的商務邏輯,以及是否需要以回應訊息108來回應客戶端。
有時,演示引擎可能被一些不是由客戶端應用程式101所啟動的變更所通知。這種情形發生於當另一程序更
新使用者暫態儲存106時,如自動程序、外部系統或並行使用者(concurrent user)的作為。當此種情形發生時,演示引擎105包含定義應進行何種作為的商務邏輯,以及若有需要伺服器會廣播一訊息108到受影響的客戶端應用程式101以通知變更的情形。當發出這樣的訊息時,伺服器應用程式102並不會期望從客戶端應用程式101得到回應。
暫態儲存106包含狀態化(stateful)資料集,其經常由演示引擎105進行同步以準確的表示在客戶端應用程式101所演示的資料狀態。暫態儲存106基本上是伺服器用來儲存客戶端資料的記憶體。它可以簡單的如網路伺服器的期程或者也可以是可擴展及高可用性的快取(cache)儲存解決方案等。暫態儲存106可同時提供另一額外功能,即當提供客戶端101與伺服器102的連接服務時,當資料變更時使用者可以在資料或變更最少遺缺的情形下重建及恢復先前的期程。
永久儲存107包含如資料庫等永久儲存裝置上的資料複本。使用“永久儲存(permanent storage)”及“資料庫(database)”等名稱應作廣義解釋,可為任何普遍認知的長期資料儲存。它本質上不一定要是資料庫,可以是單純檔(flat file)或是其他永久性或固定性的儲存資料型態。永久性是以軟體的觀點加以解釋,即以固定形式將資料保存一段長期或短期的時間。此等資料庫可以是關連型的資料庫如SQL資料庫,或是保存在伺服器裝置中的任何
其他類型資料庫或資料集合。這些資料可用來初始化暫態儲存106或提交(commit)來自暫態儲存106的變更。
回應訊息108與原始訊息104類似但反向。108訊息包含使用者介面(UI)更新所需的細節。舉例而言,若演示引擎105具有商務邏輯計算2個欄位的和(sum)以回應訊息104,且此欄位顯示在GUI 103上,則回應訊息108包含文字方塊的識別並將“值(value)”屬性設定為計算後的新值。另外又如若演示引擎105具有隱藏控制的商務邏輯以回應一演示事件訊息104,且此控制顯示在GUI 103上,則回應訊息108可包含此控制的識別,並設定“可見性(visibility)”屬性為“false”。
第2圖為說明客戶端應用程式101與伺服器應用程式102間的互動程序流程圖。
在第一步驟201中,使用者載入採用遠端演示服務的應用程式。這會引發一載入演示事件訊息送至伺服器202。接收到此演示事件訊號後,暫態儲存106以演示事件訊息中的定義值更新對應欄位值來進行同步203。若在演示事件訊息中沒有定義值,則同步步驟203不會進行任何作為。
以所接收的演示事件訊息為基礎,會執行若干商務規則204以回應演示事件訊息。若商務規則需要更新值,則結果會施用在暫態儲存106中。當接收到“載入演示事件(load presentation event)”類型訊息時,商務規則會以儲存在永久儲存107中的值來初始化暫態儲存106。一旦
所有商務規則執行完成,會對未施用商務邏輯前及商務邏輯執行後的暫態儲存進行比較,此即產生演示變更集合205以形成被公佈的演示變更訊息206。
接收到演示變更訊息後,客戶端應用程式會施用這些變更207。典型的是使用資料繫結(data binding)來完成,但仍視客戶端應用程式的技術而定,接著可能會要求手動(manual)更新。有些程式語言缺乏繫結特性。繫結係一種程式特性用來將一控制屬性對映(map)一物件屬性。當一屬性變更時則另一屬性也同時隨之變更。繫結使得RPS可直接在客戶端實現。若客戶端所使用的程式語言並沒有支援繫結,則需要編寫額外的程式邏輯來實現以物件屬特性值變更控制屬性值或其相反情形。最後,更新客戶端應用程式的圖形化使用者介面(GUI)以向使用者顯示演示變更。
使用者接著可以繼續以點擊按鈕和客戶端應用程式進行互動208,在文字方塊中輸入、選擇下拉式(dropdown)方塊中的項目等等。這會引發新的非同步演示事件訊息202。此程序會重覆執行直到使用者離開客戶端應用程式為止。
舉例而言,一軟體公司發展以擷取CRM類型聯絡資訊的客戶端應用程式。在此情形下,使用者可在一裝置中載入客戶端應用程式,如與網路連接的電腦中或透過通信
網路與伺服器連接的智慧型手機中。(值得注意的是在使用HTML頁面時,為了能真正獲得使用RPS模型的好處,JQuery、JavaScript或其他類似語言應被寫入在HTML頁面中以進行與伺服器的通信,而非採用標準的HTTP post/response技術。)使用者選擇一現有聯絡人,由資料庫或永久儲存中讀取相關資料,由於此聯絡人已遷至海外使用者意圖更新聯絡資訊。所使用的資料模型如第5圖所示,第6圖顯示圖形化使用者介面(GUI)典型的聯絡細節。
在本發明之前,所有從客戶端應用程式發給伺服器的服務呼叫(service call)可以是同步、非同步或兩者混合,端視客戶端應用程式所使用的發展技術而定。
應用程式載入如第6圖所示的圖形化使用者介面(GUI)聯絡細節,以及藉由製造一請求(request)給伺服器得到所選定的聯絡。伺服器從資料庫對所選定的聯絡選擇聯絡資料模型的所有值以作為回應,以及將此等資料回傳給客戶端應用程式。
客戶端應用程式則將所接收來自伺服器的聯絡資料儲存在客戶端本地記憶體(local memory)中。而後每一顯示在聯絡細節表單上的欄位都填入儲存於記憶體中的對應
聯絡資料值。在此必須特別留意,伺服器必須回傳定義在聯絡資料模型中的所有值給客戶端應用程式,無論這些值是否被使用。在此範例中,CRM資料庫“Contact”資料表(table)中的ID、CreatedOn、UpdatedOn及DeletedOn等均會由伺服器回傳,但卻未被客戶端應用程式所使用。
客戶端應用程式必須填入下拉式列表中“國家(Country)”的內容。為完成此作為必須對伺服器發出國家列表的請求,伺服器從資料庫或固定資料儲存中選擇資料模型Country資料表的全部紀錄及值以回應前述請求,並且回傳國家集合給客戶端應用程式。客戶端應用程式則對儲存在前述集合中的每一國家增加一新的下拉式項目。
客戶端應用程式同時必須填入下拉式列表中“州(state)”的內容。為完成此作為必須對伺服器發出州列表的請求,以及傳送目前所選定的國家值。伺服器從州關連國家的資料庫中選擇資料模型“State”資料表的全部紀錄及值以回應前述請求,並且回傳對應於所選定國家的州集合給客戶端應用程式。客戶端應用程式則對儲存在前述集合中的每一州增加一新的下拉式項目。
另一種填入州的方法是當傳送請求給伺服器時不傳送目前選定的國家。這會導致所有國家的所有州都必須回傳。客戶端應用程式再過濾列表並且僅對與所選定國家相關連的州增加一新的下拉式項目。此方法對於規律性變更國家的應用程式使用者顯有效益,因為可節省與伺服器間的傳輸,但結果是必須一開始從伺服器傳輸更多資料,而
其中大多數資料並未被使用。
圖形化使用者介面(GUI)聯絡細節表單一開始係以唯讀模式(read only mode)被載入,因此客戶端應用程式必須關閉(disable)所顯示的每一欄位。
客戶端應用程式的使用者接著點擊“Edit”按鈕,客戶端應用程式對此事件作出反應並且啟用(enable)顯示在表單上的每一欄位。
客戶端應用程式使用者接著更新街道及區縣值。
使用者接著選擇一不同的國家。客戶端應用程式對此事件作出反應並且清除儲存在州下拉式方塊中的項目,接著必須對伺服器發出請求及傳送最新選定的國家以獲得州列表。伺服器從州關連國家的資料庫中選擇“State”資料模型的全部紀錄及值以回應前述請求,並且回傳州集合給客戶端應用程式。客戶端應用程式接著對儲存在前述集合中的每一州增加一新的下拉式項目。
客戶端應用程式的使用者接著選擇一不同州並且更新郵遞區號(post code)值。隨著郵遞區號的改變,客戶端應用程式對此事件作出反應並發出一傳送區縣、郵遞區號以及國家的請求給伺服器以驗證所輸入的郵遞區號是否合法(valid)。伺服器驗證郵遞區號作為回應並且回傳驗證
結果給客戶端應用程式。若郵遞區號是不合法的(invalid)則會回傳一錯誤訊息給客戶端應用程式並向使用者顯示。
客戶端應用程式的使用者接著點擊儲存(save)按鈕。客戶端應用程式對此事件作出反應,並以聯絡細節表單中的對應欄位更新儲存在客戶端本地記憶體中的每一聯絡資料值。
客戶端應用程式接著作出一請求給伺服器以傳送所有儲存在客戶端本地記憶體中的聯絡資料值。伺服器回應此請求的第一步是驗證所有值。若存在任何無效值項目,則回傳一錯誤訊息給客戶端應用程式並向使用者顯示,否則就會以客戶端應用程式所提供的值更新資料庫。若資料庫更新成功,伺服器回傳一成功回應給客戶端,在此客戶端應用程式會以關閉聯絡細節表單作為回應。請注意客戶端應用程式必須回傳定義在聯絡資料模型下的所有值給伺服器,無論這些值是否經過變更。在本範例中,聯絡(Contact)資料表ID、FirstName、LastName、Phone、Mobile、Email、CreateOn及DeleteOn等行的列值均傳送給伺服器,然這些值卻未變更。
在本發明所提出的遠端演示服務方案中,從客戶端應
用程式發給伺服器的服務呼叫(service call)係為非同步的,以及較佳者為僅傳送直接需要的值。
實現遠端演示服務所需的客戶端應用程式請求及伺服器回應資料結構之一範例如第7圖中所示。對每一表單而言具有一些顯示在圖形化使用者介面(GUI)表單上的欄位,因此每一欄位需要一欄位類別(Field class),每一欄位包含一些屬性如Value、Enabled、Visible等,因此每一欄位屬性需要一屬性類別(Property class)。同樣地,一表單本身可能也具有若干屬性。本範例僅描述簡單的情形,然更複雜的範例可根據在此所提出的原則及概念發展而成,且施用到許多不同的應用實現中。
應用程式載入如第6圖所示的圖形化使用者介面(GUI)表單聯絡細節,以及向伺服器發出請求以獲得所選擇聯絡的細節。伺服器從資料庫中對所選定的聯絡人選擇如第5圖中所示資料模型聯絡(Contact)資料表的所有值以回應此請求,接著將聯絡資料儲存於伺服器記憶體中。前述作為可在一期程(session)或在快取物件(cache object)中完成,主要目的是將資料儲存在伺服器中而非客戶端。
接著伺服器開始建立回應。首先建立一表單(Form),接著對顯示在客戶端應用程式上的每一欄位建立一欄位,以及對每一欄位建立一對應的值(Value)屬
性並設定值。
既然聯絡細節圖形化使用者介面(GUI)表單一開始載入為唯讀模式(read only mode),每一欄位會要求屬性“Enabled”設定為“False”。
既然“State”及“Country”為下拉式方塊,同時必須設定包含可用列表項目的“Items”屬性。
伺服器接著將回傳回應給客戶端應用程式。
以XML格式的回應範例於下如範例三所示。
接著,以伺服器傳來資料中所包含相對應的表單/欄位屬性值設定顯示在聯絡細節表單上每一欄位的每一屬性。
客戶端應用程式的使用者接著點擊編輯(edit)按鈕,客戶端應用程式對此點擊事件作出反應並對伺服器發出請求,以及傳送“Edit”按鈕的欄位鍵以及值“click”。伺服器建立遠端演示服務回應以回應此請求,以及設定每一欄位僅一“Enabled”屬性為“true”。當沒有變更時在遠端演示服務回應中不會要求其他屬性。
接著,客戶端應用程式接收來自伺服器的回應,並以伺服器傳來資料中所包含相對應表單/欄位屬性值設定顯示在聯絡細節表單上每一欄位的每一屬性。
客戶端應用程式的使用者接著變更街道值。客戶端應用程式對此變更作出反應並對伺服器發出一請求,以及傳送街道文字方塊欄位鍵及新街道值的“value”屬性。伺服器用新街道值對儲存在伺服器記憶體中的聯絡資料進行更新以回應此請求。伺服器回應一空白回應(blank response)。
客戶端應用程式的使用者接著更新區縣值。客戶端應用程式對此變更事件作出反應並對伺服器發出一請求,以及傳送區縣文字方塊的欄位鍵及新區縣值的“value”屬性。伺服器用新區縣值對儲存在伺服器記憶體中的聯絡資料進行更新以回應此請求。伺服器回應一空白回應。
客戶端應用程式的使用者接著選擇一不同國家值。客戶端應用程式對此變更事件作出反應並對伺服器發出一請求,以及傳送國家下拉方塊的欄位鍵及新國家值的“value”屬性。伺服器首先用新國家值對儲存在伺服器記憶體中的聯絡資料進行更新以回應此請求。接著,建立一遠端演示服務回應及設定一“State”欄位的“Items”屬性,其包含新國家值的州(state)可用列表,以及回傳此回應給客戶端應用程式。
客戶端應用程式接收來自伺服器的回應,以包含在所接收資料中“State”欄位的“Items”設定州項目。
使用者接著選擇一不同的州值。客戶端應用程式對此變更事件作出反應並對伺服器發出一請求,以及傳送“State”下拉方塊的欄位鍵及新州值的“value”屬性。伺服器
用新州值對儲存在伺服器記憶體中的聯絡資料進行更新以回應此請求。伺服器回應一空白回應。
客戶端應用程式的使用者接著更新郵遞區號(post code)值。客戶端應用程式對此變更事件作出反應並對伺服器發出一請求,以及傳送“postcode”文字方塊的欄位鍵及新郵遞區號值的“value”屬性。伺服器首先用新郵遞區號值對儲存在伺服器記憶體中的聯絡資料進行更新以回應此請求。接著進行郵遞區號的合法性驗證。若郵遞區號是不合法的則伺服器建立一遠端演示服務回應並以錯誤訊息設定郵遞區號欄位“error”屬性,以及回傳此回應給客戶端應用程式,否則伺服器回應一空白回應。
客戶端應用程式的使用者接著點擊“Save”按鈕。客戶端應用程式對此點擊事件作出反應並對伺服器發出一請求,以及傳送“Save”按鈕的欄位鍵及“Click”值。伺服器首先驗證儲存在伺服器記憶體中的聯絡資料以回應此請求。若驗證存在任何不合法資料項目則伺服器建立一遠端演示服務回應並以錯誤訊息設定表單“Error”屬性,以及回傳此回應給客戶端應用程式,否則以儲存在伺服器記憶體中的聯絡資料更新資料庫。
若資料庫更新成功,伺服器建立一遠端演示服務回應並設定表單“Visible”屬性為false,以及回傳此回應給客戶端應用程式。
客戶端應用程式接收來自伺服器的回應,設定表單可見性屬性為false以使視窗消失。
在此必須注意於下如範例三所示的回應,在2個按鈕(“Edit”及“Save”)並無輸入。這是由於預設中按鈕具有啟用(enabled)屬性設為“true”,因此無需傳送此等資料,根據這些按鈕的預設值即可。
本實施範例可使用Microsoft“Silverlight”Version 4或5及使用C#撰寫客戶端應用程式,以及Microsoft“Windows Communications Services”或Microsoft ASP.net MVC WebAPI及SignalR。以及使用C#撰寫伺服器應用程式及使用Microsoft SQLServer(如2008)作為資料庫。
如前所述實施範例二中可能產生回應之一範例如第8及第9圖所示。本範例為XML(第8圖)以及JSON(第9圖),然可使用其他程式語言或不同的標記語言(markup language)。
針對如實施範例一的傳統方案與如實施範例二的本發明所提出方案進行若干效率測試。使用Fiddler 2應用程式(Fiddler Web Debugger Version 2.3.5.2,作者Eric Lawrence)可得出一些對照結果並顯示於第10圖中。
在本說明書中,除非內容明顯指出,否則
“comprising”一詞具有非獨佔性(non-exclusive)的意義,在意義上為“including at least”,而不是具獨佔性意義的“consisting only of”。前述情形對等應用在文法的變化詞上如“comprise”、“comprises”等等。雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟習此技藝者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
本發明可應用於軟體發展產業,以改善透過通信網路進行互動的主從式軟體應用程式。
101‧‧‧客戶端應用程式
102‧‧‧伺服器應用程式
103‧‧‧圖形化使用者介面
104‧‧‧演示事件
105‧‧‧演示引擎
106‧‧‧暫態儲存
107‧‧‧永久儲存
108‧‧‧演示變更
本發明之較佳實施例輔以圖式說明,其中:第1圖係為說明本發明應用程式架構之一區塊圖。
第2圖係為說明本發明應用程式處理流程之一流程圖。
第3圖係為說明傳統方法之一資料序列圖表。
第4圖係為說明本發明之一資料序列圖表。
第5圖係顯示於下範例中所使用資料模型之一範例。
第6圖係顯示與第5圖中資料模型相關的圖形化使用者介面(Graphical User Interface,GUI)表單之一範例。
第7圖係顯示本發明一般客戶端應用程式請求及伺服
器回應資料結構之一範例。
第8圖係為以XML所寫成回應之一範例。
第9圖係為以JSON所寫成回應之一範例。
第10圖顯示本發明與先前方案執行效率比較測試結果之一範例。
Claims (15)
- 一種電子裝置的主從式網路,包括:具有至少一資料庫的至少一伺服器裝置,以及根據商務規則在該資料庫中處理資料的至少一伺服器應用程式,以及至少一客戶端裝置,各客戶端裝置具有一圖形化使用者介面與執行於該客戶端裝置上的至少一客戶端應用程式,其中該客戶端應用程式用以經由該圖形化使用者介面而接收來自一使用者的一動作,以及回應於各動作,透過網路傳輸代表該動作的資料給該伺服器應用程式,該伺服器應用程式用以儲存接收自該客戶端應用程式的代表該動作的該資料、應用該商務規則至接收自該客戶端應用程式的代表該動作的該資料、以及基於該商務規則而實施進一步動作。
- 如申請專利範圍第1項所述之主從式網路,其中用以處理資料的該商務規則的主要部分是位在該伺服器應用程式中。
- 如申請專利範圍第2項所述之主從式網路,其中用以處理資料的該商務規則,實質上全部位在該伺服器應用程式中。
- 如申請專利範圍第1項所述之主從式網路,其中該動作係改變欄位中的資料,且代表該動作的該資料實質上對應至改變於該欄位中的該資料及該欄位之身分。
- 如申請專利範圍第1項所述之主從式網路,其中實質上僅接收自該使用者的該動作所引發的事件會由該客戶端應用程式傳輸到該伺服器應用程式。
- 如申請專利範圍第1項所述之主從式網路,其中應用該商務規則至接收自該客戶端應用程式的代表該動作的該資料改變部分該資料,且該進一步動作包含傳輸實質上僅該資料被改變的該部分由該伺服器應用程式到該客戶端應用程式。
- 如申請專利範圍第1項所述之主從式網路,其中該進一步動作包含傳輸實質上僅對應於在該圖形化使用者介面上的改變的部分資料由該伺服器應用程式到該客戶端應用程式。
- 如申請專利範圍第1項所述之主從式網路,其中該伺服器應用程式實質上以狀態方式處理資料。
- 如申請專利範圍第1項所述之主從式網路,其中當該伺服器應用程式進行改變時,該客戶端應用程式及該伺服器應用程式藉由從該伺服器應用程式初始廣播一非同步訊息至該客戶端應用程式來進行同步。
- 如申請專利範圍第9項所述之主從式網路,其中實質上僅對該圖形化使用者介面有直接影響的資料會作為該同步訊息的一部分被廣播。
- 如申請專利範圍第1項所述之主從式網路,其中該資料在傳輸前會被壓縮,以及在接收後會被解壓縮。
- 一種電腦可實現方法,在電子裝置的主從式網路 中,其包含具有至少一資料庫的至少一伺服器裝置及根據商務規則在該資料庫中處理資料的至少一伺服器應用程式,以及至少一客戶端裝置,各客戶端裝置具有一圖形化使用者介面與執行於該客戶端裝置上的至少一客戶端應用程式,該方法包括下列步驟:藉由該客戶端應用程式,接收來自一使用者經由該圖形化使用者介面的一動作;藉由該客戶端應用程式且回應於各動作,透過網路傳輸代表該動作的資料給該伺服器應用程式;藉由該伺服器應用程式,儲存接收自該客戶端應用程式的代表該動作的該資料;藉由該伺服器應用程式,應用該商務規則至接收自該客戶端應用程式的代表該動作的該資料;以及藉由該伺服器應用程式,基於該商務規則而實施進一步動作。
- 如申請專利範圍第12項所述之方法,其中用以處理資料的該商務規則的主要部分是位在該伺服器應用程式中。
- 如申請專利範圍第12項所述之方法,其中當該伺服器應用程式進行改變時,該客戶端應用程式及該伺服器應用程式藉由從該伺服器應用程式初始廣播一非同步訊息來進行同步。
- 如申請專利範圍第14項所述之方法,其中實質上僅對該圖形化使用者介面有直接影響的資料會作為該同步 訊息的一部分被廣播。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU2011904505A AU2011904505A0 (en) | 2011-10-28 | Data Interchange System |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201337581A TW201337581A (zh) | 2013-09-16 |
TWI571747B true TWI571747B (zh) | 2017-02-21 |
Family
ID=48166958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101139728A TWI571747B (zh) | 2011-10-28 | 2012-10-26 | 資料交換系統 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20140297736A1 (zh) |
EP (1) | EP2771799A4 (zh) |
AU (2) | AU2012327879B2 (zh) |
CA (1) | CA2852982A1 (zh) |
TW (1) | TWI571747B (zh) |
WO (1) | WO2013059887A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI552547B (zh) * | 2014-07-22 | 2016-10-01 | 廣達電腦股份有限公司 | 資料傳輸服務切換系統和方法 |
CN108959202B (zh) * | 2017-05-23 | 2023-02-14 | 莫列斯有限公司 | 处理非电子数据交换数据的装置 |
CN107734053A (zh) * | 2017-11-03 | 2018-02-23 | 山东浪潮通软信息科技有限公司 | 一种支持WbApi同时实现推送和跨域的解决方法 |
CN108667857A (zh) * | 2018-08-28 | 2018-10-16 | 深信服科技股份有限公司 | 一种安全策略维护方法及系统、服务端、客户端 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6253228B1 (en) * | 1997-03-31 | 2001-06-26 | Apple Computer, Inc. | Method and apparatus for updating and synchronizing information between a client and a server |
TW200639652A (en) * | 2005-04-08 | 2006-11-16 | Microsoft Corp | System and method for producing and communicating requested data among networked application programs |
US20090172792A1 (en) * | 2007-12-27 | 2009-07-02 | International Business Machines Corporation | Apparatus, system, and method for asynchronous java script and xml (ajax) form-based authentication using java 2 platform enterprise edition (j2ee) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6901428B1 (en) * | 2000-10-11 | 2005-05-31 | Ncr Corporation | Accessing data from a database over a network |
US7987491B2 (en) * | 2002-05-10 | 2011-07-26 | Richard Reisman | Method and apparatus for browsing using alternative linkbases |
US7387201B2 (en) | 2005-04-26 | 2008-06-17 | Illinois Tool Works Inc. | Container carrier having longitudinal end loop |
US20070214239A1 (en) * | 2006-03-10 | 2007-09-13 | Mechkov Chavdar B | Dynamically updated web page |
US7487201B1 (en) * | 2006-06-30 | 2009-02-03 | Sun Microsystems, Inc. | Method and system for providing framework for Java based AJAX web applications |
JP5013548B2 (ja) * | 2009-07-16 | 2012-08-29 | ソニーモバイルコミュニケーションズ, エービー | 情報端末、情報端末の情報提示方法及び情報提示プログラム |
-
2012
- 2012-10-26 TW TW101139728A patent/TWI571747B/zh not_active IP Right Cessation
- 2012-10-29 EP EP12843710.0A patent/EP2771799A4/en not_active Ceased
- 2012-10-29 AU AU2012327879A patent/AU2012327879B2/en not_active Ceased
- 2012-10-29 WO PCT/AU2012/001325 patent/WO2013059887A1/en active Application Filing
- 2012-10-29 CA CA2852982A patent/CA2852982A1/en not_active Abandoned
- 2012-10-29 US US14/356,520 patent/US20140297736A1/en not_active Abandoned
-
2016
- 2016-08-23 AU AU2016101498A patent/AU2016101498B4/en not_active Expired
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6253228B1 (en) * | 1997-03-31 | 2001-06-26 | Apple Computer, Inc. | Method and apparatus for updating and synchronizing information between a client and a server |
TW200639652A (en) * | 2005-04-08 | 2006-11-16 | Microsoft Corp | System and method for producing and communicating requested data among networked application programs |
US20090172792A1 (en) * | 2007-12-27 | 2009-07-02 | International Business Machines Corporation | Apparatus, system, and method for asynchronous java script and xml (ajax) form-based authentication using java 2 platform enterprise edition (j2ee) |
Also Published As
Publication number | Publication date |
---|---|
CA2852982A1 (en) | 2013-05-02 |
EP2771799A1 (en) | 2014-09-03 |
EP2771799A4 (en) | 2015-08-05 |
TW201337581A (zh) | 2013-09-16 |
AU2012327879B2 (en) | 2017-01-19 |
WO2013059887A1 (en) | 2013-05-02 |
AU2016101498B4 (en) | 2017-05-18 |
NZ625325A (en) | 2014-10-31 |
AU2012327879A1 (en) | 2014-06-12 |
US20140297736A1 (en) | 2014-10-02 |
AU2016101498A4 (en) | 2016-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11032140B2 (en) | Using a template to update a stack of resources | |
JP6129153B2 (ja) | アプリケーションプログラムの状態モデルを提供するための方法およびシステム | |
TWI314415B (en) | System and method for building wireless applications with intelligent mapping between user interface and data components | |
CN101122921B (zh) | 基于ajax与html标记形成树形显示结构的方法 | |
US9992285B2 (en) | Techniques to manage state information for a web service | |
AU2012238127B2 (en) | Recovery of tenant data across tenant moves | |
US10394627B2 (en) | Asynchronous C#-JS data binding bridge | |
EP2312434A2 (en) | Display rendering system with supporting components | |
US10089108B1 (en) | Archival format for incremental deployments and version control | |
US8434097B2 (en) | Dynamic data binding for MBOs for container based application | |
CN109388766A (zh) | 页面加载的方法和装置 | |
AU2016101498B4 (en) | Data Interchange System | |
US10725799B2 (en) | Big data pipeline management within spreadsheet applications | |
US20130339488A1 (en) | Enterprise services framework for mobile devices | |
WO2017143747A1 (zh) | 一种移动终端网络请求方法及系统 | |
US11567742B2 (en) | Method, apparatus, and computer program product for generating updated network application interfaces | |
CN103793459B (zh) | 一种网页打开方法及装置 | |
US20110246559A1 (en) | Four tier architecture for implementing thin clients | |
US20190121649A1 (en) | User interface metadata from an application program interface | |
US20130132467A1 (en) | Method of using application, gateway using the method, terminal using the method, and terminal system using the method | |
CN103440134A (zh) | 基于webkit内核的存储资源服务的本地扩展方法 | |
EP3289544A1 (en) | Insertion of unsaved content via content channel | |
CN111414232B (zh) | 虚拟机模板数据处理方法及装置 | |
NZ625325B2 (en) | Data interchange system | |
US20230123011A1 (en) | Integrating data with different configuration models |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |