TWI405091B - 用於跨不同應用程式架構之資料服務的電腦系統及電腦可實施方法 - Google Patents

用於跨不同應用程式架構之資料服務的電腦系統及電腦可實施方法 Download PDF

Info

Publication number
TWI405091B
TWI405091B TW094147278A TW94147278A TWI405091B TW I405091 B TWI405091 B TW I405091B TW 094147278 A TW094147278 A TW 094147278A TW 94147278 A TW94147278 A TW 94147278A TW I405091 B TWI405091 B TW I405091B
Authority
TW
Taiwan
Prior art keywords
data
application
architecture
cdp
storage area
Prior art date
Application number
TW094147278A
Other languages
English (en)
Other versions
TW200632699A (en
Inventor
Anil K Nori
Arthur T Whitten
Dale Woodford
Jose A Blakeley
Pedro Celis
Praveen Seshadri
Sameet H Agarwal
Soner Terek
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of TW200632699A publication Critical patent/TW200632699A/zh
Application granted granted Critical
Publication of TWI405091B publication Critical patent/TWI405091B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60NSEATS SPECIALLY ADAPTED FOR VEHICLES; VEHICLE PASSENGER ACCOMMODATION NOT OTHERWISE PROVIDED FOR
    • B60N3/00Arrangements or adaptations of other passenger fittings, not otherwise provided for
    • B60N3/02Arrangements or adaptations of other passenger fittings, not otherwise provided for of hand grips or straps
    • B60N3/023Arrangements or adaptations of other passenger fittings, not otherwise provided for of hand grips or straps movable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Transportation (AREA)
  • Mechanical Engineering (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Communication Control (AREA)

Description

用於跨不同應用程式架構之資料服務的電腦系統及電腦可實施方法
本發明係相關於一種應用程式架構之資料服務的平台,尤其相關於一種跨不同應用程式架構之資料服務的平台。
資料已成為幾乎每一種應用程式中的重要資產,不論其係為用於瀏覽產品並產生命令的一種特定業務(LOB)應用程式,或用來在眾人之間安排會議之一個人資訊管理(PIM)應用程式。應用程式可在應用程式資料上執行資料存取/管理與資料管理操作兩者。傳統的應用程式操作可查詢一資料之集合、取回結果集、執行可改變該資料狀態之某些應用程式邏輯、以及最後可將該資料保存至儲存媒體。
傳統上,用戶端/伺服器應用程式會將查詢與永續動作移交至配置於資料層中之資料庫管理系統(DBMS)。若有以資料為中心的邏輯,可將之編碼成資料庫系統中之儲存程序。資料庫系統在以資料表與行表示之資料上操作,且應用程式層中之應用程式在以程式語言物件(如類別與結構)表示之資料上操作。在用戶端/伺服器系統中可容忍應用程式與資料層中之資料管理服務(與機制)的不符合。然而,隨著網路科技(以及服務導向架構)的來臨以及應用程式伺服器接收度亦廣,應用程式逐漸成為多層,且更 重要地,現在資料可出現於每一層中。
在此種層化的應用程式架構中,可在多重層中管理資料。此外,由於硬體在可定址性與大容量記憶體方面的進展,有更多的資料可存在於記憶體中。應用程式亦可處理不同資料型別,舉例而言如物件、檔案、與XML(可延伸標記語言)資料。
在硬體與軟體環境中,對於豐富資料存取與管理服務和程式設計環境之良好整合的需求日增。用來解決上述問題的一種傳統實作為一資料平台。該資料平台提出了一種服務(機制)之集合,其可供應用程式存取、處理、與管理和應用程式設計環境整合良好之資料。然而,此種傳統架構在許多方面都有缺點。此種資料平台的某些主要要求包括複雜物件模型、豐富關係、邏輯與實體資料抽象化之分離、查詢豐富資料模型概念、作用中告知、與中介層架構之較佳整合。
下文提出本發明之一種簡單摘要,以提供對該架構之某些態樣的基本了解。本摘要並非該架構之一種廣泛敘述。其用意並非指明本發明之主要/關鍵要件,或描述本發明之範圍。其唯一目的在於以一種簡化之形式提出本發明之某些概念,以作為後文詳細敘述之一種序言。
此處揭露並聲明之發明,在其一種態樣中,至少包含一種架構,其有助於一共用資料存放區與多重不同應用程 式架構中之多重應用程式間的資料管理。其形式化遠離應用程式之一種對映層以便將資料表對映至物件。該架構可橋接桌面應用程式與特定業務(LOB)應用程式架構之間的間隙,以便允許應用程式在應用程式物件之層級而非在資料表層級處理資料。此外,該架構使得可在跨所有架構中共享此資料,使得由一終端使用者應用程式定義的一種資料實體可供LOB應用程式使用,且反之亦然。
該架構包括一資料儲存元件,其有助於資料之儲存,該資料包括結構化、半結構化、與非結構化資料。一共用資料平台介面結合至資料儲存元件,以提供可供多種不同應用程式架構存取之資料服務,該資料服務允許不同架構的一種相對應之應用程式存取該資料。該資料平台至少更包含一API(應用程式介面),其有助於以公用類別、介面、與靜態輔助函數之形式和應用程式進行通訊;一運行時間元件,其介面結合至該API且提供物件關聯對映、查詢對映、與實行條件約束;以及一條件約束/安全性引擎,其有助於條件約束之宣告性授權,且可控制對資料平台之實體的存取。
在本發明之另一種態樣中,一共用資料平台(CDP)提出在多種終端使用者應用程式架構(如,PIM(個人資訊管理員)架構至LOB(特定業務)應用程式架構)中共用之資料服務。應用程式之範圍包括終端使用者應用程式,例如Explorer、電子郵件、與媒體應用程式;知識管理者應用程式,例如文件管理與協同合作應用程式;LOB 應用程式,例如ERP(企業資源規劃)與CRM(客戶關係管理);網路應用程式以及系統管理應用程式。
在其中的另一種態樣中,CDP對於包括一豐富存放區之應用程式提供了許多優點,使其具有在多層環境中模型化並儲存結構化、半結構化、與非結構化資料、彈性組織、豐富查詢/搜尋、豐富表現方式、彈性管理、資料同步化、共享、結構描述、以及彈性部署之能力。
為了達成上述與相關目的,此處參照下列敘述與附隨圖示來描述該架構之某些說明性態樣。然而,這些態樣僅指出了多種可利用該架構之原則其中的一小部份,且本發明之本意欲包括所有此類態樣及其等價物。由下列本發明之詳細說明連同圖示,可了解本架構之其他優點與創新特徵。
此處參照圖示描述本架構,其中利用相似的參照數值來表示整份申請書中之相似要。在下文敘述中,為達解釋之目的,提出多種特定細節,以提供對本發明之詳盡了解。然而,很明顯地,可在不具有這些特定細節的情形下實作本架構。在其他例子中,以區塊圖之形式來表示習知的結構與裝置,以便協助描述本架構。
在此申請案中,「元件」與「系統」等辭彙係指一種電腦相關之實體,可以是硬體、硬體與軟體之組合、軟體、或執行中之軟體。舉例而言,一元件可以是但不限於,在 一處理器上執行的一處理、一物件、一可執行檔案、一執行緒、一程式、和/或一電腦。作為說明,在一伺服器上執行的一種應用程式以及該伺服器兩者皆可能是一種元件。一或更多種元件可位於一處理和/或執行緒中,且一元件可位在一電腦上和/或分散於二或更多種電腦間。
一資料平台是一種能提供服務(或機制)之一種集合的平台,其可供應用程式用於存取、處理、與管理和應用程式設計環境良好整合之資料。本發明係針對傳統資料平台加以改良。本架構為一種共用資料平台(CDP),其提供多種應用程式架構(如,PIM(個人資訊管理員)架構、與LOB(Line-of-商業)架構)中共用之資料服務。應用程式包括終端使用者應用程式例如Explorer、電子郵件、與媒體應用程式;知識管理者應用程式,例如文件管理與協同合作應用程式;LOB應用程式,例如ERP(企業資源規劃)與CRM(客戶關係管理);網路應用程式以及系統管理應用程式。
CDP對應用程式提供了至少下列優點:
1.豐富存放區-模型化與儲存所有資料型別(結構化、半結構化、與非結構化)之能力。
a.關聯資料模型與存取。
b.豐富物件抽象化與程式設計環境。
c.經由XML儲存與查詢進行半結構化資料模型。
d.將非結構化資料視為檔案。
2.彈性組織-將任意物件集合非靜態地組織成一資料 表之能力。
a.支援檔案系統名稱空間與組織。
3.豐富查詢/搜尋-查詢所有資料之能力。
a.支援豐富查詢(如,SQL、OSQL(物件導向SQL)、XML查詢、C#序列)。OSQL是一種功能性語言,其為SQL之一種超集。
4.豐富表現方式-支援豐富資料表現方式。這並非應用程式/業務處理邏輯之替補。
5.彈性管理-在不同層次管理(如,項目層級操作,例如複製、移動、與序列化)。
6.資料同步化-任意資料集合之點對點與主從同步化。
7.共享-跨多重應用程式與多重應用程式架構共享資料之能力。舉例而言,跨Outlook與CRM應用程式共享連絡人。
8.結構描述-供使用者與ISV(獨立支援業者)應用程式用來協助彼此間之協同合作的豐富、開箱即用結構描述。
9.彈性部署-可於兩層與三層環境中部署。
CDP與相關架構可實現所有上述優點。關鍵的創新包括一種層化架構、一共用資料模型,其可找出在多重應用程式架構中共用之模型化概念、以及一種CDP元件(功能性)架構。
參照圖示,第1圖闡明一系統100,其可利用一CDP 102。可利用該CDP 102來提供資料應用程式與應用程式 架構104以及一資料存放區106上之資料間的資料管理。舉例而言,資料存放區106可儲存結構化、半結構化與非結構化資料型別。如上所述,CDP 102可提供在應用程式架構以及與其相關聯之終端使用者應用程式中共用之資料服務。CDP 102更包括一API 108,其有助於將應用程式以及應用程式架構104、一運行時間元件110、與一條件約束/安全性引擎元件112介面結合。API 108能以公用類別、介面、與靜態輔助函數之形式提出程式設計介面,供利用CDP之應用程式使用。實施例包括StorageContextStorageSearcherEntityTableSetTableEntityReference 、以及TableReference 。可以理解資料庫程式設計語言整合(如,C#序列運算子)可以是API 108之一部份。
CDP運行時間元件110為一層,其可實作顯露於公用API層108中之各種功能。其可藉由提供物件關聯對映以及查詢對映、實行資料模型條件約束等,以實作共用資料模型。更明確地說,CDP運行時間110包括:共用資料模型元件實作;一查詢處理器元件;一對話期(session)與交易元件;一物件快取,其可包括一對話期快與一外顯快取;一服務元件,其包括變更追蹤、衝突偵測、與事件;一游標與規則元件;一商業邏輯裝載元件;以及一永續與查詢引擎,其可提供核心永續與查詢服務。在永續與查詢服務內部為物件關聯對映,包括查詢/更新對映。CDP 102亦包括條件約束/安全性引擎112,其可用於對資料存放區106 套用條件約束以及提供安全性政策,例如,以角色為基礎之安全性政策。
第2圖闡明一種更詳細之CDP系統200,其可包括CDP 102,其可介面結合至一獨立資料存放區(此處未顯示)之一種存放區管理元件202。或者是,存放區管理元件202可包括資料存放區,例如其可和一種SQL伺服器實作相關聯。可以理解,資料存放區可存放區結構化、半結構化、與非結構化資料型別。
CDP的目標之一在於藉由支援多種應用程式架構204(標記為Af1 、Af2 、...、AFZ )以支援快速發展之應用程式。架構204可包括LOB、終端使用者、以及系統管理應用程式架構,舉例而言。應用程式206(標示為Af1 、...、AFS ;Af1 、...、AFT )分別與應用程式架構204(Af1 、Af2 、...、AFZ )相關聯,其可分別控制應用程式架構204、CDP 102、以及下方的存放區202,以開發豐富應用程式。下文將描述一層化方法之優點。
存放區管理層202提供了支援核心資料管理能力(如,延展性、容量、可用性與安全性);CDP層102支援一豐富資料模型、對映、查詢、與資料存取機制,以供應用程式架構204使用。可延伸之CDP機制使得可在該資料平台上組建多重應用程式架構204。應用程式架構204為特定於應用程式定義域(如,終端使用者應用程式與LOB應用程式)之額外模型與機制。層化架構方法具有數種優點。其使得可獨立且快速地革新並部署每一層。CDP層102 可以更加機敏,有較多革新之空間,且可比存放區層202更常革新。層化方法可將CDP層102與公司策略結合。最後,存放區層202可集中於核心資料管理能力上,以便符合該策略。
參照第3圖,闡明了實作一共用資料平台之一種方法。雖然為求解釋時之單純,此處僅顯示一或更多種方法,如,以一種流程圖之形式,且將之描述為一系列動作,必須理解本架構不受限於動作之順序,因為根據本發明,某些動作可以一種不同之順序來進行和/或與其他此處所顯示並描述之動作同時同時進行。舉例而言習知技藝人士可理解,能夠利用一系列互相相關之狀態或事件如一狀態圖來表示一方法。更有甚者,欲實作本架構之一種方法時,並非所有闡明之動作皆為必須。
在步驟300,提出一種核心資料管理層,其可在一資料存放區中模型化並儲存結構化、半結構化、與非結構化資料型別。在步驟302,將一CDP 110層套用在核心資料管理層上以提供資料服務,其可支援可供應用程式架構使用之一種豐富資料模型、對映、查詢、與資料存取機制。在步驟304,在CDP之上覆蓋一或更多種應用程式架構。在步驟306,在每一種應用程式架構之中提出一或更多種應用程式,其現在可透過CDP提供之資料服務存取資料存放區之資料。
第4圖闡明本架構之CDP元件的一種概要圖示。可以理解,在此概要圖示中,任何元件和/或方塊之位置並不意 味(或必然可防止)任何跨程序/電腦界限之特定部署。CDP可利用一種樂觀並行模型,使得若欲儲存變更,且已經改變下方的資料時,衝突偵測能以一種應用程式特定之形式來解決該衝突。為了要成為一種有效的資料平台,CDP包括的功能如程式設計語言整合、豐富資料模型,永續架構、服務等等。API 108可由一應用程式400透過CDP運行時間110來協助存放區202之語言整合與資料存取。CDP為定義域不可知的,這意味著其可使得對於資料之本質與形狀以及其上所需要之語意條件約束之假設幾乎為最小。為達此一目的CDP提供了下述功能(下文將詳述)。
共用資料模型(CDM):在CDP運行時間110的中心有一CDM 402。CDM 402之用意在於由主要和使用者資料(PIM、文件等)一起執行之應用程式至LOB與企業資料分析出跨多重應用程式定義域中共通之模型化概念。除了提供豐富物件與關聯式抽象化,CDM 402也提供了支援結構化、非結構化與半結構化資料。
列/實體資料-CDM 402支援一豐富實體關聯式模型化使其可擷取結構化資料(如,商業資料)之結構與表現方式。CDM 402是核心關聯模型之一種超集,其具有豐富物件抽象化與關聯模型(如,文件與連絡人之間的一種作者關聯;購買訂單與訂單行列之間的一種行列關聯)之延伸。
檔案資料-CDM 402支援「檔案資料流」資料型別以儲存並處理非結構化(檔案)資料。檔案資料流資料型別 可將資料儲存成一檔案並支援檔案存取API。在SQL伺服器中原本即支援檔案資料流資料型別,且其係對映至一種NTFS檔案資料流,且支援所有以檔案句柄/資料流為基礎之操作。除了在CDM 402中將非結構化內容模型化成一種檔案資料流之外,利用該實體型別,可將有用內容升級為結構化內容。以資料庫為基礎之檔案儲存系統定義了一檔案後援項目之概念,其為一種實體,可連同非結構化內容之檔案資料流而模型化結構化內容。檔案後援項目可在相關聯之檔案資料流上提供連同以資料流為基礎之操作的豐富查詢。
XML資料-在CDM 402中可將XML文件以兩種主要的方式模型化:(1)將之儲存成一種XML資料型別;(2)將XML文件對映成一或更多種實體(如,類似資料交換契約)。CDM 402可支援XML資料型別,如在SQL伺服器中之支援形式。XML資料型別可以是任何實體內容之型別;XML資料型別使得可儲存不具型別或具型別XML之文件。藉由將一或更多種XML結構描述和XML文件內容建立關聯來提供強型別。
API 108中之程式設計語言整合,包括查詢:核心CDP功能元件-對話期以及交易404、查詢406、永續408、游標410、服務412、物件快取414與商業邏輯裝載416皆封裝於在CDP API 108(如,StorageContext)中可用的數種「運行時間」類別中。以在CDM 402中撰寫之型別為基礎,CDP設計時期工具可產生強型別CLR(共通語言運行 時間)類別。CDP需要一種由CDM 402定義之型別系統上的查詢語言。CDP可支援以C#序列運算子與OPATH作為其查詢語言。為達此處所述應用程式之目的,通常可將CDP支援的查詢語言稱為共通查詢語言(CQL)。將CQL預想成包含核心關聯式運算(如,選擇、合併、與投影運算子)。雖然其語法可能不會和SQL完全相同,可以一種直接的形式將CQL對映至SQL。CQL允許對程式設計者所使用之物件結構進行豐富查詢。其目標是將CQL和C#群組正在進行之序列運算子工作一起排列。這些功能對於儲存於一關聯資料庫管理系統(RDBMS)(或任何其他CDP啟用之存放區)中之資料有效地提供了一種強型別且以物件為基礎之抽象化。更有甚者,可利用CDP之永續架構以便永久地保存與查詢一般傳統物件(POCO)。
永續引擎-一種永續引擎可提供宣告性之對映定義,其可精準描述如何將來自關聯存放區之個別元件組裝成物件。該引擎包括一查詢產生元件(此處未顯示),其可取得一表示式,該表示式係由查詢處理器以一種物件查詢表示式的形式所定義,且之後將之和宣告性對映結合。如此一來會成為等價之查詢表示式,其可存取資料庫中下層之資料表。一種更新產生元件(此處未顯示)可監看變更追蹤服務,且在對映中繼資料的幫助下,其可描述如何將這些在物件領域中之變更轉譯成資料表領域中之變更。
查詢/搜尋檔案與XML資料-如上文所解釋,CDM 402可分別利用檔案資料流與XML資料型別來儲存非結構化 與半結構化資料。CQL有能力查詢這些資料型別。對於升級成結構化實體之檔案內容(如,WinFS檔案支援之項目),CQL之關聯運算子可查詢這些實體。可利用全文搜尋來查詢儲存成檔案資料流之非結構化資料。可利用X路徑或X查詢來查詢XML內容可。
物件關聯對映:由於CDP可在一關聯(表格式)儲存區之上方提供一種以物件為基礎之抽象化,其必須提衝一種O-R對映元件。CDP支援規範性對映(CDP決定如何發生對映)與規範性對映(型別設計者具有某種程度之彈性可指定對映)兩者。須注意,今日一種以資料庫為基礎之檔案儲存系統實作係利用規範性對映,而在更一般的O-R永續架構需要非規範性對映。
快取:CDP運行時間可維護查詢結果(如,游標)以及未認可更新之一種快取。這稱為對話期快取。CDP亦可提供一外顯快取,其使得應用程式可在一離線模式中操作。CDP對於外顯快取中之資料提供了多種一致性之保證。該快取可藉由將資料之磁碟上識別與記憶體中之物件相關聯來進行識別管理。
查詢處理器:當對存放區進行查詢時,CQL查詢係對映至SQL;然而,當對外顯快取進行查詢時,會由QP元件來處理CQL查詢。會透過查詢處理器進行資料庫存取。查詢處理器允許多重前台去處理將被表示之多重查詢語言,且之後將之對映至一種內部制式格式。可利用其正在操作中之應用程式的定義域模型化與物件之形式來完成 之。之後可將查詢傳送至處理器,該處理器為一種管線處理,且之後可將之轉換成針對特定後台之查詢。
游標:CDP提供了僅可向前以及可捲動之游標兩者。游標支援告知、具收摺與展開之多層級群組,動態排序與篩選。
商業邏輯裝載:CDP提供一種運行時間環境以便在型別/實例上以及在操作上裝載以資料為中心之邏輯。此種以資料為中心商業邏輯和應用程式/商業處理邏輯不同,後者可裝載於應用程式伺服器中。物件並非僅是一資料庫中之行。當將物件在記憶體中實體化時,它們實際上是具有應用程式可調用之表現方式的物件。在系統中有延伸點,其主要為所有可在運行時間操作而延伸CDP之事件與回呼。這些物件並非僅是物件,而是CLR物件、.NET物件等。CDP允許了攔截那些物件中之內容位置方法呼叫之能力。應用程式可自訂這些物件之表現方式。
服務:CDP提供一組核心服務,其可供所有CDP用戶端使用。這些服務包括規則、變更追蹤、衝突偵測、事件、與告知。事件可將CDP運行時間110自架構層級服務延伸,或可供應用程式加入額外表現方式,且亦可用於在使用者介面處繫結資料。
條件約束:CDP提供條件約束/安全性元件112給允許型別設計者宣告性地撰寫條件約束之至少一種。這些條件約束係在儲存區中執行。傳統上,CDP條件約束之範圍涵蓋如長度、精確度、尺度、預設、檢查等等。在運行時 間,由CDP條件約束引擎來實行這些條件約束。
安全性:CDP提供一種以角色為基礎之安全性模型化-由使用者之憑證來決定其「角色」(例如系統管理員、進階使用者、核准者等)。針對每一種角色指派一組存取許可。CDP之安全性引擎可實行這些安全性政策。此外,CDP提供了一種安全性模型化,其可用於控制CDP中之實體的存取。安全性模型化可支援一作業系統使用者之驗證、實體之層級授權(如,對於讀取與更新有不同之許可)等。
須注意,此處係將條件約束/安全性元件112獨立於CDP運行時間元件110之外描述,這是因為其能夠以一種獨立於後者之實體來操作。或者是,且可能更有效率地,可將條件約束/安全性元件112和儲存元件202相結合,後者可以是資料庫系統。
綜合觀之,這些功能提供了一種強而有力的平台,可用來開發以資料為中心之應用程式與邏輯,且其可彈性地部署於不同層。須注意,在此圖示中運行時間元件(或方塊)之位置並不意味著(或必然阻礙)跨越處理/電腦界限之任何特定部署。此處係利用此一概要圖示來顯示功能元件。
CDP架構的主要優點之一在於其提供了實作中之彈性。這可代表兩種意義:
1)第4圖中顯示之某些元件為「移動式」,因為其可存在於不同處理/層中。明確地說,條件約束/安全性引擎112通常存在於第2圖之儲存處理202 中。
2)並非所有第4圖中顯示之元件都需要實作以便達到一完整作用之資料平台。明確地說,物件快取414可僅由一對話期快取組成。在另一種實作中,快取414可包括一外顯快取,其可和儲存區同步化。查詢處理器406可在物件快取414中之物件上操作。
下文將詳述CDP之多種功能和/或元件。如上所述,在CDP的中心為一種共用資料模型(CDM)402,其中CDM 402之本意在於由主要和使用者資料(PIM、文件等)一起執行之應用程式至LOB與企業資料分析出跨多重應用程式定義域中共通之模型化概念。一般而言,可利用兩種可能的技術來實作此種功能:1)針對每一種可欲想之(或可欲想為重要之)定義域的模型化概念。對於實體,可精確定義一「消費者」的意義為何(自LOB定義域)以及一「個人」為何(自使用者定義域)等等;以及2)提供一種彈性基礎,以供應用程式設計者於其上建立其本身、針對特定定義域之型別、條件約束、關聯式。CDM 402可利用第二種方法,使得其可提供一組基本之型別,且定義可用於授權一新型別的一種彈性架構。由此意義觀之,CDM 402可以是一資料模型(如,其實際上定義某些型別與其語意)且也是一種資料中繼模型化(如,其允許其他模型之規格)。
下文將討論CDM 402的某些功能,但不應將其視為對 本申請案之限制。該資料模型可包含關聯資料模型。換句話說,由CDM 402來顯露資料表上之資料表、行、查詢、與更新等概念。CDM 402可針對資料定義一種比資料表與行更豐富之物件抽象化。特別是,其使得真實世界之物品的模型化可利用例如實體、實體間之關聯式、繼承、包含、及其集合等概念。此外,CDM 402能夠藉由將程式設計語言型別系統和於其中模型化之應用程式抽象化緊密排列,以便最小化應用程式結構與儲存結構間的阻抗不匹配。更有甚者,可藉由支援應用程式表現方式(如,方法、功能)以及一種表現方式之彈性部署,以便提供雙層與多層應用程式。CDM 402亦可獨立於下房之實體存放去而擷取永續語意,使得可啟用CDM 402而將之於多種存放區中實作。
CDM 402可調用多種概念。可由將實作之中繼模型化來利用下列概念,以便設計針對特定資料模型之定義域。特別是可將下列概念視為CDM 402之核心:1)一種實體型別可以是一應用程式設計者對一組內容與方法之規格,其中一實體為一實體型別之一種實體。可以理解,可透過繼承階層來組織一種實體型別可以是;2)一資料表是實體的一種集合,前述實體可以是其他實體之內容。利用實體、繼承、以及資料表,應用程式可遞迴地定義資料階層。資料表可以是強型別,因為一給定資料表可僅含有一特定型別之實體或其次型別;3)一資料表集合可以是一種內容為資料表之實體。這是利用資料表與實體定義之遞迴資料階層的基本案例。其基本上與一資料庫之概念相似;以及4) 可表達實體間之語意連接的一種關聯式。可以理解,可延伸關聯式以定義關聯、包含等。
一實體、關聯式、和/或資料表集合定義可發生在例如一結構描述之脈絡下。就本申請案之目的而言,結構描述之主要目的在於定義一命名空間以便決定結構描述中定義之元素的範圍。一資料表集合可形成CDM 402之「最頂層級」。可藉由建立一資料表集合直接和/或間接地分派該儲存。對於實體,下列虛擬碼闡明了一資料表集合的一種實施例:<Schema Namespace="MySchemas.MyLOB">
<TableSetType Name="LOBData">
<Property Name="Orders" Type="Table(Order)"/>
<Property Name="Customers"
Type="Table(Customer)"/>
<Property Name="Products" Type="Table(Product)"/>
<Property Name="Suppliers"
Type="Table(Supplier)"/>
<Property Name="PSLinks"
Type="Table(ProductSupplierLink)"/>
</TableSetType>
<TableSet Name="LOB" Type-"TableSetType"/>
</Schema>
一實體型別可具有內容以及與其相關之方法。對於指明內容、方法參數以及傳回數值之方法的型別,CDM 402提供了數種內建型別:1)簡單型別:Int32、字串、其他CLR值型別;2)列舉型別:與CLR列舉等價;3)參考型別(下文討論);以及4)陣列型別:經排列的行內型別之集合(下文討論)。可將這些內建型別之內容分類到一起以形成一行內型別,其中該行內型別可具有其他行內型別之成員。下文為上述一種實施例:<InlineType Name="Address">
<Property Name="Line1" Type="String"
Nullable="false">
<Length Maxiumum="100"/>
</Property>
<Property Name="Line2" Type="String"
Nullable="true">
<Length Maxiumum="100"/>
</Property>
<Property Name="City" Type="String"
Nullable="false">
<Length Maxiumum="50"/>
</Property>
<PropertyName="State" Type="String"
Nullable="false">
<Length Minimum="2" Maximum="2"/>
</Property>
<PropertyName="ZipCode" Type="String"
Nullable="false">
<Length Minimum="5" Maximum=="5"/>
</Property>
</InlineType>
可利用內建型別和/或行內型別來組建實體。舉例而言,下列虛擬碼可表示該實體:<EntityType Name="Customer" Key="CustomerId">
<PropertyName="CustomerId" Type="String"
Nullable="false">
<Length Minimum="10" Maximum="10"/>
</Property>
<PropertyName="Name" Type="String"
Nullable="false">
<Length Maximum="200"/>
</Property>
<Property Name="Addresses"
Type="Array(Address)">
<Occurs Minumum="1" Maximum="3"/>
</Property>
<NavigationProperty Name=="Orders"
Association="OrderCustomer"
FromRole="Customer"ToRole="Orders"/>
</EntityType> 可將實體(資料表集合除外)包含於一資料表中,其係至少部份因為資料表集合為最頂層級組織單位且一資料表集合係由資料表集合成。在一資料表範圍中,每一實體可具有一獨特的登錄值。在存放區大小之範圍中,每一實體可具有一種獨特的識別-其登錄值,可和其資料表之識別遞迴地串連。該實體可以是CDM 402中可供登錄值和/或識別參考之最小單元。儲存操作可以該實體為目標,其中該操作可以是,但不限於保存、儲存、移動、複製、刪除、重新命名、備份、回復等。可在包含實體的架構中利用行內型別實體。CDM 402可定義一抽象實體型別之概念,其本質上和CLR中之抽象類別相似。換句話說,無法將之直接例示;僅可藉由建立其他可例示型別而衍生之。
可將一實體參考定義成實體的一種永久性、持續性的參考。參考值包括實體識別。間接一實體會產生其參考;解參考一參考會產生實體實例。參考的主要目的在於啟用實體共享:舉例而言,來自相同客戶的所有訂單可具有實際上大致相同的Ref(Customer) 內容值,故而可指稱訂單實體共享該客戶實體(如,下列編碼樣本中的第六行編碼為一實施例)。
與CDM 402相關聯的資料具有其組成部份之間的關聯式。關聯模型化不會外顯地支援關聯式;PK/FK/參考完整性提供了可在一種有限方法中實作關聯式之工具。然而,CDM 402可利用關聯與組成來支援關聯式之外顯概念化模型化。闡明下列實施例以便了解關聯與組成之能力:
1. <EntityType Name="Order" Key="OrderId">
2. <Property Name="OrderId" Type="String" Nullable="false">
3. <Length Minimum"" 10" Maximum"" 10"/>
4. </Property>
5. <Property Name="Date" Type="DateTime" Nullable="false"/>
6. <Property Name="Customer" Type="Ref(Customer)"
7. Association="OrderCustomer"/>
8. <Property Name="Lines" Type="Table(OrderLine)"
9. Composition="OrderOrderLme"/>
10. <Property Name="ShippingAddress" Type="Address" Nullable@"false"/>
11. </EntityType>
12. <Association Name="OrderCustomer">
13. <End Role="OrderRole" Type="Order" Multiplicity="*"
14. Table="SalesData.Customers"/>
15. <End Role="CustomerRole" Type="Customer" Multiplicity="1"/>
16. <Reference FromRole="OrderRole" ToRole="CustomerRole" Property="Customer" />
17. </Association>
18. <CompositionName=="OrderOrderLine">
19. <ParentEnd Role="Order" Type="Order" Property="Lines"/>
20. <ChildEnd Role="OrderLine"Type="OrderLine" Multiplicity="100"/>
21. </Composition>
關聯可表示實體間之對等關聯式。在上述實施例中,一訂單係經由一關聯和一客戶相關。在上述編碼樣本中,第6行顯示該訂單有一種相關聯之客戶(其係由參考內容Customer 所指明)。在第12至15行中定義了該關聯之本質:其中指出OrderCustomer 關聯係由OrderCustomer (第15行);其亦指出對於每一Customer (第14行上之Multiplicity="1"),可以有多重Orders (第13行上之Multiplicity="*")。可將上文所述之關聯的型別稱為一種參考關聯
CDM 402可定義另兩種關聯之型別:值關聯 以及由關聯實體定義之關聯 。值關聯可經由任何內容而允許關聯式 之表示式,而非僅經由識別參考(如,經由平等條件和Contact.Name 相關聯之Document.Author 內容)。關聯實體可在當關聯式本身帶有某些資料(如,一公司以及一個人之間的僱用關係可能帶有如僱用時期或該個人在公司中之位階與頭銜等內容)時,允許關聯式之模型化。
組成可表示父子關聯式和/或包含關聯式。考慮訂單(Orders)與訂單行列(OrderLines)(如Order 為你在一網站中放入購物推車中之項目的總和;OrderLine 為該購物車中的每一種個別項目-一本書、一片DVD等)。每一訂單行列僅在一訂單之脈絡下才具有意義。該訂單行列不能獨立存在於包含其之訂單以外。換句話說,一訂單行列細胞含於一訂單之中,且其生命週期係由該訂單之生命週期所決定。
可利用組合來模型化上述關聯式。第8行顯示了一組合的一種實施例。Lines 內容以及訂單OrderLines 組合(第18至22行)表示一訂單可控制其行列,且該行列係依賴包含這些行列之訂單。可以理解,訂單為父而行列為子。組成與行內型別間的主要差異在於組成涉及了實體。換句話說,一OrderLine可能成為一參考之目標,而一行內型別則不可能出限於上述實施例中。
CDM 402與其關聯式之外顯模型化的優點之一在於其可對查詢提供中繼資料支援。亦可利用一上游查詢。對於實體,給定一客戶時,可藉由在CDM 402中實作一NavigationProperty 來調用所有訂單(而不須儲存外顯反 向指示)。在上文所列之編碼片段的第28行中顯示了前述優點,且將該片段複製於下。
28. <EntityType Name="Customer" Key="CustomerId">
29. <NavigationProperty Name="Orders" Association="OrderCustomer" FromRole="Customer" ToRole="Orders"/>
30. </EntityType
永續引擎408可包括物件關聯對映。換句話說,由CDP提供之模型化、存取、與查詢抽象化為以物件為基礎的。CDP所用的主要儲存科技是以關聯為基礎(如,SQL2000)。永續引擎408可利用物件關聯對映(亦可稱為「O-R對映」),其中永續引擎408可將語言類別對映至下方的表格式表示。
當考量O-R對映時,永續引擎408可提供兩種例子:1)規範性O-R對映;以及2)非規範性O-R對映。規範性O-R對映為CDP型別間之對映,其中可將其關聯表示編碼於CDP中。型別設計者在選擇下方資料表之佈局時,擁有很少和/或沒有彈性。其一種實施例可以是一種以資料庫為基礎之檔案儲存系統。非規範性O-R對映為程式開發者具有不同程度之彈性以選擇CLR類別如何對映至下方的儲存結構之處。可以考慮兩種次案例。1)將一既有關聯結構描述以物件之形式顯露。型別設計者可利用一種高層級 規格語言以設計CDM型別、利用工具以產生以其為基礎之類別、以及利用彈性以指明如將將該型別對映至資料表。當並行地部署CDP應用程式以及既有關聯應用程式時(意義上係指利用實質上相似的資料),會出現此種情形。舉例而言,一汽車公司的IT部門可擁有一LOB應用程式,其想在該程式中寫入一種利用相同資料的CDP應用程式(可能是作為一種按部就班之遷移策略的一部份)。但要求是LOB應用程式以及新的CDP應用程式兩者一起執行該相同資料。2)將一種類別之集合永續至一關聯結構描述中。程式開發者部會利用所產生之類別;反而是利用其自行設計之類別。開發者想要將這些類別對映至一種關聯結構描述。可以理解,有許多不同情形會產生此種要求。
CDP可更包括一程式設計介面(此處未顯示),可在設計時期利用之。可使得該程式設計介面可供一CDP應用程式設計者(們)和/或程式員使用。可將程式設計介面分類成三種一般區域:1)設計時期程式設計工具(如,使得型別設計者可撰寫CDM型別與其中之條件約束、自這些型別產生CLR類別、以及將表現方式加至型別之工具);2)API(如,可用於撰寫CDP應用程式之類別與方法);以及3)查詢(如,可用於查詢CDM物件例如實體實體之語言。這些程式設計介面的元件可協同操作以對下方的存放區資料提供一種強型別、以物件為基礎之抽象化。
CDP提供了一種宣告性共通結構描述定義語言(CSDL),其可與SQL之資料定義語言或C#類別定義類 比,以用於定義實體型別、實體資料表、實體型別間之關聯式、以及條件約束。有三種主要的設計時期元件。
1. API產生器。應用程式設計者設計CDM型別以及利用CSDL之關聯式,並利用一種稱為(發音為ay-pig)之設計時期CDP工具,該工具可產生對應於這些型別與關聯式之部份CLR類別。APIG產生之類別能夠以組件之形式供應用程式程式員使用,且可由其具有利用子句之C#的應用程式參考。APIG產生之類別在某種意義中為規範性類別;它們可以是一應用程式中之CDM型別的一種直接表示。在一種實施例中,可在應用程式類別之定義中考量該類別-例如,就實體而言,當應用程式利用來自一預寫之類別程式庫(圖形套件、數學套件等)的類別時。該應用程式可利用CDP之物件永續架構以便長時間保存並查詢存放區中這些類別之實體。可將此種物件稱為一般傳統物件、或POCO。CDP亦支援POCO案例。
2.物件關聯對映。CSDL之此種元件可幫助應用程式設計者宣告儲存概念如資料表與檢視以及CLR類別之間的具體、非規範性對映。其亦可指明如將一種以CDM 402定義之條件約束對映至一種SQL宣告性條件約束、一觸發或儲存之程序。
3.表現方式。CSDL使得應用程式設計者夠決定要將商業邏輯之何種部份實作成實體方法、靜態功能、儲存之程序。其亦可決定該邏輯可在哪一層執行(如,CDP運行時間vs.儲存)。
程式設計介面可更包括一CDP API,可將程式設計介面應用程式寫入其中。CDP API擁有三種次部份:
1.通用CDP資料存取。API之此種部份可顯露存放區、對話期、交易(如,StorageContext),查詢服務(如,StorageSearcher)、以及CRUD服務(如,SaveChanges)。
2. CDM資料類別。這是一組規範性、獨立於應用程式之類別,其可顯露CDM概念如實體、關聯式、延伸等。
3.定義域資料類別。這些是針對特定應用程式/架構之類別例如Contact、Message、PurchaseOrderes等符合CDM 402但可顯露針對特定定義域之內容與表現方式者。
CDM 402亦可定義一查詢語言CQL。CQL經設計可允許對和程式設計者正在操作之物件結構進行豐富查詢。下列有三種經確認可用於CQL形式之基礎的技術:
1. OPath:OPath語言係源自SQL與Xpath,且將之設計成XPath的一種CLR物件版本。此設計組建於路徑表示之式XPath概念之上,以便顯露一種將序列中之物件的內容解參考之方法。該設計係以一種簡單的原則為基礎:開發者期望將物件之集合視為一種物件導向API中的主要「結構」構件。OPath可以是可用於一以資料庫為基礎之檔案儲存系統之POR查詢形式。
2.物件SQL:此種策略可延伸SQL查詢語言使其可處理CDM物件之圖形與集合。視窗查詢語言(WinQL)是SQL之一種變形,其經設計可查詢並處理CLR物件之圖形,是SQL中需要之延伸的一種候選設計。
3. C#序列運算子:這是一組強型別、編譯時檢查查詢以及集合運算等C#延伸,其可套用至廣泛之暫時性的類別或CLR物件之持續集合(如,經由物件關聯對映)。
策略上,C#序列運算子方法對於作為可用於CQL之本架構有極大之意義。CQL為一種查詢語言。以物件操作之形式來執行建立、更新、刪除(新的、內容設值函式等)。永續引擎408中之O-R對映元件可將這些操作對映至SQL中之下方的DML操作。
下文將敘述CDM型別與程式設計介面間的一種關聯式。可在三種不同階層檢視CDM 402中之一種「型別」之概念:
1.結構描述空間:在一CDM結構描述中型別之描述。這些抽象型別在一種意義上,不會明確地在運行時間堆疊之任何元件中實體化(如,從應用程式一直到存放區)。
2.應用程式空間:將型別表示成CDP API中之CLR類別。在結構描述空間中之實體/行內型別以及應用程式空間中之資料類別間可以有一種一對一之相符。換句話說,CDM結構描述中之每一實體與行內型別可導致一種CLR類別。時常地,APIG可自動地產生這些類別;然而,在POCO的案例中,開發者可明確地指明CLR類別與結構描述空間中之型別間的一種對映。除了實體與行內型別之類別之外,應用程式空間亦可含有關聯式類別。
3.儲存空間:下方的存方區中之型別的永續格式。若 該存放區為一種關聯儲存,則這些型別為資料表/UDT/核心SQL型別。CDP之O-R對映元件可支援一對映結構描述,其允許將結構描述空間中之型別對映至儲存空間中之型別(如,可將購買訂單實體型別對映至SQL伺服器中之PurchaseOrderData表)。
CDP查詢語言可以應用程式空間為目標。其有意義之原因在於一開發者想要利用實質上和用於其他操作(如,物件與集合)相似的抽象化來進行查詢。然而,係利用CDM抽象化(結構描述空間)來描述CQL語意。
CDP亦可包括條件約束/安全性112。幾乎所有資料,當在其較大的語意脈絡中加以檢視時,後受到其型別之定義域在某些形式或其他形式中之限制。因而讓CDP提供一種方式以供型別與應用程式設計者可表示這些條件約束是非常重要的。在型別設計的時間,可利用CSDL以宣告性地撰寫條件約束。條件約束的實施例包括,但不限於:1)簡單型別條件約束,例如長度、精確度、尺度、預設、檢查;2)陣列型別條件約束,例如元素條件約束、發生、唯一、與檢查;以及3)內容條件約束等。
可由CDP條件約束引擎在運行時間實行這些條件約束可以是。須注意,當由下方的關聯存放區之層級來看時,服從CDM 402的此一動作意味著一組條件約束。舉例而言,CDM 402要求「每一實體具有一種落在其所含有之資料表的範圍中之獨特登錄值」。這會在存放區層級轉譯成一種獨特登錄值條件約束。此種條件約束還有數種其他實施 例。此處之重點在於CDP條件約束引擎實行了兩種條件約束之型別:即那些CDM 402所暗指者(以及符合CDM 402所需者)以及那些型別設計者所撰寫者。除了CSDL中撰寫之宣告性條件約束之外,亦可利用SQL伺服器所儲存之程序來撰寫條件約束。此種方法使得可表示比宣告性語言更複雜之條件約束。
更有甚者,條件約束/安全性112可提供一種安全性模型化,以控制對於CDP中實體之存取。用於CDP之安全性模型化必須滿足至少下列情形: 驗證:安全性模型可支援驗證作業系統使用者。這包括一定義域、工作群組或一離線用戶端電腦中之使用者。其亦可包括支援以NTLM與Kerberos為基礎之驗證。
授權:CDP安全性模型可至少在實體層級支援安全性之授權。其亦必須允許管理獨立之許可以用於實體之讀取與更新實體。至少,條件約束/安全性112規定將一實體之一種「內容」和/或一組內容視為一實體之安全性識別碼。由一種和資料表相關聯之一種功能來決定一實體之存取權,前述資料表係以該安全性識別碼作為一種參數。CDP亦應允許從可變更實體之其他部份的使用者中獨立地規定獨立地規定可變更該安全性識別碼之使用者。可以理解,CDP可支援一種更一般的以角色為基礎之模型,其亦允許對僅讀取與寫入有不同之許可。
CDP運行時間110可維護查詢結果(如,下文詳述之游標)與未認可之更新之一種快取414(如,一物件快取 414),其中可將此種快取稱為對話期快取因為其係依賴對話期,交易404。此外,當建立一對話期時其方可存在且當該對話期終止時其會消失。將CDP對話期裝入StorageContext物件中。一應用程式可實體化StorageContext之多重實體,因而可初始化多重對話期且因此初始化多重對話期快取。CDP亦可顯露另一種類型之快取,稱為外顯快取。該外顯快取提供了來自一或更多種查詢之資料的一種快取。一旦將資料實體化成為外顯快取,可提供下列資料一致性保證:1)唯讀、非非授權式;2)寫透、授權式;以及3)透過外來告知之自動更新。對外顯快取之程式化與查詢模型大致上可和儲存資料相似。
游標、規則410為允許在一時期處理自CQL傳回之該組資料實體的機制。一應用程式可僅藉由將整個結果集複製到記憶體中且在記憶體結構中將一層捲軸捲動模式覆蓋於其上以便在該結果集上建立一游標。但此種要求之無所不在以及某些時候牽涉到實作一游標(特別是當納入更新、編頁等)之複雜性代表任何資料平台皆應提供一種建立游標之模型。
CDP提供了僅向前以及可捲動之游標兩種。除了瀏覽與捲動的基本功能之外,CDP游標提供了下列功能:1)外來告知與維持;2)連同展開/收摺狀態之多重層級分類;以及3)動態排序與篩選(如,「處理後」)。可以發現並理解游標可能不是指明一結果集的一種不同機制;由查詢以及這些查詢上之游標來指明結果集。
CDP亦可包括商業邏輯裝載416。當多重應用程式在操作實質上相似之資料時,一主要要求是確保該資料保持可信-亦即保證該資料符合不同的驗證規則、商業規則、與任何其他檢查系統以及型別設計者和/或資料所有人建立之平衡。一種好的假設是,應用程式一般並非可信的。出於愚蠢、惡意、和/或單純地因為未預期使用模式造成之緊急事件,應用程式可儲存和/或嘗試儲存無效的結果。舉例而言,一使用者可輸入292作為郵遞區號,且應用程式可儲存此號碼,即便292是一種無效的區域號碼且因而在電話號碼欄位中的數值無法代表一電話號碼。換句話說,無法「信任」其為一種電話號碼。防止此一情形的一種常見的方法是建立一信任界限:某些宣告性規則/驗證碼/等等(如,通常稱為商業邏輯)在一獨立處理中執行且檢閱應用程式造成之變更以便「承認」此種變更者之某些主體一。之後,其可將這些變更儲存至存放區。許多時候,商業邏輯進行比一種檢閱與承認更多的動作;其亦可實行商業規則,引發工作流程之進行等。(如,當插入一新客戶時,應傳送電子郵件到信用檢查部門以確保信用之可信度)。
CDP提供了數種可用於撰寫商業邏輯(BL)之機制。可將這些機制分成下列五個類別:條件約束、事件處理常式、靜態/實體方法、可繫結表現方式、以及靜態服務方法,下文將更詳細討論上述五種方法。條件約束/安全性112,如上所述,可以是宣告性與程序性。可在存放區上接近該資料的區域執行這些條件約束。因此,可將條件約束112 視為落在信賴界限中。更有甚者,可由型別設計者撰寫該條件約束可以是。
商業邏輯裝載416可利用一事件處理常式。CDP API可在資料變更操作產生數種事件。BL作者可經由處理常式編碼連結至這些事件。舉例而言,考慮一種訂單管理應用程式。當進入一筆新訂單時,應用程式需要確保該訂單之值小於一針對該客戶所核准的一種信用額度。此邏輯可以是事件處理常式編碼之一部份,且其在係將訂單插入存放區前執行。
廣泛地說,可以有下列事件之型別:1)查驗(如,這些事件提供了一種機會可供相關人士檢查所提出之數值並查驗之);2)預先儲存(如,在將變更儲存至存放區之前產生此事件,且該事件可能大致上和一SQL伺服器中之「BEFORE」觸發程序的本意和表現方式相似);以及3)事後儲存(如,在將變更儲存至存放區之後產生此事件,且該事件可能大致上和一SQL伺服器中之AFTER觸發程序的本意和表現方式相似)。BL中之此種型別可在CDP中執行,且因而可在部署了CDP之任一層上執行。因此,當其在一用戶端層上執行時,其他應用程式可忽略之(如,其並未在信賴界限中執行時)。
更有甚者,商業邏輯裝載416可調用靜態/實體方法。針對CDM型別自動產生之類別為部份類別。一型別設計者可藉由在其上加入額外的方法以完成這些部份類別,通常以便實作對一特定型別或一組型別有意義之邏輯。考量 下列實施例:person.GetOnlineStatus( ) ,其中personPerson 型別之一種實體;emailAddr.IsValidAddress( ) ,其中emailAddrSMTPEmailAddress 型別之一種實體;等。根據其本質,此種BL並非可實行的;對於實體而言,係由應用程式來呼叫IsValidAddress( )以確保 有效性。其可在部署了CDP之任何層上執行。因此,當CDP在用戶端層上時,其不會在信賴界限中執行。
可繫結表現方式是一種編碼模式,其允許型別設計者建立可供第三者設計之延伸使用之外掛點。傳統的實施例式可用於一種電子郵件訊息之型別。不同電子郵件應用程式可在一特定電腦上執行。每一應用程式會想要使用該共通Message型別,但每一應用程式亦須自定SendMessage方法之表現方式。型別設計者可藉由定義可供SendMessage方法使用的一種基本表現方式,且允許第三者提供一指標給該實作,以達成前述目的。可繫結表現方式亦可在部署了CDP之任何層上執行。因此,當CDP位於用戶端層上時,可繫結表現方式不會在信賴界限中執行。
靜態服務方法為BL寫入且係部署於遠離用戶端層之中介層之上。換句話說,BL可以一種網路服務之形式在中介層上執行。舉例而言,考量一種行事曆管理服務,其可提供之服務如CreateAppointmen( )GetFreeBusy( ) 等。這些服務(「靜態服務方法」)係利用CDP來實作且該網路服務係部署於中介層上。用戶端層有一網路服務代理伺服器,應用程式可利用其以調用這些利用一頻道之服務(文 終將討論)。此種BL可在中介層上執行,且係位於信賴界限中。
可以理解,元件化之架構使得CDP能夠在某種程度上保持存放區之不可知性。CDP功能例如物件快取、游標、對話期、交易等可利用CDP層級抽象化。對映至下方的儲存抽象化會發生在O-R對映以及永續層中。藉由覆寫對映邏輯,可在不同存放區中實作CDP。
第5圖闡明在CDP之多種元件中的資料流。利用下列實施例來檢視不同元件在回應一應用程式500之呼叫(類似應用程式206與應用程式400)時的互動,可提供相關知識。
1. void AddToCart (String customerId, String productId)
2. {
3. using (OrderData od = new OrderData( ))
4. {
5. ShoppingCart cart = od.ShoppingCarts.Searcher.Filter(
6. "CustomerId={0}", customerId).GetFirst( );
7. if( cart == null)
8. throw new Exception("No shopping cart");
9. Product product = od.Products.Searcher.Filter(
10. "ProductId= {0}", productId).GetFirst( );
11. if(product == null) throw new Exception("Missing product);
12. cart.Products.Add(product);
13. od.SaveChanges( );
14. }
15. }
此實施例在一持續ShoppingCart中加入了一項目。舉例而言,可將此方法想像成調用處理一ASP.NET網頁之一部份。
第3行:建立儲存上下文。StorageContext係裝於由應用程式500建立之一種OrderData物件中。OrderData類別可代表在一CDM結構描述中所述之一種資料表集合型別。OrderData物件建立一種StorageContext物件,其經組態為和存放區202互動所必須之物件。StorageContext之初始碼可以是運行時間對話期與交易元件404之一部份,前述交易元件可開啟至存放區202之連線,且進行初始化一對話期與建立一交易內容所必須之工作。一安全性上下文係建立於條件約束/安全性元件112中。最後,API 108會將StorageContext之一種實體傳回至應用程式500。在2層的情形中,取得StorageContext會導致和存放區202間的連線。可以理解,在一種3層部署情形中之連線可能略有不同。
第5行:查詢。第5行之表示式的右邊為一種OPath查詢。永續與查詢引擎408可向一種開發初期之介面顯露 方法,以便取回以一CDM查詢為基礎之物件。CDM 402中之CDM實作可呼叫具有指定Opath之一種方法。永續與查詢引擎408可將該查詢對映至SQL中,並透過有線連接以一種TDS負載之形式傳送之。條件約束/安全性元件112可確保適當地套用了安全性且該應用程式/使用者僅可看到允許其瀏覽之資料。存放區可執行查詢,且將結果傳送回CDP運行時間110。CDM 402與持續/查詢引擎408可一起工作以便對應轉化來自TDS結果之物件,且可將這些物件置於物件快取414(如,對話期快取)中。結果是,API 108會將一ShoppingCart物件傳回至應用程式500。
第9行:查詢。此查詢或前一種查詢皆不會產生任何正在建立之游標(GetFirst( )方法本質上可套用至查詢之一種「top 1」子句)。然而,若該查詢需要建立一種游標,則游標/規則元件410可執行此操作。
第12行:更新。可利用指明之Product來更新物件快取414中之ShoppingCart物件。
第13行:清理變更。在OrderData物件上之SaveChanges( )的實作可呼叫封裝之StorageContext物件上的SaveChanges( )。StorageContext.SaveChanges( )是商業邏輯裝載元件416之一部份。這涉及了下列步驟。首先,執行預先儲存邏輯。之後,會執行查驗碼,接著進行事後儲存處理。可將查驗碼鉤入CDP API 108所定義之一種事件中。須注意在另一種實作中,可將查驗碼鉤進物件之設值函式中。接著,會執行預先儲存碼。將此編碼鉤進CDP API 108所定義之一種事件中。將變更寫入至存放區中。首先,裝載元件416和物件快取414一起作業以便取得一變更向量,其含有在此一儲存上下文中所做之所有變更。永續引擎408顯露一種稱為IPersist 之介面,其為一種開發初期介面且具有方法例如寫入(<changeVector >)等。裝載元件416自永續引擎408取得一Ipersist 且以該變更向量呼叫該Ipersist.Write( ) 。永續引擎408可將寫入要求對映至適當的SQL更新(不論是實際的更新陳述式或一種儲存之程序呼叫)中,且利用其以將變更寫入至存放區202。在此處理中,條件約束/安全性元件112可確保進行了適當的安全性實施。其亦可執行任何條件約束邏輯。最後,會執行事後儲存碼。將此編碼鉤進CDP API 108所定義之一種事件中。
須注意,執行商業邏輯可能導致變更快取414中之物件。可藉由對myStorageContext.SaveChanges( ) 進行呼叫而將這些變更保存於存放區202中,其可確保不會略過商業邏輯416。多重ISV(獨立支援廠商)可能會想在資料變更上執行邏輯,在此種情形中,其可將其處理常式鉤進該事件中且在CLR訂購之先進先出(FIFO,First In/First Out)中呼叫該處理常式。在此實施例中,商業邏輯416可裝載ISV查驗、預先儲存、以及事後儲存邏輯。
第6圖闡明可和CDP一起實作的不同架構。CDP是一種資料平台,其經設計可用於跨各種專門的垂直定義域中-例如使用者資料、LOB資料等。CDM可提供一種定義 域不可知的資料模型,其內容豐富到足以表示針對特定定義域之結構以及語意,但同時,其內容一般到足以在跨不同定義域中使用。多種CDP功能係以CDM為基礎,且因而可用於所有定義域之應用程式。
可將針對CDP所撰寫之所有應用程式的總和分成下類三種類別:
1.架構:一架構利用CPD提供之延伸性機制,以便針對一特定定義域自定該CDP。一架構可將數值加至具有型別特化與額外服務之CDP。然而,顯露給應用程式之程式設計模型為CDP程式設計模型;特別是,應用程式仍然使用資料類別、StorageContextStorageSearcher ,以及CQL。一種以資料庫為基礎之檔案儲存系統可以是在CDP上之一種針對使用者資料定義域自定之架構的實施例。
2.垂直平台:在CDP上之一種獨立層具有其本身之API、抽象化、與資料模型。其可隱藏CDP且顯露一種完全不同之程式設計模型化給應用程式。舉例而言,一種配合電子郵件使用之應用程式可利用CDP,但顯露Email Object Model給其使用者。
3.「常規」應用程式:就是一種應完成一組特定工作之CDP應用程式。其並未特化任何CDP型別、或顯露一程式設計模型、或使用任何架構或一垂直平台。
垂直平台與「常規」應用程式僅為編碼;其可隨心所欲運用CDP而沒有任何偏愛或偏見。架構則略有不同;因為其係在未向應用程式隱藏CDP之情形下將數值加到 CDP,他們可遵循下列規則:
1.架構資料模型和CDM相同,或是CDM的一種簡單、有完整文獻記錄之特化。其可定義新型別,但這些型別係由實體進行最終父型別化。
2.架構可在既有CDM型別和/或利用CSDL撰寫新條件約束之上定義額外條件約束。換句話說,必須利用可用於條件約束定義之CDM方法來表示該條件約束。
3.架構通常不會顯露其本身之查詢語言;即便其顯露了,其可能是除了CQL以外之架構而非取代CQL。
4.架構通常不會顯露其本身之程式設計模型;即便其顯露了,其可能是除了CDP API以外之模型而非取代CDP API。
5.架構在CDP上提供了額外之特化服務。這些服務可實作成CDP商業邏輯或額外之輔助類別與方法。
可以發現並理解,所有上述規則之本意在確保由一特定架構儲存至CDP中之資料可供所有應用程式存取,不論一應用程式是否利用此架構。
第6圖闡明在一CDP層602上之三種架構:一使用者應用程式架構(UAF)604(如,一種以資料庫為基礎之檔案儲存系統、WinFS等)、一協同架構608(例如WSS)、以及一商業架構610(BF)(如,一LOB架構)。屬於每一架構之資料以和該架構方塊相同之模式顯示。舉例而言,UAF 604具有之資料為一連絡人618以及一項目620;協同架構608具有之資料為文件資料庫622;以及BF 610具 有之資料為一訂單624。須注意,這些型別皆由實體626進行最終父型別化。
第6圖亦闡明了三種應用程式層中之應用程式:一連絡人管理應用程式612、一協同應用程式614(例如一電子郵件應用程式)、以及一客戶關聯式管理(CRM)應用程式616。連絡人管理應用程式612僅可利用來自UAF 604之資料;CRM應用程式616可利用來自UAF 604與BF 610兩者之資料;且協同應用程式614可利用來自前三種架構(如UAF 604、協同架構608、以及BF 610)之資料。
第7圖闡明一種以共用資料庫為基礎之檔案儲存系統情節,其允許多重應用程式共享資料。換句話說,第7圖闡明了利用一單一架構之多重應用程式。可利用一CDP元件與儲存元件702(第7圖中之CDP+存放區)以成為用於一作業系統之一種單一資料平台,其可供任何與所有所有應用程式利用。其優點(如上所述)為豐富模型化、資料透明性、以及資料共享。下文將更詳細描述這些優點。
CDM提供了一種彈性模型化環境,其可用於描述多種應用程式與情節所需之型別。舉例而言,使用者資料(如,文件、檔案、圖片、音樂...)、LOB資料(如Customers、Orders、Order Details、...)、PIM資料(如,連絡人、電子郵件、行事曆、工作...)皆可利用CDM模型化。此種豐富模型化橫跨了結構化、半結構化、與非結構化資料且亦涵蓋垂直定義域,這使得一種單一應用程式能夠和利用通用抽象化與查詢語言之不同種類的資料一起作業。換句 話說,可將CDP運用成一種存放區
可利用CDP作為一種可供所有應用程式運用之單一資料平台。更有甚者,利用CDP儲存之資料可供所有應用程式在其上作業(如,隨著安全性政策之不同)。考量下列情形:每一應用程式將資料儲存成一種除了該應用程式本身(如,儲存該資料者)之外其他應用程式無法理解之格式。以兩種情形為例:一電子郵件郵件夾之內容對所有其他應用程式皆為難以理解的,除了該電子郵件應用程式之外;一CRM應用程式具有一組複雜的結構描述,該程式將該結構描述覆蓋在資料表之上以建立抽象化例如Customer、Case等等-因此使得所有其他應用程式(如,除非該應用程式知道CRM應用程式所用之結構描述)無法理解一「Customer」之意義。
明顯地,在電子郵件應用程式中存有資料,其概念上和一CRM應用程式儲存之資料相似-一種實施例為連絡人資訊。就使用者而言,一連絡人為一連絡人為一連絡人;由這個角度出發,難以理解為何將相同之連絡人資訊儲存兩次,一次在CRM中而一次在電子郵件郵件夾中。此處之重點不僅在於重複儲存,而是所有其所意味之異例-使得要在兩個地方進行更新、接受刪除、以及確保在兩個地方皆進行插入等等。考量當電子郵件應用程式與CRM應用程式兩者皆建立於CDP存放區702之上時,會發生何種情形。利用CDM,可由實體型別衍生連絡人型別,且其結構對電子郵件應用程式CRM應用程式兩者皆為透明的。 因此,只要該兩種應用程式同意對一型別之結構描述有共識,不同應用程式可在未察覺對方存在的情形下利用另一方之資料。因為CDP提供了一種共通查詢模型,CRM應用程式(舉例而言)可查詢連絡人資料不論一特定連絡人實體是否「屬於」該應用程式。
豐富模型化、資料透明性以及平台架構架構之組合可啟用許多涉及多重應用程式與架構之共享/互通性情節。可以理解,共享係指只要資料儲存於CDP中,一應用程式便可利用該資料,不論係由何種應用程式儲存該資料和/或利用何種架構來儲存之。
特別是,第7圖闡明一共通UAF情節,多重應用程式在該處共享資料,在此案例中,資料為衍生自項目706的一組UAF型別。CDP與存放區702可包括和一UAF架構704相關之一組UAF型別。該組UAF型別可衍生自一項目706,其中該組可包括一電子郵件708、一文件710、以及一連絡人712。可更進一步理解,項目706係衍生自一實體714。可配合CDP與UAF架構704來利用多種應用程式,例如,但不限於一電子郵件應用程式716、一豐富evite用戶端718、以及一計畫M 720。可以發現並了解,對於應用程式、CDP、UAF所處之層並未設有限制。對於實體,第7圖中之一種應用程式可在中介層中進行和/或執行(如,一協同應用程式)。
第8圖闡明運用根據CDP與相關聯架構之多重架構的一種單一應用程式。CDP與存放區702可提供一種用於一 作業系統之單一資料平台,且其可供所有應用程式運用。一可初步寫在一LOB架構804上之CRM應用程式802可利用與一UAF架構808相關聯之連絡簿資料806。可以理解,CRM應用程式802通常可利用與其相關聯之資料,但不限於,一訂單詳細資料814、以及一購買訂單816。當利用UAF資料(如,連絡人資料806、一項目810、一實體812等)時,CRM應用程式802可利用CDP層級抽象化。換句話說,CRM應用程式802不須利用UAF架構808方法。更有甚者,可以發現並了解CRM應用程式802可位於任何層上。
第9圖闡明CDP和與多種不同架構相關聯之多重應用程式共享資料。第9圖描述了在一CDP 902上之三種架構,一UAF架構904、一協同架構908、以及一BF架構910。多種應用程式可利用架構層級與CDP層級程式化之一種組合。特別是,一連絡人管理應用程式912、一協同合作應用程式914、以及一CRM應用程式916可利用架構層級與CDP層級程式化之一種組合。CDP 902提供了和多種不同架構相關聯之多種應用程式,以便共享一存放區928中之資料。
明確地說,有許多方法可供多種應用程式和資料互動。連絡人管理應用程式912可利用CQL以查詢一連絡人918;其可利用UAF 904方法例如項目層級移動、複製、contact.GetBestEAddress( )等。連絡人管理應用程式912更可利用核心CDP運行時間類別例如但不限於,StorageContextStorageSearcher -以及CDP資料類別(如,連絡人類別與相關聯之取值函式與設值函式)。
協同應用程式914可利用CQL以查詢連絡人918、文件資料庫922中之任何文件、以及甚或可查詢一訂單924。協同應用程式914進行此種查詢時,不須知道UAF 904和/或BF 910之存在-可以單純地在可以是CDP層級完成而不須利用任何由其他架構撰寫之特別編碼。其可利用針對特定協同架構908之操作以處理文件資料庫922,例如AddDocumentToDocLib( <document >, <docLib >) 等。協同應用程式914更可利用CDP層級類別例如StorageContextStorageSearcherContactOrderDocLibrary 、以及相關聯之設值函式與取值函式。
CRM應用程式916可利用CQL以查詢一特定連絡人之所有訂單。可以理解,CRM應用程式916可在完全不知道連絡人實際上係利用UAP 904建立之情形下進行查詢。其可利用BF 910(如,FindShipStatus (<order >))之方法與服務來處理Orders。其更可利用CDP層級類別例如StorageContext,StorageSearcherContactOrder 、以及相關聯之設值函式與取值函式。
當和非CDP存放區共享時,重要的是須注意CDP並未利用一提供者模型,因此任意資料來源能夠以CDP存放區之形式呈現。當一CDP/架構應用程式想和一非CDP存放區中之資料一起作業時,其可利用兩點:1)利用同步配接器架構(此乃UAF之一部份)以便將本資料同步化至 CDP存放區中;以及2)建立自訂邏輯以便和非CDP存放區整合。
第10圖闡明CDP的一種雙層部署。組成CDP之多種元件在概念上為可移動的。在某些限制下,可跨不同處理與電腦界限部署之,而產生2層、3層、以及N層(其中N為大於或等於1的整數)組態。可以發現並了解,雖然此處闡明了一種2層部署,本發明並不受其限制且可利用任何層數之組態。
特別是,一CDP API 1002與一CDP運行時間1004皆可在和一應用程式1006相關聯之應用程式處理中。因此,CDP元件(如,CDP運行時間1004、API 1002、以及一條件約束/安全性1008)可存在於多種層中。對於實體,API 1002、CDP運行時間1004、與應用程式1006可存在於一用戶端層1010中,其中存在於其中之元件可在其本身之處理/電腦界限中存在。此外,一存放區1012與條件約束/安全性1008可存在於一伺服器層1014中,其中存在於其中之元件可在其本身個別之處理/電腦界限中存在。可以理解,可將條件約束/安全性1008裝載於儲存處理中,而該CDP元件之其餘部份可位於用戶端處理中。這是為何可將CDP元件視為可移動的一種主要實施例。
第11圖闡明根據本發明之一種態樣,具有共享之資料的一種雙層部署。下文所討論的第一種組態是當多重應用程式共享相同之資料。這不是說該應用程式必須共享該資料;而是指出任何應用程式之資料可供其他應用程式使 用。亦須注意,資料之可用性係存在於應用程式之內容中,而非使用者種-因此這和使用者認證之概念不同。CDP運行時間之條件約束/安全性模組可執行之,不論該應用程式為何。
一應用程式可和一API與一CDP運行時間互動,其中不同應用程式可和每一種個別元件一起存在,使得每一應用程式、API、與CDP運行時間可具有其本身之電腦/處理界限,此處以界限1102、界限1104、與界限1006闡明之。未達簡潔之目的,闡明了三種應用程式(如,應用程式1、應用程式2、與應用程式3),然而可以理解可利用任何數目之應用程式。應用程式可存取在其本身之處理/電腦界限1112中之一存放區1110中的一種共享資料1108。可以理解,在此種不同應用程式間之資料共享的過程中會實行條件約束/安全性1114。
在許多使用者情節中,此種組態非常重要;舉例而言,這是結構描述化之使用者資料的以資料庫為基礎之檔案儲存遠見之基石,ISV可利用其以建立智慧型、資料關連應用程式。計畫M可依賴其以完成該計畫作為所有使用者資料之一種通用工作介面的遠見。這是CDP支援的基本組態。
第12圖闡明一第二種組態,即一應用程式具有其不想讓其他應用程式看見和/或利用之私用資料。換句話說,有一種涉及私用資料之雙層部署。有許多使用者與ISV情節會需要應用程式私用資料之概念。對於實體,若一應用程 式決定將其組態資料(如,ini檔案等價物)儲存於一種以資料庫為基礎之檔案儲存系統中,其較理想的情形是該檔案屬於該應用程式私用之檔案。在許多時候,會需要部份的隱私權-允許讀取、但不允許寫入。對於實體,在一電子郵件應用程式中,較佳的情形是,顯示一郵件夾,但會將更改該郵件夾之權力保留給其本身。
在一種2層部署中,CDP對此組態僅有有限之支援。對於SQL伺服器存放區中之應用程式層級安全性,並無合理的支援;因此,在預防資料存取之嚴格的意義中,一資料之片段可能不會被標記成屬於一特定應用程式私用的。然而,可在下列方法中部份支援此種情形:
●應用程式利用其本身之型別,且將其型別放在一獨立命名空間中,並針對由那些型別產生之資料類別建立私用組件。由於所有CDP層級皆係透過這些組件來存取屬於此結構描述之實體資料,其他應用程式不能存取相對應之類別。
●應用程式建立其本身之私用CDP存放區(如,對於在CPD中之一組實體,可在其上建立一StorageContext ),該存放區之名稱未對其他應用程式公開。
●經由利用文件。
可以理解,應用程式可選擇上述方法之部份或全部,以擁有私用資料。
可以發現,CDP架構本身可能不會產生實作私用資料 之一種私用資料的真實概念的阻礙。也因此可預料當應用程式層級安全性在下方的平台中成為可用時,CDP可輕易地顯露之。亦須注意,在許多情形中,「私用資料要求」之產封並非因為對於限制可見性有一真切的需求,而是因為需要實行針資料上之商業邏輯特定之應用程式。對於實體,一電子郵件應用程式建立之本機郵件夾具有一行事曆資料夾;其規則為僅可將行事曆項目置於此資料夾中。只要實行此一規則,電子郵件應用程式可能不會在乎另一種應用程式(例如一不同廠牌之電子郵件應用程式)是否可看見/更改其郵件夾。只要所有應用程式係來自CDP層,CDP架構可提供所有商業邏輯之實施。可以理解,在3層部署中可支援私用應用程式資料,因為中介層可實施此規則。
繼續參照第12圖,闡明了一電腦/處理界限1202,其具有一應用程式能和一API與一CDP運行時間互動,以及一電腦/處理界限1204,其具有一應用程式能和一API與一CDP運行時間互動。為求簡潔,僅闡明兩種應用程式,但可以理解,任何數目之應用程式皆可存取其本身之電腦/處理界限1208中之一存放區1206中的共享資料1210和/或存取個別私用資料(如,應用程式1、私用資料1210;以及應用程式2、私用資料1212)。
第13圖闡明一第三種組態,其中另一種應用程式可直接存取該存放區。換句話說,有一種具有一直接存放區存取之雙層部署。在一電腦/處理界限1302中之一種應用程 式2可直接存取SQL存放區1306,舉例而言,或許是經由ADO.NET、或另一種資料存取API。舉例而言,擁有既有SQL應用程式之大型資訊科技(IT,Information Technology)商家不態可能將之移除並全體移動至一種以CDP為基礎之應用程式。反之,以逐一移動之基礎將之移動到CDP則是可實行的。由於在一種生產製造環境中,零停工期以及穩定性為主要議題,很可能讓CDP應用程式可繼續和SQL應用程式共濃執行一段時間。由於CDP提供了彈性、非規範性之O-R(物件至關係)對映,可在既有結構描述上套用CDP應用程式。CDP架構本質上允許直接SQL存取。這是因為「應用程式1資料」僅為一組資料表,且沒有任何事物能阻止應用程式2直接存取之,只要其具有適當的許可。
須注意,應用程式2之下列影響:
1)期可能不具有對CDP服務(或在CDP上之一架構所建立之任何服務)之存取。
2)明確地說,其不具有CDM之優點-因而其必須在此層級釐清該表格式表示並直接發出查詢/更新。
須注意,應用程式1之下列影響:
1)應用程式2能夠有效地略過BL服務(們)中之商業邏輯。
2)某些條件約束-如,應用程式2亦會略過那些並未實作成觸發程序/DRI(宣告性參考完整性)者。
在此種特定部署中,確保應用程式2擁有其本身之邏 輯以實施條件約束等進而使正確的事情能發生,是應用程式設計者和/或部署管理員之責任。
第14圖與第15圖闡明CDP元件之一種三層部署組態。可將多種CDP元件部署於一種3層組態中。在此組態中,CDP運行時間1402出現在用戶端層與中介層(第15圖中所示)兩者上。應用程式位於用戶端層上,且一存放區1404位於伺服器層(第15圖中所示)上。應用程式邏輯可關聯至第14與15圖中之兩種用戶:第一種為一用戶端1406。第二種為一網路服務代理伺服器1408、一網路服務1410(見第15圖)、與商業邏輯裝載1412(見第15圖)(如,查驗、預先儲存邏輯、與事後儲存邏輯)。雖然用戶端1406是一種應用程式且因而可合理地將其中所包含之邏輯稱為「應用程式邏輯」,這並非此處所用於指稱的。反之,此處係指稱網路服務代理伺服器1408、網路服務1410、以及商業邏輯裝載1412中所包含之邏輯。這是由ISV撰寫之編碼,且應將之部署於中介層上;因此,在一種非常真實的意義中,此乃一種中介層「應用程式」。應用程式邏輯可位於用戶端與中介層兩者上。隨著應用程式邏輯執行之所在的不同,存有多種如下所述之可能情節。
在考慮可能情節之前,可以理解,多層部署之議題和應用程式動作如何跨層執行遠端服務之方法密切相關。遠端服務一詞可包括下列三種一般方法,以便跨層進行應用程式層級或CDP-服務層級操作之遠端服務:
1.透過網路服之應用程式層級遠端服務:在此種情節 中,應用程式邏輯會位在中介層上,且以遠端靜態方法之形式顯露給用戶端。下文將詳細討論之。
2.內隱CDP服務呼叫遠端服務:將CDP API呼叫例如FindAll( )FindOne( )SaveChanges( ) 經由遠端服務代理程式與遠端服務元件隱藏式地傳送至中介層。此外,在下文中將有描述此服務如何運作之實施例。
3.外顯、離線遠端服務:CDP API可定義一程式設計樣式,其中應用程式明確地定義何時應進行跨層操作。若此操作導致資料取回,則將取回之資料快取於用戶端層上。此種樣式通常稱為「離線模式」(討論如下)。
特別是,第14圖與第15圖闡明了在中介層(如,一網路服務)上執行之應用程式邏輯。中介層部署之主要情節是,當應用程式邏輯僅專門在中介層中執行時;用戶端1406可經由一網路服務機制(如,網路服務代理伺服器1408與網路服務1410)調用此邏輯。可以理解,可將伺服器層上之安全性引擎裝載於中介層CDP處理中。在一種2層部署中,CDP呼叫係由用戶端處理中之CDP運行時間1402來處理;運行時間可於必要時連絡該伺服器。在一種3層部署中,某些CDP呼叫係在本機處理(經由用戶端層)且某些係在遠端處理(經由中介層)。更有甚者,還有其他可以在前述兩種地方中處理。一種3層部署可定義對適當呼叫進行遠端服務之一種方法。
用戶端層上之一種遠端服務代理程式1414為一元件其可利用一頻道(如Indigo)以封裝並傳送要求至中介層 上之CDP(此乃一遠端程序呼叫之實際動作)。在該中介層上有一遠端服務1416(見第15圖)其可適當地服務這些要求。此種樣式為一般通稱為服務導向架構(SOA)之一部份,SOA的特點之一在於不同層可藉由間換訊息和其他層進行通訊。CDP可利用Indigo架構以達到此一目的。
遠端服務提供了一組資料導向服務-例如「執行一查詢」、「插入」、「刪除」、「更新」、「建立」、「儲存」、「在給定登錄值之下取得一Object」、「取得根登錄值」。與SOA範例一致,這些操作可以是一SOAP訊息中之動詞。可利用這些簡單的動詞,來表示用戶端層想在中介層上執行之任何動作。利用Indigo提供之功能可在2介面上將這些基本的訊息動詞抽象化成為方法;事實上,這些就是上文討論之IPersistIQuery 介面。因此,遠端服務代理程式1414與遠端服務1416一起可作為一Indigo頻道上之端點,以使得IPersistIQuery 介面之方法可提供遠端服務。可以發現並了解,IqueryIPersist 中之方法在下列意義中為「粗糙的」:可利用其來查詢一大組物件或在其上作業。舉例而言:當回應SaveChanges( ) 方法時,遠端服務代理程式1414會發出一次Ipersist.Write( ) 至整組以更動物件中之遠端服務1416。因此,用戶端與中介層之間的介面為大量導向且非chatty。
下列虛擬碼實施例可用於檢視當回應方法呼叫時,跨第14圖與第15圖中所示之不同模組的資料/控制流程。可以發現並了解下文僅為一種實施例,且本架構不受其限制。
1. WinFSData wd = new WinFSData(@"\\CorpSvr01\SharedSchedule\AnilNori"))
2. ScheduleEntry s = wd.Items.FilterByType<ScheduleEntry>( ).Filter("StartTim e>@0", new DateTime(xxxx, 10, 29, 9, 0, 0)).GetFirst( );
3. s.DisplayName = s.DisplayName + "[important, please come!]";
4. ScheduleService ss = new ScheduleService(wd); /*public bool CreateAppointment(ScheduleEntry appointment, * string path)*/
5. if(ss.CreateAppointment(s, @"\\CorpSvr01\SharedSchedule \PCelis"))
6. {
7. Console.WriteLine("Appointment created!");
8. }
在此實施例中,應用程式可在企業內部網路查詢Anil Nori的共享之行事曆,以便取得他10月29日xxxx上午九點之行事曆項目。這是由ScheduleEntry物件來表示,這是一種由實體衍生之型別(如,ScheduleEntry為PIM結構描述之一部份且可表示使用者之行程中的一種項目)。其可修改ScheduleEntry-將文字"[important,please come!]" 加到該約定之標題。其之後可調用在一網路服務(稱為ScheduleService)上之CreateAppointment方法,以便將此種修改過之ScheduleEntry放入Pedro Celis之共享行事曆。此種編碼片段闡明了一種3層部署中的數個關鍵點:
1.用戶端使用本機CDP運行時間以查詢存放區實體。該查詢係在中介層上執行。
2.查詢結果係位於用戶端層CDP之對話期快取中。
整個「應用程式邏輯」-包括商業邏輯、查驗等-係由網路服務與CDP之BL裝載引擎在中介層上執行。由對CreateAppointment( )方法之一種呼叫來觸發此處理。下文為對不同資料模組間/跨模組之資料流的檢視。
第1行:建立一StorageContext。由一資料物件封裝一StorageContext物件(如,用戶端層上之API 1418),其係由應用程式和/或用戶端1406所建立。資料類別可表示於一CDM結構描述中描述的一種資料表集合型別。該資料物件可建立一StorageContext物件,該物件組態成和存放區1404互動所必需的。StorageContext之初始碼是用戶端層上之一種CDP運行時間1402之一部份。
第2行:查詢。第2行中之表示式的RHS為一種OPath查詢。此種查詢可傳回最多一種ScheduleEntry物件-在2004年10月29日上午9點的第一個項目(如,假設存在對「第一個項目」之精確定義)。用戶端層上之CDP運行時間1402可取得遠端服務代理程式1414上之IQuery 介面並呼叫其上之ExecuteQuery( <Opath >) 。遠端服務代理程 式1414可利用一Indigo頻道並傳送此查詢至中介層上之遠端服務1416。以和在兩層之情形相同之方式對映並執行該查詢,且將結果傳送回用戶端層。此處有兩種可能性:
1.將未經處理TDS結果在未對應轉化該物件之情形下由中介層傳回至用戶端層。之後用戶端層上之CDP運行時間1402可對應轉化該物件。
2.若這些物件已經存在於物件快取414中,將已對應轉化之物件傳回至該用戶端層。可以理解,整個OPath查詢會在Indigo頻道上傳送。舉例而言,若該查詢為一種「找出型別為ScheduleEntry之所有物件」(即,一種FindAll( )方法調用),則會將這整個查詢傳送至一種SOAP訊息之中(位在中介層上的遠端服務1416)-而非對每一物件傳送一種訊息。
第3行:管理用戶端層物件快取。一旦將ScheduleEntry物件傳回至用戶端層,其可供用於用戶端層上之CDP運行時間1402的對話期快取中之進一步管理。當用戶端1406變更ScheduleEntry物件之DisplayName 內容時,這完全是由用戶端層上之CDP運行時間1402處理之。
第4行:新建用戶端層上之一種網路服務代理伺服器。假設中,在設計的過程中,用戶端1406已經將一參考加到適當的網路服務(或Indigo中之等價物)。第4行可在用戶端上建立網路服務代理伺服器物件之一種實體。此呼叫服務完全由網路服務代理伺服器1408來提供。
第5行:呼叫網路服務方法。CreateAppointment( )是中介層上之網路服務1410用於提供遠端服務的方法之一。此種方法會使用一ScheduleEntry物件以及一CDP連結字串;其會使用此種資訊以建立在該連結字串所定義之一種StorageContext中的一ScheduleEntry物件。在此種寫入操作的本質中,會執行適當的商業邏輯與查驗邏輯。此種方法係由網路服務代理伺服器1408所封裝,且經由透過Indigo頻道之一種SOAP訊息傳送至中介層上之網路服務1410。網路服務1410可經由呼叫中介層上之一種CDPAPI 1420就如同其為任何其他應用程式一般,來實作此方法。此處須注意的主要事項為,CreateAppointment( ) 之整個邏輯係在中介層上執行。
第16圖與第17圖闡明在用戶端層與中介層兩者上執行之應用程式邏輯的一種圖示。可利用一實施例,更詳細描述經由不同元件與層來回映方法呼叫之資料/控制流程。下列實施例與上文討論之實施例類似。
1. void AddToCart (String customerId, String productId)
2. {
3. using (OrderData od = new OrderData( ))
4. {
5. ShoppingCart cart = od.ShoppingCarts.Searcher.Filter(
6. "CustomerId={0}", customerID).GetFirst( );
7. if(cart = null)
8. throw new Exception("No shopping cart");
9. Product product = od.Products. Searcher.Filter(
10. "ProductId={0}", productId).GetFirstQ;
11. if(product==null) throw new Exception("Missing product);
12. cart.Products.Add(product);
13. od.SaveChanges( );
14. }
15.}
16.
如同由前述實施例中可發現,第3行建立了儲存上下文,第5行與第9行關聯至查詢,且第12行關聯至更新。
第13行:清理變更。考慮下列兩種可能性:
1. BL在用戶端層與中介層兩者之上執行:在此種情形中,用戶端層上之商業邏輯裝載416會以IPersist.Write( <change vector >) 執行查驗與預先儲存邏輯並呼叫用戶端層上之遠端服務代理程式1414。遠端服務代理程式1414將該呼叫傳送至中介層上之遠端服務1416(如第17圖中可見)。遠端服務1416可更動中介層上之物件快取414並呼叫SaveChanges( ) 。這會如上文所述執行BL與永續步驟,並傳回至遠端服務1416,其中遠端服務1416之後會傳回至用戶端層上之遠端服務代理程式1414,其接著會傳回至商業邏輯裝載416,用戶端方面之事後儲存邏輯可能 不會由商業邏輯裝載416執行。
2. BL僅在中介層上執行。在此種情形中,商業邏輯裝載416立刻將呼叫傳送至遠端服務代理程式1414,其接著將之傳送至遠端服務1416。處理會如上所述在中介層上進行。
在兩種層上執行BL的好處之一在於當與預先儲存邏輯之查驗中出現錯誤時,可將其保持在用戶端層上而不須經歷連線之中介層之成本。
提供一種無接縫的離線經驗是以資料庫為基礎之檔案儲存系統的目標之一。這可能需要一種本機存放區1602,其可將資料和遠端存放區同步化。本機存放區1602可更包括條件約束/安全性1604。在此種情形中,本機存放區1602係位於大致上相似之電腦上,但位於一不同處理(此處在我們的定義中仍為一種2層部署)中。由於用於3層與2層部署之程式設計模型化為對稱的,一種如此進行同步化之服務能夠輕易地在本機存放區1602與中介層之間作業並保持資料之同步化。
考慮上述編碼實施例之第2行。該查詢造成一種跨層操作。在此種特定實施例中,會傳回一種物件(ScheduleEntry物件)。然而一般而言,這可有可能傳回一種非常大的結果集。相似的論點亦可套用至先前提出之編碼實施例的第5行。此住可考慮兩種議題,且這在一種3層部署中亦然:
●跨層之代價可能非常昂貴且因而無法內隱地進 行:在第2行中並沒有明顯指出這會導致一種跨層之操作-換句話說,發生了「魔術」。「魔術」用在此處係指應用程式不知道或沒有能力控制某件事情之發生。在許多時候,魔術是好的;事實上,許多軟體的目標就是隱藏應用程式背後的複雜性且讓事情好像變魔術般地進行。然而,在此種特定情形中,長久的經驗顯示應用程式撰寫者隨意地傳送大量查詢,並假設其下之編碼會在不累垮網路或累壞伺服器之情形下設法傳回一大堆資料。使任何跨層魔術外顯給該應用程式是一種經證明之設計範例,因此可鼓勵經深思熟慮之編碼行為(is“select * needed from<million-row-table>”,或可能可以利用一種WHERE子句)。
●用戶端方面之快取與無狀態操作:雖然試圖進行深思熟慮的編碼,仍會出現當應用程式需要和一種(可能很大之)資料組一起作業之情形;多數情形中,其知道該資料組為何。為了最佳化此種情形中之資料存取,應用程式應該具有執行該查詢、取回該(可能很大之)資料組以及將之裝載於本機快取中之能力。此外,可對該資料之本機複本進行查詢/排序/篩選/變更。最後,一清理操作可將該變更寫入回存放區中。在本機快取上作業代表中介層僅需維護非常少(或沒有)之狀 態,因此使其更能進行縮放。
解決方案為提供一種外顯離線模型。其可由下列式樣來描述:
1.應用程式以下列方式實體化一本機快取:LocalContext lc=new LocalContext( );
2.本機快取會包含一或更多種查詢之結果,將其指明如下:lc.QueryCollection.Add(“<query1>”); lc.QueryCollection.Add(“<query2>”); // etc.
3.應用程式「填入」本機內容lc.Fill( )
4.其可在本機內容上作業,如同其可對任何儲存上下文之作業。舉例而言:ScheduleEntry s = lc.Enties.FilterByType<ScheduleEntry>( ).Filter( “StartTime>@0”, new DateTime( 2004, 10, 29, 9, 0, 0)).GetFirst( ); s.DisplayName = s.DisplayName + “[important, please come!]”;
5.最後,其將變更全體傳送至存放區,並指明如下:// sc is the StorageContext lc.SaveChanges(sc);
注意當應用程式想讓一跨層操作發生時其可如何外顯-於步驟3中之lc.Fill( ) -使得無知的編碼不會觸發魔術。亦須注意,所有後續操作可發生在本機快取上,且因而可最少化跨層(連同伴隨之對中介層狀態之維護)。可以理解,上述編碼片段所套用之模型化和ADO.NET中之資料組模型化非常相似。CDP亦可提供一種離線模型。
一種2層應用程式不應該部署於一種3層環境中,出非下列為真:(a)其僅利用該離線程式設計模型化;或(b)其被覆寫而使用該離線程式設計模型。
CDP採用允許3層部署中之連線與離線程式設計模型化兩者的方法。會給予應用程式一種方針,若「它們期待被部署於一種3層環境中,之後它們應該利用該離線快取」。
為了建立下列討論CDP存放區之段落的內容,我們注意到所有SQL伺服器資料之整體被分割於下列4層級之階層中:實體、資料庫、結構描述、與資料表。可連線單元為一種實體;一資料庫是一種容器可在其中定義備份、還原、與複製。一資料庫與一結構描述之組合提供了可用於查詢之內容。CDP可利用一種3層級之階層:儲存、結構描述、與型別。一CDP存放區為可連線單元;一結構描述提供可用於查詢之內容。可由多重CDP存放區來裝載一特定結構描述(如,一組(CRM結構描述)型別可部署於CDP之兩種不同實體上)。若想要有「共同之處」,則應利用CDP之外的機制(複製、大量複製)。一特定CDP存放 區可擁有多重結構描述部署於其上-例如一種HR結構描述、Accounting結構描述等。
此處將討論命名與發現。考量下列編碼之第3行,上文所述。
Using (StorageContext sc = new StorageContext(@\\corp001\defaultstore))
下文討論一CDP存放區之命名以及可用存放區之發現。更清楚地定義一種CDP存放區。有兩種可能性:
1.這是實際、實體存放區-一實際伺服器上之資料庫。
2.這是邏輯存放區-組建子的引數可識別實際實體之一種邏輯容器。在現實中,可將之部署成複製之實體存放區的一種農場,且一種前端伺服器可和一負載平衡器一起作業以選出形成用於此一特定對話期之內容的實際存放區。
在CDP模型中,一儲存上下文可識別一邏輯存放區,而非一實體存放區。CDP不會指明複製、備份/復原機制如何在實體存放區所在之層作業。
關於一組建子引述之一種格式,連結字串為一種統一資源識別碼,或URI。個別架構可定義一替代性命名格式,以供其應用程式使用。舉例而言,UAF可藉由指明一UNC名稱(如,\\server\share),而選擇讓其應用程式建立一儲存上下文。然而,應該永遠能夠由一URI連線至一CDP .放區;換句話說,一架構所使用之任何替代性命名必須擁有一種對於相對應之CDP層級URI的完善定義之對映。
CDP並未指明如何能發現存放區。我們期待應用程式可利用既有機制與方法(例如UDDI)以達成此一目的。此外,一架構可指明其本身可用於發現之方法。
在本部份中,描述了應用程式可利用之額外的CDP服務。這些服務包括:
●監看/告知服務
●同步化服務
●外顯快取服務
●公用程式操作
應將本段視為說明性的而非架構性的。
監看/告知服務。告知(亦稱為監看)提供了一種能力,可將變更的非同步告知送到保存於下方存放區中之實體(資料)。一應用程式(或任何其他元件)可利用此服務來監看保存之實體中的變更。一應用程式對於其所監看者以及其想被告知的頻率有完全的控制權。舉例而言,可利用監看來建立豐富應用程式檢視(RAV)告知;一用戶端方面之瀏覽程式可利用RAV以主動地和利用這些告知之資料變更進行反應。
CDP程式設計模型化支援一監看類別,其能夠監看實體中之變更。實體監看機制足以讓架構與應用程式組建較高層級之監看抽象化。舉例而言,一種以資料庫為基礎之檔案儲存系統可在實體監看抽象化上組建Item、 ItemExtension、以及Link監看抽象化(如,須注意一實體為可供監看之最小片段的資料)。
同步化服務。寫入至CDP之應用程式以及其上之架構可由下述與同步化有關之服務中獲利:
1)用於變更追蹤之結構描述附註。結構描述設計者可指定其實體型別之變更單元界限。變更單元規格可控制變更追蹤服務之功用。
2)變更追蹤。大多數對應用程式為不可見的,其可在所有CDP操作中維護變更單元之版本,以及重要操作例如實體刪除之日誌。即便既有應用程式持續繞過CDP運行時間而進行變更時,變更追蹤亦能正確作用。
3)變更列舉類型。允許一CDP應用程式取回自從某些浮水印後已被修改之該組實體與其變更單元。將變更以CDP之實體與RowSets之形式傳回。當面對錯誤、備份與回復、以及複雜同步化拓樸結構時,提供一組服務給浮水印維護。
4)衝突偵測。允許一CDP應用程式決定一CDP操作(例如一更新)是否會和已執行之操作(同樣地,係以一浮水印為基礎)衝突。
利用此種核心功能,架構可以組建額外、較高階之同步化服務。
外顯快取服務。CDP中之外顯快取服務使得應用程式之效能/延展性,並提供了對離線程式設計模型化(如,須注意可在未運用到一種具備完整功能之外顯快取的優點 下,實作一離線程式設計模型化可以是)之支援,以及對暫時性資料之支援。下列為外顯快取中之功能:
●快取不同型別之資料(如,實體、非結構化、與XML資料)
●不同快取存取模式(如,唯讀、讀取寫入、共享等)
●和已儲存資料之快取一致性(如,對於儲存於SQL伺服器中之資料)
●用於無法使用之應用程式的跨多重CDP快取之快取(某些資料的型別,如,對話期內容資料)一致性用於外顯快取之程式設計介面可顯露:
●快取之建立
●快取之擴展
●將(部份資料之)快取保存至下方的存放區
●對快取之資料進行查詢與更新
公用程式操作。CDP提供了對在實體與實體之集合上之多種管理性與公用程式作業之支援。此種作業之一種抽樣包括:複製、移動、序列化/去序列化、與備份/回復。
參照第18圖,闡明了利用實體之項目的模型化。以資料庫為基礎之檔案儲存系統(如,WINFS)實作包含CDP與使用者應用程式架構(UAF)兩者之態樣。可注意到,CDP架構不意味著覆寫該以資料庫為基礎之檔案儲存系統,而僅是其中之元件重新區段化。
在本段落中,將定義UAF且之後檢視如何可將該以資料庫為基礎之檔案儲存系統之多種元件區段化成為UAF與CDP。
UAF是一種CDP架構,其和模型化「使用者」資料有關。使用者資料係指和一種傳統終端使用者相關的一種一般的、日常資料,例如文件、圖片、音樂、通訊錄等。
UAF可將下列加到基本CDP架構:
●基底項目型別(以及相關型別)
●用於模型化使用者資料之實質型別
●條件約束例如生命週期管理、包含等
●一使用者可對項目進行之動作:移動、複製、重新命名、序列化...
●項目之組織建構:容器、清單、自動清單、附註、分類
●對項目之終端使用者程式設計抽象化(例如規則撰寫)可以發現並了解,對應用程式開發者而言,CDP即為UAF程式設計模型。
明確地說,第18圖描述了UAF中一項目之表示法以及其係如何由屬種實體實際地衍生出來。一文件項目1802可由多種實體衍生,例如但不限於,一文件1804、多種連結1806與一種文件延伸1808。一作者項目1810可由多種實體衍生,例如但不限於,一作者1812、與一作者延伸1814。
參照第19圖,闡明了可延伸機制,其可藉由在CDP上實作UAF,以便實作多種功能。由於UAF係建構於CDP之上,其可利用CDP可延伸性機制以實作額外功能。將UAF建構於CDP之上可包括不同層和/或元件。一存放區1902可包括一CDP條件約束引擎1904,其中該CDP條件約束引擎1904包括至少一種UAF條件約束1906。一種CDP運行時間1908可包括一BL裝載1912,其可包括一種UAF項目表現方式1910。UAF項目表現方式1910可更包括一種UAF可繫結表現方式1914。在CDP運行時間1908之上,可存在任何其他UAF服務1916。
UAF可利用CDP之條件約束引擎以實施項目語意(以及其他型別語意)。可利用CSDL來撰寫這些,且結構描述產生器可由其建立存放區層級條件約束。可利用CDP之BL機制來實作項目表現方式,例如移動、序列化等。UAF型別可具有和其相關聯之可繫結表現方式。當已設計並套用完畢型別後,由一UAF應用程式開發者撰寫這些表現方式。將其他UAF服務例如同步化、中繼資料處理等實作成常規CDP編碼。綜合觀之,這些在不同層中執行的獨立邏輯片段,形成了UAF。
下列敘可用於在CDP與UAF之間的以資料庫為基礎之檔案儲存系統的分割。以資料庫為基礎之檔案儲存系統中之下列能力屬於CDP層中:
1. O-R對映-將實體對映至資料表。CDP支援將非規範性對映至句柄POCO情節以及以資料庫為基礎之檔案儲 存系統伺服器情節。這亦包括更新對映、對實體(與衍生之)型別提供基本CUD操作。
2. OPath查詢對映
3.實體與其他CDM核心型別之實作
4. StorageContext與StorageSearcher,連同對話期與交易管理
5.對話期快取,快取清理邏輯(SaveChanges)
6.變更追蹤
7.在實體型別上之監看
8.游標服務,包括RAV
9.項目層級安全性實施機制(資料列層級安全性、安全性預測,包括在型別檢視之中)
一以資料庫為基礎之檔案儲存系統中之下列能力屬於UAF層中:
1.可繫結、每一實體之表現方式
2.以資料庫為基礎之檔案儲存系統API中繼資料(將用戶端類別與表現方式表示成CLR中繼資料)
3.項目層級方法(複製、移動、序列化、重新命名)
4.同步化、同步化範圍、變更列舉
5.在容器上之監看
6.可用於有效路徑名稱計算與項目定義域之路徑資料表
7.中繼資料處理常式
8.以資料庫為基礎之檔案儲存系統命名空間
9.用於實行項目整體性(容器、項目部份、連結、檔案資料流、生命週期管理等)之編碼。
第20圖闡明在CDP上實作之一種LOB應用程式的實施例。下文描述了LOB架構之需求以及CDP如何可對其進行支援。可將一種商業架構應用程式想成一種LOB應用程式。將商業應用程式之核心功能組封裝成共享之商業元件。這些元件之群組管理不同商業功能,例如會計中之總帳乃至於CRM中之銷售自動化服務。其主要特徵在於這些元件是不露面的、可延伸、且可隨著所用之功能與複雜性的層級不同而用來滿足多種市場之需求。
商業架構(BF)可由商業解決方案架構與商業應用程式架構所組成。商業解決方案架構提供了可用於組建大多數商業應用程式之功能。這包括了基本商業資料型別,如金錢與數量;應用程式家族性商業實體,如客戶、商業單元、多國貨幣資訊與付款條件;用於實作共通商業模式之建構區塊,如商業交易與會計;以及共通商業處理模式,例如用於在一商業交易之後。
利用商業應用程式架構來寫入解決方案架構,該商業應用程式架構可藉由提供用於資料存取、安全性、使用者介面、工作流程、元件程式設計模型化與更多其他豐富服務,以支援寫入元件。若該商業模型與與解決方案架構所定義之規則不適用於一應用程式,則可將其略過且應用程式開發者可直接利用該應用程式架構。
商業應用程式架構提供了一種規範性程式設計模型, 其可利用.NET架構且將其能力專注於商業應用程式上。雖然其具有相當的可延伸性,應用程式開發者必須做出許多決定,因為一種更一般的解決方案不會增加實作中之產能以及實作與在利用其之生態系統中之所有應用程式的結構一致性。商業應用程式架構提供了一種程式設計模型與服務可用於寫入以網路為基礎之分散式OLTP應用程式。其可能不會含有屬於特定產品之商業邏輯,且因此不僅適於撰寫商業應用程式亦可用於任何其他符合其基本概況之應用程式。其提供了一組服務,其可提供支援資料存取、訊息傳送(例如運用SOAP與其他協定)、工作流程、事件代理、實體活化、診斷、組態、中繼資料管理(反映)、應用程式元件安全性、全域化、一商業桌面殼層與其他。CDP之需求主要來自於BF之商業應用程式架構,特別是在資料存取區域與資料邏輯之遠端服務中。
實體永續(EP),商業架構中之資料存取子系統一種實際的物件關聯對映架構為基礎,來支援一種豐富資料模型。在開發者處理的對映至關聯行之(C#)物件中,即為物件關聯。核心資料模型概念為實體與實體間之關聯式。共用資料模型(CDM)本質上可支援BF資料存取之資料模型需求。MBF EP需要對下列資料存取動作之支援:
●實體建立-讀取、更新、與刪除
●點對點查詢,其可傳回一資料組
●以資料組為基礎之操作,其可在資料庫中執行
BF可命令一代理程式/服務架構以支援分散式服務導 向之組態。指定某些商業功能時,代理程式可在盡可能最接近該功能之使用者處執行,且該服務可在盡可能接近該資料處執行。所謂「盡可能接近」會隨著每一種部署情節與使用者種類而不同。代理程式/服務樣式提供了由2層(用戶端-伺服器)至多層部署之部署彈性。在此種部署中,服務提供了可跨服務界限調用之介面;代理程式通常可取回接近用戶端(使用者)之資料,在其上作業,並將變更傳用至服務。
特別是,第20圖闡明一LOB架構和/或應用程式可如何利用CDP。可將本架構與利用本架構建構之應用程式裝載於中介層上之一種超應用程式伺服器2002。其可以一種介面結合至一用戶端應用程式2004之網路服務的形式,提供標準LOB服務,例如但不限於,工作流程、訊息傳送、商業程序等。超應用程式伺服器2002可利用CDP以撰寫存放區條件約束2006(經由一種CDP條件約束引擎2014)與以資料為中心之商業邏輯2008。用戶端應用程式2004可在一Indigo頻道上調用網路服務方法(如,利用一網路服務代理伺服器2010與一網路服務介面2012)。此外,其可利用用戶端層上之CDPo以用於其物件永續/資料存取之需求。
可由CDP來滿足下列:1)對話期管理;2)CRUD;3)共用資料模型(CDM)支援(如實體抽象化、實體延伸);4)查詢(如點對點、實體);5)執行物件快取(內隱);6)協力管理(如樂觀、隔離層級、衝突偵測等);7)商業邏 輯(如在方法、查驗/預設、內容樣式、事件中);8)安全性延伸;9)具有提供者(如,關聯式、以資料庫為基礎之檔案儲存系統)之對映(查詢,結構描述);10)延伸中繼資料(支援實體之其他使用)之能力;11)集合運算;12)呼叫儲存之程序的能力;以及13)N層部署。
BF實體永續本質上很適合CDP。CDP可完全支援BF之大多數永續要。SOA要求之某一些亦可由CDP解決。然而,可在CDP上將對於代理程式/服務模型、BF商業操作與程序之完整支援建構成LOB架構。MBF之商業解決方案架構亦在CDP上之層中。
第21與22圖闡明了根據本發明之方法。為了解釋上之簡便,將該方法描述成一系列之動作。可以了解並發現,本發明不限於所闡明之動作和/或動作之順序,舉例而言動作可以不同之順序發生和/或同時發生,且可和其他此處未描述之動作一起。更有甚者,並非所有闡明之動作皆為實作根據本發明之方法所必需。此外,習知技藝人士可發現與理解,亦可透過一狀態圖或事件,以一系列相互相關之狀態來描述此處之方法。
第21圖闡明一種方法2100,其可協助管理CDP之多種元件中的資料之流程。在步驟2102,一應用程式建立一訂單資料物件。訂單資料類別可表示描述於一CDM結構描述中之一種資料表集合型別。訂單資料物件建立一儲存上下文物件,其可經組態成為和存放區互動所必須的。在步驟2104,藉由初始化一對話期來開啟至存放區之連結, 並建立一交易內容,其中建立一種安全性上下文。在步驟2106,將儲存上下文的一種實體傳送回應用程式。
在步驟2108,顯露一介面以取回根據一種CDM查詢為基礎之物件。在步驟2110,將查詢對映至SQL中並適當地套用安全性。更有甚者,應用程式/使用者僅可看見允許其看見之資料。在步驟2112,將來自查詢之結果傳回至CDP運行時間且傳回至應用程式。在步驟2114,可在封裝之儲存上下文物件上呼叫儲存變更功能,以便清理變更。
第22圖闡明一種方法,其有助於跨多重不同架構而部署一CDP,其中可將不同應用程式關聯至每一種架構。在步驟2202,建立一種資料存放區,其可存放區結構化、半結構化、與未結構化資料。在步驟2204,建立一CDP,且將之覆蓋在資料存放區之上。繼續在步驟2206,和不同應用程式相關聯之多重架構可存取資料存放區。在步驟2208,將共享之資料提供給不同架構上之不同應用程式。換句話說,資料存放區中之資料可共享於多種不同應用程式之間不論其個別架構為何。在步驟2210,可利用私用資料使得該私用資料可針對一特定架構上的一種特定應用程式。
參照第23圖,闡明了一種可經作業執行此處揭露之CDP架構與相關元件和/或程序的一種電腦之區塊圖。為了提供本架構之不同態樣的額外內容,第23圖與下文之本意在於對一種適當運算環境2300提供一簡短、一般之描述,在該運算環境中可實作本發明之不同態樣。雖然上文係以 可在一或更多種電腦上執行之電腦可執行檔案指令的一般內容來描述本架構,習知技藝人士可明瞭,本架構亦可和其他程式模組一起實作和/或實作成硬體與軟體的一種組合。
一般而言,程式模組包括常式、應用程式、元件、資料結構等可執行特定工作或實作特定抽象資料型別者。更有甚者,習知技藝人士可發現,此處之發明性方法可和其他電腦系統組態一起使用,包括單一處理器或多處理器電腦系統、迷你電腦、主機電腦、以及個人電腦、手持式運算裝置、以微處理器微基礎之可程式化消非性電子產品、及與其相似者,其中的每一種可經作業耦合至一或更多種相關聯之裝置。
所闡明之態樣亦可實作於分散式運算環境中,在該處某些工作係由透過一通訊網路連接之遠端處理裝置來執行。在一種分散式運算環境中,程式模組可位在本機與遠端記憶儲存裝置兩者中。
一電腦通常包括多種電腦可讀取媒體。電腦可讀取媒體可以是可供電腦存取之任何可用媒體,且其包括易變與非易變媒體、可移除與非可移除媒體兩者。作為實施例而非限制,電腦可讀取媒體可至少包含電腦儲存媒體與通訊媒體。電腦儲存媒體包括以任何方法或技術實作可用於儲存如電腦可讀取指令、資料結構、程式模組等資料或其他資料之易變與非易變、可移除與非可移除媒體兩者。電腦儲存媒體包括但不限於RAM、ROM、EEPROM、快閃記憶 體或其他記憶技術、CD-ROM、數位影音光碟(DVD)或其他光碟儲存、磁匣、磁帶、或其他磁性儲存裝置、或任何其他可用於儲存所需資訊且可供電腦存取之媒體。
通訊媒體通常可將電腦可讀取指令、資料結構、程式模組或其他資料具體化於一種模組化之資料信號中,例如一種載波或其他傳輸機制,且包括任何資訊傳遞媒體。「模組化資料信號」一詞代表一種信號,其具有一或更多種其特徵組或變更的方式使得其可編碼此信號中之資訊。作為實施例而非限制,通訊媒體包括有線媒體,例如一種有線網路或直接有線連接、與無線媒體例如聲波、RF、紅外線與其他無線媒體。任何上述組合亦應包括於電腦可讀取媒體之範圍中。
再次參照第23圖,用於實作不同態樣之示範性環境2300包括一電腦2302,該電腦2302包括一處理單元2304、一系統記憶體2306與一系統匯流排2308。系統匯流排2308可將包括但不限於系統記憶體2306之元件耦合至處理單元2304。處理單元2304可以是多種商業上可用架構之任一種。亦可利用雙重微處理器以及其他多處理器架構作為處理單元2304。
系統匯流排2308可以是多種匯流排結構類型之任一種,其可進一步互相連接至利用多種商業上可用匯流排架構之一種記憶體匯流排(具有或沒有一種記憶體控制卡)、一種周邊匯流排、以及一種本機匯流排。系統記憶體2306包括唯讀記憶體(ROM)2310與隨機存取記憶體(RAM) 2312。一基本輸入/輸出系統(BIOS)儲存於一非易變記憶體2310中,例如ROM、EPROM、EEPROM,其中BIOS含有基本常式,可幫助例如在開機過程中,電腦2302中之基本元件間的資訊傳輸。RAM 2312亦可包括一種高速RAM,例如靜態RAM以便快取資料。
電腦2302更包括一種內接硬碟機(HDD)2314(如,EIDE、SATA),該內接硬碟機2314亦可經組態供外接使用於一適當機殼(此處未顯示)中;一軟式磁碟機(FDD)2316,(如,可讀取或寫入一可移除磁碟片2318)以及一光碟機2320,(如,讀取一CD-ROM光碟2322或讀取或寫入其他高容量光碟媒體,例如DVD)。可分別利用一硬碟機介面2324、一磁碟機介面2326與一光碟機介面2328將硬碟機2314、磁碟機2316與光碟機2320連接至系統匯流排2308。用於外接硬碟實作之介面2324包括通用序列匯流排(USB)與IEEE 1394介面技術之至少一種或兩者。其他外接硬碟連接技術亦屬其範圍中。
上述磁碟機及與其相關聯之電腦可讀取媒體提供了對資料、資料結構、電腦可執行檔案指令等等之非易變儲存。對於電腦2302,該磁碟及與媒體容納屬於一種適當數位格式之資料的儲存。雖然上文對電腦可讀取媒體之描述係指稱一HDD、一可移除磁碟、以及一可移除光學媒體例如一CD或DVD,習知技藝人士應可理解,可供一點腦讀取之其他類型媒體,例如zip碟、磁匣、快閃技藝卡、卡匣及與其相似者,亦可用於示範性作業環境中,且除此之外, 任何此類媒體皆可含有可用於執行本架構之方法的電腦可執行檔案。
可將多種程式模組可以是儲存於硬碟機與RAM 2312中,包括一作業系統2330、一或更多種應用程式2332、其他程式模組2334與程式資料2336。亦可將前述作業系統、應用程式、模組和/或資料之所有或全部快取於RAM 2312中。可以理解,多種上夜可用之作業系統或作業系統之組合,皆可和本架構一起實作。
一使用者可經由一或更多種有線/無線輸入裝置,將指令與資訊輸入至電腦2302中,如一鍵盤2338與一種指向裝置例如一滑鼠2340。其他輸入裝置(此處未顯示)可包括一麥克風、一IR遠端控制、一搖桿、一遊戲墊、一手寫筆、觸控式螢幕、或與其相似者。這些與其他出入裝置通常經由耦合至系統匯流排2308之一種輸入裝置介面2342連接至處理單元2304,但也可以由其他介面連接,例如一平行埠、一種IEEE 1394序列埠、一遊戲埠、一USB埠、一IR介面等。
一螢幕2344或其他類型之顯示裝置亦可經由一介面連接至系統匯流排2308,例如一視訊配接卡2346。除了螢幕2344之外,一電腦通常包括其他周邊輸出裝置(此處未顯示),例如擴音器、印表機等。
電腦2302可在一種網路化環境中作業,其係經由有線或無線連接利用邏輯連線至一或更多種遠端電腦,例如遠端電腦(們)2348。遠端電腦(們)2348可以是一工作 站、一伺服器、一路由器、一個人電腦、可攜式電腦、以微處理器為基礎之娛樂性產品、一對等裝置、或其他常見網路節點,且通常包括上文關於個人電腦2302所述之多種或全部元件,雖然為求簡潔,僅闡明了一種記憶體/儲存裝置2350。所繪之邏輯連接包括至一種區域網路(LAN)2352或較大網路,如一廣域網路(WAN)2354之有線/無線連接。此種LAN與WAN網路環境在辦公室或企業內中很常見,且可幫助企業內電腦網路,如內部網路,上述全部皆可連接至一全球通訊網路如網際網路。
當用於一LAN網路環境時,個人電腦2302透過一有線和/或無線通訊網路介面或配接卡2356連接至區域網路2352。配接卡2356可協助對LAN 2352之有線或無線通訊,LAN 2352亦可包括位於其上的一種無線存取點以便和無線配接卡2356進行通訊。
當用於一WAN網路環境時,個人電腦2302可包括一數據機2358、或連接至WAN 2354上之一種通訊伺服器,或具有其他可透過WAN 2354如網際網路建立通訊的裝置。數據機2358可以是內建或外接以及一種有線或無線裝置,其係透過序列埠介面2342連接至系統匯流排2308。在一網路化環境中,可將關於電腦2302所示之程式模組或其一部份儲存於遠端記憶體儲存裝置中。可以理解,此處所示之網路連線僅為示範性,且可利用其他在電腦間建立連線之方法。
可操作電腦2302以便和操作上處於無線通訊中之任 何無線裝置或實體進行通訊,該裝置或實體如一印表機、掃描器、桌面和/或可攜式電腦、可攜式資料助理、通訊碟、任何和一種可無線地偵測到之標籤相關之一種裝備或位置(如,一種書報亭、報攤、洗手間等)、與電話。這包括至少Wi-Fi與藍芽TM 無線技術。因此,該通訊可以是一種預先定義之結構,如同一傳統網路或僅為至少兩種裝置間的一種點對點通訊。
Wi-Fi或高傳真無線允許由家中的沙發、旅館房間的床上、或工作場合的會議室在不須網路線的情形下連接至網際網路。Wi-Fi是一種無線科技,類似行動電話中所用的技術,其允許此類裝置如電腦,在任何屬於一基地台範圍中的室內室外傳送與接收資料。Wi-Fi網路利用稱為IEEE 802.11(a、b、g等)之無線電技術,以提供安全、可靠、快速的無線連結。可利用一Wi-Fi網路將電腦彼此連接、連接至網際網路、以及有線網路(其係利用IEEE 802.3或乙太網路)。Wi-Fi網路可在不須執照的2.4與5 GHz無線電頻帶中作業,資料傳輸速率為11 Mbps(802.11a)或54 Mbps(802.11b),舉例而言,或在含有兩種頻帶(雙頻)之產品中,使得網路可提供類似許多辦公室使用的基本10BaseT有線乙太網路之真實效能。
參照第24圖,闡明了可供CDP與提供資料管處理個別元件和/或程序利用的一種示範性運算環境2400之結構描述區塊圖。系統2400包括一或更多種用戶端(們)2402。用戶端(們)2402可以是硬體和/或軟體(如,執行緒、 處理、運算裝置)。舉例而言,用戶端(們)2402可藉由利用本架構,裝載cookie(們)和/或相關聯之內容資訊。
系統2400亦包括一或更多種伺服器(們)2404。伺服器(們)2404也可以是硬體和/或軟體(如,執行緒、處理、運算裝置)。舉例而言,伺服器2404可藉由利用本架構裝載執行緒以執行轉換。一用戶端2402與一伺服器2404之間的一種可能通訊可以是一種資料封包之形式,其經改寫可在二或更多種電腦處理中傳輸。舉例而言,該資料封包可包括一cookie和/或相關聯之內容資訊。系統2400包括一種通訊架構2406(如,一種全球通訊網路,例如網際網路),可利用其以協助用戶端(們)2402與伺服器(們)2404之間的通訊。
可透過一種有線(包括光纖)和/或無線技術來協助通訊。用戶端(們)2402可在作業上連線至一或更多種用戶端資料存放區(們)2408,可利用其以儲存對用戶端(們)2402而言為本機之資訊(如,cookie(們)和/或相關聯內容資訊)。相似地,伺服器(們)2404可在作業上聯限制一或更多種伺服器資料存放區(們)2410,可利用其以儲存對伺服器2404而言為本機之資訊。
上文所述者包括實施例。當然,在描述本架構時,不可能描述所有可想見之元件或方法之組合,但習知技藝人士可以理解,本架構可能有多種進一步的組合與互換。相對應地,本架構之本意係涵括所有屬於附隨申請專利範圍之精神與範圍中的此類替換、修改、與變形。更有甚者, 此處所用「包括」一詞不論用於詳細說明或申請專利範圍中,該詞的本意係為包括性的,且其意義類似「至少包含」一詞,而「至少包含」用於申請專利範圍中時,應解釋為一開放性之字詞。
100‧‧‧系統
102‧‧‧共用資料平台
104‧‧‧應用程式與應用程式架構
106‧‧‧資料存放區
108‧‧‧應用程式介面API
110‧‧‧運行時間元件
112‧‧‧條件約束/安全性引擎元件
200‧‧‧CDP系統
202‧‧‧存放區管理元件
204‧‧‧應用程式架構
206、400‧‧‧應用程式
402‧‧‧共用資料模型
404‧‧‧對話期以及交易
406‧‧‧查詢
408‧‧‧永續
410‧‧‧游標
412‧‧‧服務
414‧‧‧物件快取
416‧‧‧商業邏輯裝載
602‧‧‧CDP層
604‧‧‧使用者應用程式架構
608‧‧‧協同架構
610‧‧‧商業架構
612‧‧‧連絡人管理應用程式
614‧‧‧協同應用程式
616‧‧‧客戶關聯式管理應用程式
618‧‧‧連絡人
620‧‧‧項目
622‧‧‧文件資料庫
624‧‧‧訂單
626‧‧‧實體
702‧‧‧CDP元件與儲存元件
704‧‧‧UAF架構
706‧‧‧項目
708‧‧‧電子郵件
710‧‧‧文件
712‧‧‧連絡人
714‧‧‧實體
716‧‧‧電子郵件應用程式
718‧‧‧豐富evite用戶端
720‧‧‧計畫M
802‧‧‧CRM應用程式
804‧‧‧LOB架構
806‧‧‧連絡簿資料
808‧‧‧UAF架構
810‧‧‧項目
812‧‧‧實體
814‧‧‧訂單詳細資料
816‧‧‧購買訂單
1002‧‧‧CDP API
1004‧‧‧CDP運行時間
1006‧‧‧應用程式
1008‧‧‧條件約束/安全性
1010‧‧‧用戶端層
1012‧‧‧存放區
1014‧‧‧伺服器層
1102、1104、1106‧‧‧界限
1108‧‧‧共享資料
1110‧‧‧存放區
1112‧‧‧處理/電腦界限
1114‧‧‧條件約束/安全性
1202、1204、1208‧‧‧電腦/處理界限
1206‧‧‧存放區
1210‧‧‧共享資料
1212‧‧‧私用資料
1302‧‧‧電腦/處理界限
1306‧‧‧SQL存放區
1402‧‧‧CDP運行時間
1404‧‧‧存放區
1406‧‧‧用戶端
1408‧‧‧網路服務代理伺服器
1410‧‧‧網路服務
1412‧‧‧商業邏輯裝載
1414‧‧‧遠端服務代理程式
1416‧‧‧遠端服務
1418‧‧‧API
1420‧‧‧CDP API
1602‧‧‧本機存放區
1604‧‧‧條件約束/安全性
1802‧‧‧文件項目
1804‧‧‧文件
1806‧‧‧連結
1808‧‧‧文件延伸
1810‧‧‧作者項目
1812‧‧‧作者
1814‧‧‧作者延伸
1902‧‧‧存放區
1904‧‧‧CDP條件約束引擎
1906‧‧‧UAF條件約束
1908‧‧‧CDP運行時間
1910‧‧‧UAF項目表現方式
1912‧‧‧BL裝載
1914‧‧‧UAF可繫結表現方式
1916‧‧‧其他UAF服務
2002‧‧‧超應用程式伺服器
2004‧‧‧用戶端應用程式
2006‧‧‧存放區條件約束
2008‧‧‧以資料為中心商業邏輯
2010‧‧‧網路服務代理伺服器
2012‧‧‧網路服務介面
2014‧‧‧CDP條件約束引擎
2300‧‧‧適當運算環境
2302‧‧‧電腦
2304‧‧‧處理單元
2306‧‧‧系統記憶體
2308‧‧‧系統匯流排
2310‧‧‧唯讀記憶體
2312‧‧‧隨機存取記憶體
2314‧‧‧內接硬碟機
2316‧‧‧軟式磁碟機
2318‧‧‧可移除磁碟片
2320‧‧‧光碟機
2322‧‧‧CD-ROM光碟
2324‧‧‧硬碟機介面
2326‧‧‧磁碟機介面
2328‧‧‧光碟機介面
2330‧‧‧作業系統
2332‧‧‧應用程式
2334‧‧‧模組
2336‧‧‧程式資料
2338‧‧‧鍵盤
2340‧‧‧滑鼠
2342‧‧‧輸入裝置介面
2344‧‧‧螢幕
2346‧‧‧視訊配接卡
2348‧‧‧遠端電腦(們)
2350‧‧‧記憶體/儲存裝置
2352‧‧‧區域網路
2354‧‧‧廣域網路
2356‧‧‧網路介面或配接卡
2358‧‧‧數據機
2400‧‧‧系統
2402‧‧‧用戶端(們)
2404‧‧‧伺服器(們)
2406‧‧‧通訊架構
第1圖闡明一系統,其利用根據本架構之一種共用資料平台(CDP)。
第2圖闡明根據本架構之一種更詳細之CDP系統。
第3圖闡明一方法,其可實作有助於管理資料的一共用資料平台。
第4圖闡明與本發明之架構有關之CDP元件的一種概要圖示。
第5圖闡明CDP之各種元件中的資料流。
第6圖闡明可和該CDP實作之各種架構。
第7圖闡明一種以共用資料庫為基礎之檔案儲存系統情形,其允許多重應用程式共享資料。
第8圖闡明一種單一應用程式,其可根據CDP與相關架構利用多重架構。
第9圖闡明CDP,其可和與多種不同架構相關聯之多重應用程式共享資料。
第10圖闡明CDP之一種雙層部署,以協助資料管理。
第11圖闡明一雙層部署,其具有共享之資料以協助資料管理。
第12圖闡明一第二種組態,其可使得一應用程式具有其不想被其他應用程式看見和/或利用之私用資料。
第13圖闡明一第三種組態,其使得另一種應用程式可直接存取該存放區。
第14圖闡明CDP元件之一種三層部署組態。
第15圖闡明CDP元件之一種三層部署組態。
第16圖闡明在用戶端層與中介層兩者上執行的應用程式邏輯之一種圖示。
第17圖闡明在用戶端層與中介層兩者上執行的應用程式邏輯之一種圖示。
第18圖闡明利用至少一種實體來模型化項目。
第19圖闡明可延伸機制,其可藉由將UAF納入CDP之頂端以用於實作不同功能。
第20圖闡明在CDP上實作的一種LOB應用程式之一種實施例。
第21圖闡明一方法,其有助於管理在CDP之各種元件間資料的流向。
第22圖闡明一法,其有助於在多重不同架構中部署一CDP,其中可將不同應用程式關聯至每一種架構。
第23圖闡明一電腦之一種區塊圖,其可經操作以執行所述架構。
第24圖闡明根據本發明之一種示範性運算環境的一種概要區塊圖。
100‧‧‧系統
102‧‧‧共用資料平台
104‧‧‧應用程式與應用程式架構
106‧‧‧資料存放區
108‧‧‧應用程式介面API
110‧‧‧運行時間元件
112‧‧‧條件約束/安全性引擎元件

Claims (16)

  1. 一種包含至少一個處理器的電腦系統,該處理器藉由提供可供多種不同應用程式架構存取之資料服務而允許對資料的一致存取以協助資料管理,該電腦系統至少包含:一應用程式介面(API),該應用程式介面可協助和與該等不同應用程式架構相關聯之應用程式進行通訊,該等應用程式之形式為一公用類別、一介面、及一靜態輔助功能之至少一種;一運行時間(runtime)元件,該運行時間元件可介面結合(interfaces)至該API且提供物件關聯對映、查詢對映、與實施條件約束(constraints)之至少一種;一共用資料模型,該共用資料模型係經使用以針對該等多種不同應用程式架構,其中該等多種不同應用程式架構包含下列之兩種或更多種:一特定業務(line of business)架構、一終端使用者架構、一系統管理架構、一使用者應用程式架構、一協同合作架構、一商業架構、與一個人資訊架構;一資料存放區,該資料存放區模型化並儲存結構化、半結構化、與非結構化資料型別,以提供一種資料服務,且該資料存放區包含共享的資料及私用的資料,該共享的資料係可經由該共用資料模型,以供在該複數個不同應用程式架構中與相對應應用程式架構相關聯 之不同應用程式存取,而該私用的資料係僅可經由該共用資料模型,以供在該複數個不同應用程式架構與一特定架構相關聯之一種特定應用程式來存取;及一永續引擎,該永續引擎可調用(invoke)物件關聯對映,該物件關聯對映可藉由調用一規範性物件關聯對映與一非規範性物件關聯對映之至少一種,而將一語言類別對映至一下方的表格式表示。
  2. 如申請專利範圍第1項所述之電腦系統,其中該共用資料模型有助於建立下列之至少一種:一定義域特定型別、一條件約束、與一關聯式。
  3. 如申請專利範圍第2項所述之電腦系統,其中該定義域特定型別為一種實體型別,該實體型別係一種用於內容與一方法之至少一種的一群組之規格,其中該定義域特定型別可利用下列之至少一種:一實體、一資料表、一資料表集合、與一關聯式。
  4. 如申請專利範圍第3項所述之電腦系統,其中一結構描述(schema)可定義下列之至少一種:該實體、該關聯式(relationship)、及該資料表集合,使得一命名空間可和該結構描述相關聯。
  5. 如申請專利範圍第2項所述之電腦系統,其中該共用資料模型包含在由該共用資料模型所定義之一型別系統上之一查詢語言,其中該查詢語言允許對一物件結構進行豐富查詢,該物件結構可提供對已儲存資料進行一強型別、以物件為基礎之抽象化。
  6. 如申請專利範圍第5項所述之電腦系統,其中該查詢語言為下列之至少一種:Opath與OSQL(物件導向結構化查詢語言)。
  7. 如申請專利範圍第1項所述之電腦系統,該電腦系統更包含一條件約束/安全性引擎,該條件約束/安全性引擎可協助條件約束之宣告性撰寫,且該條件約束/安全性引擎可控制針對該共用資料模型之至少一種實體的存取。
  8. 如申請專利範圍第1項所述之電腦系統,其中該對映係從一應用程式空間至該共用資料模型,且該對映係獨立於由該共用資料模型至該資料存放區。
  9. 如申請專利範圍第1項所述之電腦系統,其中該應用程式係為下列之至少一種:一終端使用者應用程式、一知識型工作人員應用程式、一特定業務應用程式、一網路 應用程式、一連絡人管理應用程式、文件管理應用程式、一協同合作應用程式、一電子郵件應用程式、一客戶關聯式管理應用程式、一企業資源規劃應用程式、以及一系統管理應用程式。
  10. 如申請專利範圍第1項所述之電腦系統,其中該運行時間元件可提供一實體狀態之管理,該實體狀態之管理包括下列之至少一種:一識別對映、一物件變更追蹤、以及一原始值。
  11. 如申請專利範圍第1項所述之電腦系統,其中該共用資料模型與個別元件係為「層不可知“tier-agnostic”」的,且該共用資料模型與該等個別元件可存在於下列之至少一種:一用戶端層、一中介層、一伺服器層、與一網路服務層。
  12. 如申請專利範圍第1項所述之電腦系統,該電腦系統更包含下列之至少一種:一規則服務、一變更追蹤服務、一衝突偵測服務、一事件服務與一告知服務。
  13. 一種管理介於一資料存放區及多個不同應用程式架構之多個應用程式間之資料的電腦實施方法,該電腦實施方法包含下列步驟: 將一資料平台覆蓋於該資料存放區之上,該資料存放區可模型化並儲存結構化、半結構化、與非結構化資料型別,以提供一種資料服務;將該複數個不同應用程式架構覆蓋到該資料平台上,以允許在每一應用程式架構中之至少一應用程式存取該資料存放區,其中該複數個不同應用程式架構包含下列之兩種或更多種:一特定業務架構、一終端使用者架構、一系統管理架構、一使用者應用程式架構、一協同合作架構、一商業架構、與一個人資訊架構;提供一應用程式介面(API),該應用程式介面能與該等應用程式進行通訊,該等應用程式之形式為一公用類別、一介面、及一靜態輔助功能之至少一種;在該資料平台上提供一物件關聯對映、一查詢對映、與一實施條件約束中之至少一種;在該資料平台上提供一共用資料模型,該共用資料模型係由該等多種不同應用程式架構所使用以存取該資料存放區,其中儲存在該資料存放區中之共享的資料可由在該等不同應用程式架構中與相對應應用程式架構相關聯之不同應用程式來存取,且儲存在該資料存放區中之私用的資料僅可由在該等不同應用程式架構中與一特定架構相關聯之一種特定應用程式來存取;及提供一永續引擎,該永續引擎可調用物件關聯對映,該物件關聯對映可藉由調用一規範性物件關聯對映 與一非規範性物件關聯對映之至少一種,而將一語言類別對映至一下方的表格式表示;其中,該等前述步驟中之至少一者係由一電腦所執行。
  14. 如申請專利範圍第13項之方法,更包含下列步驟:建立一儲存上下文物件(storage context object);以一對話期開啟對該資料存放區之一連結並建立一安全性上下文(security context);將一儲存上下文之一實體傳回至一應用程式;顯露一介面以擷取物件;在套用安全性時,將一查詢對映至SQL;將一結果傳回至一資料平台運行時間與該應用程式;以及將該等變更儲存於該儲存上下文物件上。
  15. 一種包含至少一個處理器的電腦系統,該處理器藉由提供可供多種不同應用程式架構存取之資料服務而允許對資料的一致存取以協助資料管理,該電腦系統至少包含:一應用程式介面(API)裝置,該應用程式介面裝置係用於與該等不同應用程式架構相關聯之應用程式進行通訊,該等應用程式之形式為一公用類別、一介面、及一靜態輔助功能之至少一種; 用於提供物件關聯對映、查詢對映、及實施條件約束中之至少一者之裝置,該裝置介面結合至該等API裝置;用於提供一共用資料模型之裝置,該共用資料模型係由複數個不同應用程式架構所使用,其中該複數個不同應用程式架構包含一使用者應用程式架構及一特定業務(LOB)應用程式架構;用於提供一資料存放區之裝置,該資料存放區可模型化並儲存結構化、半結構化、與非結構化資料型別,以提供一種資料服務,且該資料存放區包含共享的資料及私有的資料,該共享的資料可經由該共用資料模型,以供在該複數個不同應用程式架構中與相對應應用程式架構相關聯之不同應用程式來存取,且儲存在該資料存放區中之私用的資料僅可由在該等不同應用程式架構中與一特定架構相關聯之一種特定應用程式來存取,而該私用的資料係僅可經由該共用資料模型,以供與在該複數個不同應用程式架構中之一特定架構相關聯之一種特定應用程式來存取;其中該用於提供物件關聯對映、查詢對映、與實施條件約束之至少一者之裝置包含一永續引擎,該永續引擎可調用一物件關聯對映,該物件關聯對映可藉由調用一規範性物件關聯對映與一非規範性物件關聯對映之至少一者,而將一語言類別對映至一下方的表格式表 示。
  16. 如申請專利範圍第15項之電腦系統,該電腦系統更包含一條件約束/安全性引擎,該條件約束/安全性引擎可協助條件約束之宣告性撰寫,且該條件約束/安全性引擎可控制針對該電腦系統之至少一種實體的存取。
TW094147278A 2005-02-28 2005-12-29 用於跨不同應用程式架構之資料服務的電腦系統及電腦可實施方法 TWI405091B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US65755605P 2005-02-28 2005-02-28
US11/171,905 US7853961B2 (en) 2005-02-28 2005-06-30 Platform for data services across disparate application frameworks

Publications (2)

Publication Number Publication Date
TW200632699A TW200632699A (en) 2006-09-16
TWI405091B true TWI405091B (zh) 2013-08-11

Family

ID=36607592

Family Applications (1)

Application Number Title Priority Date Filing Date
TW094147278A TWI405091B (zh) 2005-02-28 2005-12-29 用於跨不同應用程式架構之資料服務的電腦系統及電腦可實施方法

Country Status (19)

Country Link
US (1) US7853961B2 (zh)
EP (1) EP1696352A3 (zh)
JP (1) JP2006244488A (zh)
KR (1) KR101224670B1 (zh)
CN (1) CN1828527B (zh)
AU (1) AU2006200230B2 (zh)
BR (1) BRPI0600191A (zh)
CA (1) CA2533942A1 (zh)
CO (1) CO5790183A1 (zh)
EG (1) EG25837A (zh)
IL (1) IL173430A0 (zh)
MX (1) MXPA06001208A (zh)
MY (1) MY149824A (zh)
NO (1) NO20060072L (zh)
NZ (1) NZ544991A (zh)
RU (1) RU2425417C2 (zh)
SG (1) SG125173A1 (zh)
TW (1) TWI405091B (zh)
ZA (1) ZA200600754B (zh)

Families Citing this family (167)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8374966B1 (en) * 2002-08-01 2013-02-12 Oracle International Corporation In memory streaming with disk backup and recovery of messages captured from a database redo stream
JP4046086B2 (ja) * 2004-01-21 2008-02-13 トヨタ自動車株式会社 可変圧縮比内燃機関
US7603347B2 (en) * 2004-04-09 2009-10-13 Oracle International Corporation Mechanism for efficiently evaluating operator trees
US7516121B2 (en) * 2004-06-23 2009-04-07 Oracle International Corporation Efficient evaluation of queries using translation
EP1759315B1 (en) * 2004-06-23 2010-06-30 Oracle International Corporation Efficient evaluation of queries using translation
US7885980B2 (en) 2004-07-02 2011-02-08 Oracle International Corporation Mechanism for improving performance on XML over XML data using path subsetting
US7921076B2 (en) 2004-12-15 2011-04-05 Oracle International Corporation Performing an action in response to a file system event
US20060195460A1 (en) * 2005-02-28 2006-08-31 Microsoft Corporation Data model for object-relational data
US7853961B2 (en) 2005-02-28 2010-12-14 Microsoft Corporation Platform for data services across disparate application frameworks
US7685561B2 (en) * 2005-02-28 2010-03-23 Microsoft Corporation Storage API for a common data platform
DE102005009529A1 (de) * 2005-03-02 2006-09-07 Siemens Ag Datenverarbeitungssystem zur Integration zweier Frameworks
US8521752B2 (en) 2005-06-03 2013-08-27 Osr Open Systems Resources, Inc. Systems and methods for arbitrary data transformations
US7487191B2 (en) * 2005-06-10 2009-02-03 International Business Machines Corporation Method and system for model-based replication of data
US7631011B2 (en) * 2005-07-29 2009-12-08 Microsoft Corporation Code generation patterns
US20070027905A1 (en) * 2005-07-29 2007-02-01 Microsoft Corporation Intelligent SQL generation for persistent object retrieval
US7685567B2 (en) * 2005-07-29 2010-03-23 Microsoft Corporation Architecture that extends types using extension methods
US20070027849A1 (en) * 2005-07-29 2007-02-01 Microsoft Corporation Integrating query-related operators in a programming language
US20070044083A1 (en) * 2005-07-29 2007-02-22 Microsoft Corporation Lambda expressions
US7702686B2 (en) * 2005-07-29 2010-04-20 Microsoft Corporation Retrieving and persisting objects from/to relational databases
US7676493B2 (en) * 2005-09-07 2010-03-09 Microsoft Corporation Incremental approach to an object-relational solution
US20070136254A1 (en) * 2005-12-08 2007-06-14 Hyun-Hwa Choi System and method for processing integrated queries against input data stream and data stored in database using trigger
US20070174420A1 (en) * 2006-01-24 2007-07-26 International Business Machines Corporation Caching of web service requests
US8219919B2 (en) * 2006-02-06 2012-07-10 Attachmate Group Method for automating construction of the flow of data driven applications in an entity model
US7680767B2 (en) * 2006-03-23 2010-03-16 Microsoft Corporation Mapping architecture with incremental view maintenance
US7647298B2 (en) * 2006-03-23 2010-01-12 Microsoft Corporation Generation of query and update views for object relational mapping
US20070250527A1 (en) * 2006-04-19 2007-10-25 Ravi Murthy Mechanism for abridged indexes over XML document collections
US7526501B2 (en) * 2006-05-09 2009-04-28 Microsoft Corporation State transition logic for a persistent object graph
US20070266041A1 (en) * 2006-05-11 2007-11-15 Microsoft Corporation Concept of relationshipsets in entity data model (edm)
US8887130B2 (en) * 2006-06-16 2014-11-11 Sony Corporation Software design and development in a service oriented environment
US7499909B2 (en) * 2006-07-03 2009-03-03 Oracle International Corporation Techniques of using a relational caching framework for efficiently handling XML queries in the mid-tier data caching
US9747381B1 (en) * 2006-07-14 2017-08-29 Oracle America, Inc. Querying and configuring an identity management framework
US7512748B1 (en) 2006-08-17 2009-03-31 Osr Open Systems Resources, Inc. Managing lock rankings
US8539228B1 (en) 2006-08-24 2013-09-17 Osr Open Systems Resources, Inc. Managing access to a resource
US20080052314A1 (en) * 2006-08-25 2008-02-28 Ritwik Batabyal e-ENABLER FRAMEWORK
US8726299B1 (en) * 2006-09-29 2014-05-13 Symantec Operating Corporation Image-oriented, plugin-based API to storage server appliances
US7996376B2 (en) * 2006-10-27 2011-08-09 Verizon Patent And Licensing Inc. Method and apparatus for managing session data across multiple applications
US8245281B2 (en) 2006-12-29 2012-08-14 Aruba Networks, Inc. Method and apparatus for policy-based network access control with arbitrary network access control frameworks
CA2578472C (en) * 2007-01-12 2013-01-15 Truecontext Corporation Methods and system for orchestrating services and data sharing on mobile devices
JP4632056B2 (ja) * 2007-01-15 2011-02-16 日本電気株式会社 マッピングシステム、マッピング方法及びプログラム
US7827405B2 (en) 2007-01-19 2010-11-02 Microsoft Corporation Mechanism for utilizing kerberos features by an NTLM compliant entity
US7899917B2 (en) * 2007-02-01 2011-03-01 Microsoft Corporation Synchronization framework for occasionally connected applications
US20080201338A1 (en) * 2007-02-16 2008-08-21 Microsoft Corporation Rest for entities
US20080201234A1 (en) * 2007-02-16 2008-08-21 Microsoft Corporation Live entities internet store service
US9430552B2 (en) 2007-03-16 2016-08-30 Microsoft Technology Licensing, Llc View maintenance rules for an update pipeline of an object-relational mapping (ORM) platform
US8464209B2 (en) 2007-03-19 2013-06-11 Microsoft Corporation Using collaborative development information in a team environment
US8813101B2 (en) * 2007-03-28 2014-08-19 Microsoft Corporation Software technique to correlate conceptually similar entities
US20080244557A1 (en) * 2007-04-02 2008-10-02 Inventec Corporation Knowledge management system and method for implementing management software using the same
US8024433B2 (en) * 2007-04-24 2011-09-20 Osr Open Systems Resources, Inc. Managing application resources
US8122055B2 (en) * 2007-04-26 2012-02-21 Microsoft Corporation Hosted multi-tenant application with per-tenant unshared private databases
US9053162B2 (en) * 2007-04-26 2015-06-09 Microsoft Technology Licensing, Llc Multi-tenant hosted application system
US8554878B2 (en) * 2007-05-21 2013-10-08 Sap Ag Method and a system for incorporating reliable messaging in web services client applications via an API
US20080306986A1 (en) * 2007-06-08 2008-12-11 Accenture Global Services Gmbh Migration of Legacy Applications
US8060868B2 (en) * 2007-06-21 2011-11-15 Microsoft Corporation Fully capturing outer variables as data objects
US20090006114A1 (en) * 2007-06-26 2009-01-01 Microsoft Corporation Multi-channel commerce-related data management
US7702695B2 (en) * 2007-06-27 2010-04-20 Microsoft Corporation Object relational map verification system
US8676962B2 (en) * 2007-06-29 2014-03-18 International Business Machines Corporation Methods, systems, and computer program products for implementing data asset management activities
US20090030870A1 (en) * 2007-07-27 2009-01-29 Microsoft Corporation Error propagation in object-relational mapping platform
US7949693B1 (en) 2007-08-23 2011-05-24 Osr Open Systems Resources, Inc. Log-structured host data storage
EP2206050A4 (en) 2007-09-28 2013-05-22 Xcerion Ab NETWORK OPERATING SYSTEM
US8880564B2 (en) * 2007-10-11 2014-11-04 Microsoft Corporation Generic model editing framework
US8452789B2 (en) * 2007-10-15 2013-05-28 International Business Machines Corporation Searching a database
US20090112915A1 (en) * 2007-10-31 2009-04-30 Microsoft Corporation Class configuration for locally cached remote data binding
US7991768B2 (en) 2007-11-08 2011-08-02 Oracle International Corporation Global query normalization to improve XML index based rewrites for path subsetted index
US8468513B2 (en) * 2008-01-14 2013-06-18 Microsoft Corporation Specification, abstraction, and enforcement in a data center operating system
US20090210400A1 (en) * 2008-02-15 2009-08-20 Microsoft Corporation Translating Identifier in Request into Data Structure
US8561088B2 (en) * 2008-04-08 2013-10-15 Microsoft Corporation Registering network applications with an API framework
US20090254670A1 (en) * 2008-04-08 2009-10-08 Microsoft Corporation Providing access to network applications for standardized clients
US8972433B2 (en) * 2008-04-18 2015-03-03 Travelport Operations, Inc. Systems and methods for programmatic generation of database statements
US20090271765A1 (en) * 2008-04-29 2009-10-29 Microsoft Corporation Consumer and producer specific semantics of shared object protocols
US20090300649A1 (en) * 2008-05-30 2009-12-03 Microsoft Corporation Sharing An Object Among Multiple Applications
US8762420B2 (en) * 2008-06-20 2014-06-24 Microsoft Corporation Aggregation of data stored in multiple data stores
US8904363B2 (en) * 2008-06-27 2014-12-02 Microsoft Corporation Projecting software and data onto client
US8271938B2 (en) * 2008-09-03 2012-09-18 Microsoft Corporation Flexible base class library
US20100106684A1 (en) * 2008-10-26 2010-04-29 Microsoft Corporation Synchronization of a conceptual model via model extensions
JP4875043B2 (ja) * 2008-10-31 2012-02-15 株式会社東芝 フレームワークプログラム及びクライアント装置
US8145593B2 (en) 2008-12-11 2012-03-27 Microsoft Corporation Framework for web services exposing line of business applications
US20100153565A1 (en) * 2008-12-11 2010-06-17 Microsoft Corporation Connection management in line-of-business
US8533220B2 (en) * 2009-04-02 2013-09-10 Microsoft Corporation Retrieving data in batches from a line of business system
US20100318394A1 (en) * 2009-06-15 2010-12-16 Microsoft Corporation Executing transactions as an atomic unit
CN102473180B (zh) * 2009-07-30 2015-06-10 株式会社东芝 接收装置
US9361359B1 (en) * 2009-09-25 2016-06-07 Emc Corporation Accessing schema-free databases
US8943508B2 (en) * 2009-12-09 2015-01-27 International Business Machines Corporation Service oriented collaboration
US8909662B2 (en) * 2009-12-30 2014-12-09 Sybase, Inc. Message based mobile object with native PIM integration
JP5601629B2 (ja) * 2010-03-02 2014-10-08 日本電気株式会社 データ更新処理制御装置
US8739118B2 (en) 2010-04-08 2014-05-27 Microsoft Corporation Pragmatic mapping specification, compilation and validation
US9037615B2 (en) * 2010-05-14 2015-05-19 International Business Machines Corporation Querying and integrating structured and unstructured data
EP2397939A1 (en) 2010-06-17 2011-12-21 Siemens Aktiengesellschaft Accessing entities of a data access layer
CN103080945B (zh) * 2010-06-23 2016-06-01 皇家飞利浦电子股份有限公司 多个数据保护系统之间的互用性
US8825745B2 (en) 2010-07-11 2014-09-02 Microsoft Corporation URL-facilitated access to spreadsheet elements
US8260782B2 (en) * 2010-07-13 2012-09-04 International Business Machines Corporation Data element categorization in a service-oriented architecture
US8375009B2 (en) 2010-08-12 2013-02-12 Microsoft Corporation Scalable and extensible framework for data-driven web services
US9477730B2 (en) * 2010-10-28 2016-10-25 Microsoft Technology Licensing, Llc Web services runtime for dataset transformation
US9128768B2 (en) 2011-01-27 2015-09-08 Microsoft Technology Licensing, LCC Cloud based master data management
US9584949B2 (en) 2011-01-27 2017-02-28 Microsoft Technology Licensing, Llc Cloud based master data management architecture
US20120198018A1 (en) * 2011-01-27 2012-08-02 Microsoft Corporation Securely publishing data to network service
US8667024B2 (en) 2011-03-18 2014-03-04 International Business Machines Corporation Shared data management in software-as-a-service platform
EP2717187A4 (en) * 2011-05-24 2014-11-05 Nec Corp INFORMATION PROCESSING SYSTEM, ACCESS RIGHTS MANAGEMENT METHOD, INFORMATION PROCESSING DEVICE, AND CONTROL METHOD AND CONTROL PROGRAM THEREOF
CN102841906B (zh) * 2011-06-24 2016-12-07 阿里巴巴集团控股有限公司 一种整合的交易处理系统及交易处理方法
US8595267B2 (en) * 2011-06-27 2013-11-26 Amazon Technologies, Inc. System and method for implementing a scalable data storage service
CN103842950A (zh) * 2011-09-30 2014-06-04 惠普发展公司,有限责任合伙企业 跨越应用延伸会话
US20130097136A1 (en) * 2011-10-17 2013-04-18 Pie Digital, Inc. Method and system for acessing domain specific in-memory database management system
US8903874B2 (en) 2011-11-03 2014-12-02 Osr Open Systems Resources, Inc. File system directory attribute correction
US8843609B2 (en) 2011-11-09 2014-09-23 Microsoft Corporation Managing capacity in a data center by suspending tenants
US8689044B2 (en) * 2011-11-16 2014-04-01 Hewlett-Packard Development Company, L.P. SAS host controller cache tracking
US8965899B1 (en) * 2011-12-30 2015-02-24 Emc Corporation Progressive indexing for improved ad-hoc query performance
US8694826B2 (en) * 2012-02-29 2014-04-08 Hewlett-Packard Development Company, L.P. SAS host cache control
US9870384B2 (en) 2012-03-30 2018-01-16 International Business Machines Corporation Database system transaction management
US8849747B2 (en) * 2012-04-24 2014-09-30 Sap Ag Business process management
RU2490702C1 (ru) * 2012-05-02 2013-08-20 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Способ ускорения обработки множественных запросов типа select к rdf базе данных с помощью графического процессора
US20140082586A1 (en) * 2012-08-09 2014-03-20 FatFractal, Inc. Application development system and method for object models and datagraphs in client-side and server-side applications
US20140068547A1 (en) * 2012-09-05 2014-03-06 Microsoft Corporation Sharing application code across platforms
CN103019845B (zh) * 2012-12-10 2015-06-03 中国人民解放军理工大学 一种异构数据库平台下应用程序零修改迁移的方法
RU2519447C1 (ru) * 2012-12-14 2014-06-10 Общество с ограниченной ответственностью "Бизнес Семантика" (ООО "Бизнес Семантика") Способ обмена информацией между информационными системами
US8972334B2 (en) 2012-12-21 2015-03-03 International Business Machines Corporation Transparent data service suitable for modifying data storage capabilities in applications
US9513979B2 (en) * 2013-01-11 2016-12-06 Sap Se Mobile communication device providing interconnectivity between apps based on storage scope
US9614932B2 (en) 2013-03-14 2017-04-04 Microsoft Technology Licensing, Llc Managing and implementing web application data snapshots
US10705802B2 (en) 2013-03-20 2020-07-07 Microsoft Technology Licensing, Llc Extensible and queryable strong types
JP5889827B2 (ja) * 2013-04-25 2016-03-22 京セラドキュメントソリューションズ株式会社 画像形成装置及び画像形成方法
CN103440288A (zh) * 2013-08-16 2013-12-11 曙光信息产业股份有限公司 一种大数据存储方法及装置
US9430523B2 (en) 2013-09-06 2016-08-30 Sap Se Entity-relationship model extensions using annotations
US9575819B2 (en) 2013-09-06 2017-02-21 Sap Se Local buffers for event handlers
US9354948B2 (en) 2013-09-06 2016-05-31 Sap Se Data models containing host language embedded constraints
US9619552B2 (en) 2013-09-06 2017-04-11 Sap Se Core data services extensibility for entity-relationship models
US9176801B2 (en) 2013-09-06 2015-11-03 Sap Se Advanced data models containing declarative and programmatic constraints
US9639572B2 (en) 2013-09-06 2017-05-02 Sap Se SQL enhancements simplifying database querying
US9442977B2 (en) 2013-09-06 2016-09-13 Sap Se Database language extended to accommodate entity-relationship models
US9361407B2 (en) 2013-09-06 2016-06-07 Sap Se SQL extended with transient fields for calculation expressions in enhanced data models
CN104717179B (zh) * 2013-12-13 2018-01-30 中国移动通信集团河南有限公司 一种通信业务的处理方法及装置
US10795910B2 (en) 2013-12-31 2020-10-06 Sybase, Inc. Robust communication system for guaranteed message sequencing with the detection of duplicate senders
US9830329B2 (en) 2014-01-15 2017-11-28 W. Anthony Mason Methods and systems for data storage
US10152605B2 (en) * 2014-05-21 2018-12-11 Siddharth Shetye Systems and methods for front-end and back-end data security protocols
EP3158447B1 (en) * 2014-06-23 2022-03-16 Oracle International Corporation System and method for supporting multiple partition edit sessions in a multitenant application server environment
US9807143B2 (en) 2014-08-04 2017-10-31 Avaya Inc. Systems and methods for event routing and correlation
CN104536963B (zh) * 2014-11-13 2019-01-25 中国建设银行股份有限公司 一种存储过程的调度方法和系统
US10909069B2 (en) * 2015-01-05 2021-02-02 Iguazio Systems Ltd. Service oriented data management and architecture
US9953070B1 (en) 2015-04-05 2018-04-24 Simply Data Now Inc. Enterprise resource planning (ERP) system data extraction, loading, and directing
CA2982860C (en) * 2015-05-06 2023-07-04 9 Spokes Knowledge Limited Methods and systems for use in monitoring the operations of a business
US11829349B2 (en) * 2015-05-11 2023-11-28 Oracle International Corporation Direct-connect functionality in a distributed database grid
CN105138327A (zh) * 2015-08-21 2015-12-09 青岛海信移动通信技术股份有限公司 一种跨平台web应用的打包方法
US10445350B2 (en) 2015-11-15 2019-10-15 Microsoft Technology Licensing, Llc Optimizing content for consistent presentation through collaboration database service
US11550632B2 (en) * 2015-12-24 2023-01-10 Intel Corporation Facilitating efficient communication and data processing across clusters of computing machines in heterogeneous computing environment
US10262054B2 (en) * 2016-01-21 2019-04-16 Microsoft Technology Licensing, Llc Database and service upgrade without downtime
CA2954037A1 (en) * 2016-01-21 2017-07-21 Wal-Mart Stores, Inc. Codeless information service for abstract retrieval of disparate data
US10452634B2 (en) 2016-02-01 2019-10-22 Microsoft Technology Licensing, Llc Provide consumer oriented data service
JP6652477B2 (ja) * 2016-10-03 2020-02-26 日立オートモティブシステムズ株式会社 車載処理装置
CN106600170A (zh) * 2016-12-30 2017-04-26 江苏瑞中数据股份有限公司 一种适用于油气长输管道的自动化数据模型的实现方法
WO2018134680A1 (en) * 2017-01-17 2018-07-26 Clough Limited System and method for integrating disparate computer systems and applications
CN108243180B (zh) * 2017-09-30 2020-06-30 平安科技(深圳)有限公司 银行保单数据对接方法及保单数据服务器
US10992593B2 (en) 2017-10-06 2021-04-27 Bank Of America Corporation Persistent integration platform for multi-channel resource transfers
US10826890B2 (en) 2017-10-06 2020-11-03 Bank Of America Corporation Multi-level authentication system with persistent integration platform
RU2663474C1 (ru) * 2018-01-31 2018-08-06 Федеральное государственное казенное военное образовательное учреждение высшего образования "Академия Федеральной службы охраны Российской Федерации" (Академия ФСО России) Способ поиска подобных файлов, размещённых на устройствах хранения данных
CN108897752B (zh) * 2018-05-07 2022-05-20 中国电子科技集团公司电子科学研究院 面向智能化的电子信息系统体系结构描述方法
JP6950635B2 (ja) 2018-07-03 2021-10-13 オムロン株式会社 コンパイル装置およびコンパイル方法
JP6950634B2 (ja) 2018-07-03 2021-10-13 オムロン株式会社 制御装置および制御方法
CN109062559B (zh) * 2018-07-17 2022-05-24 艾普阳科技(深圳)有限公司 一种数据处理方法和装置
WO2020076964A1 (en) * 2018-10-09 2020-04-16 iDiscovery Solutions, Inc. System and method of data transformation
US10592485B1 (en) 2018-12-31 2020-03-17 Atlassian Pty Ltd Property-based deletion of digital data
CN110096543B (zh) * 2019-05-06 2021-07-09 软通智慧科技有限公司 应用程序的数据操作方法、装置、服务器和介质
WO2020255084A1 (en) * 2019-06-19 2020-12-24 Calgary Scientific Inc. Software collaboration platform for advanced workflows and digital twins
CN112202701B (zh) * 2019-07-08 2022-08-30 腾讯科技(深圳)有限公司 一种数据处理方法、装置、服务器、终端、系统及存储介质
CN111756625B (zh) * 2020-05-11 2023-05-23 宁波吉利汽车研究开发有限公司 基于中央网关的功能转服务方法、装置、系统、电子设备及存储介质
KR102175183B1 (ko) 2020-06-09 2020-11-05 이창근 기업 데이터 통합 관리 방법, 장치, 및 시스템
US11302327B2 (en) * 2020-06-22 2022-04-12 Bank Of America Corporation Priori knowledge, canonical data forms, and preliminary entrentropy reduction for IVR
US11546381B1 (en) * 2021-11-08 2023-01-03 Beijing Bytedance Network Technology Co., Ltd. Unified data security labeling framework
US11941005B2 (en) * 2022-04-05 2024-03-26 Sap Se Data artifact instances faciliating flexible data access
US11907688B2 (en) * 2022-05-11 2024-02-20 RDW Advisors, LLC. System and method for a heterogenous software platform
TWI814425B (zh) * 2022-06-07 2023-09-01 群鼎團隊有限公司 應用程式介面或資料集之介面平台操作方法、系統、電腦可讀取媒體

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6523027B1 (en) * 1999-07-30 2003-02-18 Accenture Llp Interfacing servers in a Java based e-commerce architecture
US20030055808A1 (en) * 2001-09-18 2003-03-20 Sun Microsystems, Inc. Methods, systems, and articles of manufacture for implementing a runtime logging service storage infrastructure
TW200427258A (en) * 2003-05-22 2004-12-01 Far Eastone Telecomm Co Ltd Common service platform and software
TWI226771B (en) * 2001-05-24 2005-01-11 Ibm Service application architecture for integrated network service providers

Family Cites Families (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5449293A (en) 1992-06-02 1995-09-12 Alberta Research Council Recognition training system
US5576954A (en) 1993-11-05 1996-11-19 University Of Central Florida Process for determination of text relevancy
US5560005A (en) 1994-02-25 1996-09-24 Actamed Corp. Methods and systems for object-based relational distributed databases
US5627979A (en) 1994-07-18 1997-05-06 International Business Machines Corporation System and method for providing a graphical user interface for mapping and accessing objects in data stores
US5799309A (en) 1994-12-29 1998-08-25 International Business Machines Corporation Generating an optimized set of relational queries fetching data in an object-relational database
US5717913A (en) 1995-01-03 1998-02-10 University Of Central Florida Method for detecting and extracting text data using database schemas
WO1999009494A1 (en) 1997-08-14 1999-02-25 Aoraki Corporation Limited Relational database coexistence in object oriented environments
KR100269258B1 (ko) 1997-10-21 2000-10-16 정선종 프로세스 방법론을 위한 통합 case 정보저장소 메타 모델시스템 및 그 통합 지원 방법
US6128624A (en) 1997-11-12 2000-10-03 Ncr Corporation Collection and integration of internet and electronic commerce data in a database during web browsing
US6175837B1 (en) 1998-06-29 2001-01-16 Sun Microsystems, Inc. Object-relational mapping toll that processes views
US6385618B1 (en) 1997-12-22 2002-05-07 Sun Microsystems, Inc. Integrating both modifications to an object model and modifications to a database into source code by an object-relational mapping tool
US6735593B1 (en) 1998-11-12 2004-05-11 Simon Guy Williams Systems and methods for storing data
US6341277B1 (en) 1998-11-17 2002-01-22 International Business Machines Corporation System and method for performance complex heterogeneous database queries using a single SQL expression
US6341289B1 (en) 1999-05-06 2002-01-22 International Business Machines Corporation Object identity and partitioning for user defined extents
US6754885B1 (en) 1999-05-17 2004-06-22 Invensys Systems, Inc. Methods and apparatus for controlling object appearance in a process control configuration system
US6847980B1 (en) 1999-07-03 2005-01-25 Ana B. Benitez Fundamental entity-relationship models for the generic audio visual data signal description
US7152228B2 (en) * 1999-07-08 2006-12-19 Science Applications International Corporation Automatically generated objects within extensible object frameworks and links to enterprise resources
US6633878B1 (en) * 1999-07-30 2003-10-14 Accenture Llp Initializing an ecommerce database framework
US6601233B1 (en) * 1999-07-30 2003-07-29 Accenture Llp Business components framework
US6609128B1 (en) * 1999-07-30 2003-08-19 Accenture Llp Codes table framework design in an E-commerce architecture
US6556983B1 (en) 2000-01-12 2003-04-29 Microsoft Corporation Methods and apparatus for finding semantic information, such as usage logs, similar to a query using a pattern lattice data space
AU2001236998A1 (en) 2000-02-11 2001-08-20 Acta Technologies, Inc. Nested relational data model
WO2001075669A1 (en) 2000-03-31 2001-10-11 British Telecommunications Public Limited Company Resource modelling
US6591275B1 (en) 2000-06-02 2003-07-08 Sun Microsystems, Inc. Object-relational mapping for tables without primary keys
JP2004531780A (ja) * 2000-06-22 2004-10-14 マイクロソフト コーポレーション 分散型コンピューティングサービスプラットフォーム
US6795825B2 (en) 2000-09-12 2004-09-21 Naphtali David Rishe Database querying system and method
US6594666B1 (en) * 2000-09-25 2003-07-15 Oracle International Corp. Location aware application development framework
US20050267901A1 (en) 2000-11-10 2005-12-01 Kevin Irlen Distributed single schema data modeling system and method
US20030105732A1 (en) 2000-11-17 2003-06-05 Kagalwala Raxit A. Database schema for structure query language (SQL) server
US6957230B2 (en) 2000-11-30 2005-10-18 Microsoft Corporation Dynamically generating multiple hierarchies of inter-object relationships based on object attribute values
US6711579B2 (en) 2001-04-20 2004-03-23 Sree Ayyanar Spinning And Weaving Mills Limited Data storage schema independent programming for data retrieval using semantic bridge
US7043481B2 (en) 2001-06-01 2006-05-09 Thought, Inc. System, method and software for creating, maintaining, navigating or manipulating complex data objects and their data relationships
US20030005019A1 (en) 2001-06-27 2003-01-02 Kuldipsingh Pabla Application frameworks for mobile devices
US20030046266A1 (en) 2001-07-26 2003-03-06 Ward Mullins System, method and software for creating or maintaining distributed transparent persistence of complex data objects and their data relationships
US6907433B2 (en) 2001-08-01 2005-06-14 Oracle International Corp. System and method for managing object to relational one-to-many mapping
US7158994B1 (en) 2001-09-28 2007-01-02 Oracle International Corporation Object-oriented materialized views
WO2003034228A1 (en) 2001-10-18 2003-04-24 Bea Systems, Inc. System and method for implementing a schema object model in application integration
US6836777B2 (en) 2001-11-15 2004-12-28 Ncr Corporation System and method for constructing generic analytical database applications
US20030200533A1 (en) 2001-11-28 2003-10-23 Roberts Andrew F. Method and apparatus for creating software objects
US7162721B2 (en) 2001-12-03 2007-01-09 Sun Microsystems, Inc. Application-independent API for distributed component collaboration
US7062502B1 (en) 2001-12-28 2006-06-13 Kesler John N Automated generation of dynamic data entry user interface for relational database management systems
US7058655B2 (en) 2002-01-11 2006-06-06 Sun Microsystems, Inc. Determining object graph and object graph projection
US20030140058A1 (en) 2002-01-18 2003-07-24 Vitria Technology, Inc. Method and apparatus for sharing information between applications using common objects
US7185317B2 (en) * 2002-02-14 2007-02-27 Hubbard & Wells Logical data modeling and integrated application framework
US20040006549A1 (en) 2002-03-22 2004-01-08 Ward Mullins Micro edition dynamic object-driven database manipulation and mapping system
US7069260B2 (en) 2002-05-15 2006-06-27 Motorola, Inc. QOS framework system
US6910032B2 (en) 2002-06-07 2005-06-21 International Business Machines Corporation Parallel database query processing for non-uniform data sources via buffered access
US7039898B2 (en) * 2002-07-12 2006-05-02 Netspective Communications, Llc Computer system for performing reusable software application development from a set of declarative executable specifications
US7149733B2 (en) 2002-07-20 2006-12-12 Microsoft Corporation Translation of object queries involving inheritence
US7162469B2 (en) 2002-07-20 2007-01-09 Microsoft Corporation Querying an object for properties
US7412436B2 (en) 2002-07-20 2008-08-12 Microsoft Corporation System and interface for manipulating a database
US7096216B2 (en) 2002-07-20 2006-08-22 Microsoft Corporation Performing operations on a set of objects in a database system
US7130856B2 (en) 2002-07-20 2006-10-31 Microsoft Corporation Map and data location provider
US7191182B2 (en) 2002-07-20 2007-03-13 Microsoft Corporation Containment hierarchy in a database system
US7711675B2 (en) 2002-07-22 2010-05-04 Microsoft Corporation Database simulation of data types
US7730446B2 (en) 2003-03-12 2010-06-01 Microsoft Corporation Software business process model
US7054877B2 (en) 2003-03-31 2006-05-30 International Business Machines Corporation Dealing with composite data through data model entities
US7412569B2 (en) 2003-04-10 2008-08-12 Intel Corporation System and method to track changes in memory
AU2003901968A0 (en) 2003-04-23 2003-05-15 Wolfgang Flatow A universal database schema
EP1482418A1 (en) 2003-05-28 2004-12-01 Sap Ag A data processing method and system
EP1482419A1 (en) 2003-05-28 2004-12-01 Sap Ag Data processing system and method for application programs in a data warehouse
FI115676B (fi) 2003-07-28 2005-06-15 Nolics Oy Menetelmä relaatiotyyppisen tiedon oliomuotoiseksi käsittelemiseksi
US7349913B2 (en) 2003-08-21 2008-03-25 Microsoft Corporation Storage platform for organizing, searching, and sharing data
US7599948B2 (en) 2003-10-10 2009-10-06 Oracle International Corporation Object relational mapping layer
US7454428B2 (en) 2003-10-29 2008-11-18 Oracle International Corp. Network data model for relational database management system
US7406464B2 (en) 2003-12-08 2008-07-29 Ebay Inc. Custom caching
US7219102B2 (en) 2003-12-22 2007-05-15 International Business Machines Corporation Method, computer program product, and system converting relational data into hierarchical data structure based upon tagging trees
US7536409B2 (en) 2005-02-15 2009-05-19 International Business Machines Corporation Having a single set of object relational mappings across different instances of the same schemas
US20060195460A1 (en) 2005-02-28 2006-08-31 Microsoft Corporation Data model for object-relational data
US7685561B2 (en) 2005-02-28 2010-03-23 Microsoft Corporation Storage API for a common data platform
US7853961B2 (en) 2005-02-28 2010-12-14 Microsoft Corporation Platform for data services across disparate application frameworks
US7676493B2 (en) 2005-09-07 2010-03-09 Microsoft Corporation Incremental approach to an object-relational solution
US7526501B2 (en) 2006-05-09 2009-04-28 Microsoft Corporation State transition logic for a persistent object graph
US20070266041A1 (en) 2006-05-11 2007-11-15 Microsoft Corporation Concept of relationshipsets in entity data model (edm)

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6523027B1 (en) * 1999-07-30 2003-02-18 Accenture Llp Interfacing servers in a Java based e-commerce architecture
TWI226771B (en) * 2001-05-24 2005-01-11 Ibm Service application architecture for integrated network service providers
US20030055808A1 (en) * 2001-09-18 2003-03-20 Sun Microsystems, Inc. Methods, systems, and articles of manufacture for implementing a runtime logging service storage infrastructure
TW200427258A (en) * 2003-05-22 2004-12-01 Far Eastone Telecomm Co Ltd Common service platform and software

Also Published As

Publication number Publication date
JP2006244488A (ja) 2006-09-14
AU2006200230B2 (en) 2011-02-17
RU2425417C2 (ru) 2011-07-27
CO5790183A1 (es) 2007-08-31
AU2006200230A1 (en) 2006-09-14
RU2006102526A (ru) 2007-08-10
MXPA06001208A (es) 2006-09-19
NO20060072L (no) 2006-08-29
US20060195476A1 (en) 2006-08-31
EP1696352A2 (en) 2006-08-30
CA2533942A1 (en) 2006-08-28
EG25837A (en) 2012-09-03
SG125173A1 (en) 2006-09-29
NZ544991A (en) 2007-07-27
US7853961B2 (en) 2010-12-14
ZA200600754B (en) 2008-04-30
BRPI0600191A (pt) 2006-10-24
KR101224670B1 (ko) 2013-01-21
KR20060095447A (ko) 2006-08-31
IL173430A0 (en) 2006-06-11
CN1828527A (zh) 2006-09-06
EP1696352A3 (en) 2007-05-09
CN1828527B (zh) 2010-09-29
TW200632699A (en) 2006-09-16
MY149824A (en) 2013-10-14

Similar Documents

Publication Publication Date Title
TWI405091B (zh) 用於跨不同應用程式架構之資料服務的電腦系統及電腦可實施方法
US20070219976A1 (en) Extensible query language with support for rich data types
Casters et al. Pentaho Kettle solutions: building open source ETL solutions with Pentaho Data Integration
EP1625513B1 (en) Rules framework for definition and execution of end-user rules logic
US7577934B2 (en) Framework for modeling and providing runtime behavior for business software applications
JP5065056B2 (ja) ワークフローを処理するための方法、コンピュータ・プログラム、およびシステム(ワークフロー・システムへのデータ管理動作の統合)
US7730446B2 (en) Software business process model
JP4583377B2 (ja) ハードウェア/ソフトウェアインターフェースシステムにより管理可能な情報のユニットに対する関係および階層の同期サービスを実現するシステムおよび方法
US8225282B1 (en) Semantic-based, service-oriented system and method of developing, programming and managing software modules and software solutions
US7536673B2 (en) Application business object processing
US20070094248A1 (en) System and method for managing content by workflows
Goh et al. ECA rule-based support for workflows
US20090049422A1 (en) Method and system for modeling and developing a software application
EP1601164A1 (en) WEB service application protocol and SOAP processing model
US7421699B2 (en) Service meta model for an enterprise service architecture
US20080201234A1 (en) Live entities internet store service
MXPA06001984A (es) Sistemas y metodos para conectar con una interfase programas de aplicacion una plataforma de almacenamiento basada en elementos.
JP2007537512A (ja) エンドユーザルールロジックを定義し、実行するルールフレームワーク
US20070073674A1 (en) System and method for providing federated events for content management systems
Schmutz et al. Service-oriented architecture: an integration blueprint: a real-world SOA strategy for the integration of heterogeneous enterprise systems: successfully implement your own enterprise integration architecture using the trivadis integration architecture blueprint
JP4583375B2 (ja) 同期スキーマの実装のためのシステム
Hermes et al. Data Access with SQLite and Data Binding
Mahjourian An architectural style for data-driven systems
Kanagasabai Towards online, collaborative, multi-view modelling using collabCORE
Petroutsos et al. Visual Basic® .NET Developer's Handbook™

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees