TWI553493B - 搜尋軟體應用程式之方法及其系統 - Google Patents
搜尋軟體應用程式之方法及其系統 Download PDFInfo
- Publication number
- TWI553493B TWI553493B TW103126881A TW103126881A TWI553493B TW I553493 B TWI553493 B TW I553493B TW 103126881 A TW103126881 A TW 103126881A TW 103126881 A TW103126881 A TW 103126881A TW I553493 B TWI553493 B TW I553493B
- Authority
- TW
- Taiwan
- Prior art keywords
- application
- app
- server
- software application
- data
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/60—Subscription-based services using application servers or record carriers, e.g. SIM application toolkits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2101—Auditing as a secondary aspect
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W88/00—Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
- H04W88/18—Service support devices; Network management devices
- H04W88/182—Network node acting on behalf of an other network entity, e.g. proxy
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本發明係關於一種軟體應用程式,尤指一種提供搜尋引擎服務,以尋找想要之軟體應用程式之方法及其系統。
搜尋引擎是人們上網尋找資訊時的重要工具,而行動應用程式(下稱為App)也因為智慧型手機的廣泛使用而變得普及。今日,App是預先搭載於行動裝置,或者是透過網路下載而取得;諸如蘋果公司的「App Store」、谷歌的「Google Play」或者是騰訊的「應用寶(bao.myapp.com)」等應用程式發布平台(下稱為App商店),都可供使用者瀏覽及下載其感興趣的App。App商店通常是將App分門別類,並且提供傳統的搜尋工具讓使用者透過關鍵字尋找其感興趣的App。App的標題以及內容描述通常是由開發者所提供,而App商店的傳統搜尋工具會檢視這些App的標題以及內容描述,以比對是否符合使用者所輸入的關鍵字。一些App商店甚至提供網頁介面給開發者上傳與編輯其App的標題以及內容描述,例如Google Play的「Edit Application」和App Store的「Manage Your Apps」。
除了與App有關的靜態資料(例如App的標題或內容描述)之外,當一個App被安裝並執行時,它所生成的數據(下稱為應用程式資料)可具有動態之性質。具體而言,當一個App運行於一個行動裝置,其會因各種觸發機制而產生應用程式資料,像是使用者的行為即是其中一例。舉例來說,如果想利用氣象App查詢天氣預報,使用者可透過App介面輸入他的所選擇的地點,氣象App便會傳送出相關的數據資料,像是這個例子中關於該地點的天氣預報。換句話說,應用程式資料得以因使用者的操作而為動態之性質,而且這些應用程式資料可以是來自於與App相聯繫的一個或多個應用程式伺服器,或者是由App自身所產生。
如上所述,建立於App商店中的傳統搜尋工具受限於僅能使用關鍵字對靜態資料進行搜尋,其搜尋範圍並沒有延伸至應用程式資料;換言之,傳統搜尋工具並不能對與App相關的應用程式封包檔案(application package file)進行搜尋(例如apk檔或是ipa檔),也不能對使用者於電子裝置上執行或執行完畢之App所產生的應用程式資料進行搜尋。這也意味著,其他使用者無法發現或搜尋到App產生的應用程式資料,而這些應用程式資料對其他使用者來說,可能是具有價值的資訊。
本發明揭示了一種搜尋軟體應用程式或App之系統。此系統包含一或多個軟體應用程式、一或多個伺服器、一或多個排程器、一或多個資料庫、一或多個電腦程式以及一或多個搜尋引擎。該些伺服器係用以執行該些軟體應用程式;該些排程器係用以依據一排程策略而排程該些伺服器以執行該些軟體應用程式;該些電腦程式係用以收集該些軟體應用程式的應用程式資料,並將應用程式資料儲存於該些資料庫當中;而該些搜尋引擎則是用於提供搜尋服務,以找出那些具有經電腦程式收集、或是儲存於資料庫當中之應用程式資料之軟體應用程式。
本發明揭示了一種搜尋軟體應用程式之方法。在此方法中,一或多個軟體應用程式可被依據一排程策略而排程執行,接著依據該排程策略執行該些軟體應用程式,該些軟體應用程式的應用程式資料被收集,並將收集到的應用程式資料儲存,然後接收到一查詢指令,使所儲存的應用程式資料被搜尋,再將與本次查詢所搜尋到的應用程式資料相對應之軟體應用程式的資訊發送出。
本發明提供了一種搜尋應用程式的方法。在此方法中,至少一個軟體應用程式可被依據一排程策略而排程執行,接著執行該些軟體應用程式,以收集來自該些軟體應用程式、來自耦合於該軟體應用程式之一資料收集模組且/或來自耦合於該些軟體應用程式之一應用程式伺服器之應用程式資料。將收集到的應用程式資料儲存,然後接收到一查詢指令,使所儲存的應用程式資料被搜尋,再將與本次查詢所搜尋到的應用程式資料相對應之軟體應用程式的資訊發送出。
本發明提供了一種搜尋應用程式的方法。在此方法中,來自於一或多個應用程式伺服器之軟體應用程式之應用程式資料被收集,將收集到的資料儲存,然後接收到一查詢指令,使所儲存的資料被搜尋,再將與本次查詢所搜尋到的資料相對應之軟體應用程式的資訊發送出。
1‧‧‧App
100‧‧‧伺服器叢集
100a‧‧‧網路應用程式伺服器
100b‧‧‧應用程式搜尋引擎伺服器
100c‧‧‧資料庫管理伺服器
100d‧‧‧檔案管理伺服器
100e‧‧‧行動作業系統模擬伺服器
10‧‧‧第一使用者
10a‧‧‧智慧型手機
10b‧‧‧平板電腦
10c‧‧‧筆記型電腦
10d‧‧‧個人電腦
118‧‧‧儲存裝置
118a‧‧‧電腦可讀式介質
12‧‧‧記憶體
131‧‧‧螢幕
131a‧‧‧使用者介面
132‧‧‧輔助全球衛星定位系統模組
133‧‧‧輸入/輸出系統
133a‧‧‧顯示器控制器
133b‧‧‧輸入控制器
134‧‧‧周邊裝置
135‧‧‧處理器
137‧‧‧記憶體控制器
138‧‧‧輸入模組或輸入裝置
139‧‧‧記憶體
14‧‧‧資料路徑
140‧‧‧射頻模組
16‧‧‧記憶體控制器
160‧‧‧資料路徑
17‧‧‧通訊埠
18‧‧‧處理器
19‧‧‧儲存裝置
19x‧‧‧儲存裝置
200‧‧‧應用程式伺服器
20‧‧‧第二使用者
20a‧‧‧智慧型手機
20b‧‧‧平板電腦
20c‧‧‧筆記型電腦
20d‧‧‧個人電腦
201‧‧‧應用程式伺服器
202‧‧‧應用程式伺服器
2104‧‧‧應用程式圖標
2106‧‧‧應用程式名稱或描述
2108‧‧‧應用程式圖標
2110‧‧‧應用程式名稱或描述
2112‧‧‧應用程式圖標
2114‧‧‧應用程式名稱或描述
2118‧‧‧內容
2120‧‧‧內容
2112‧‧‧內容
2124‧‧‧地圖
2222‧‧‧範例
2223‧‧‧範例
2224‧‧‧範例
218‧‧‧儲存裝置
218a‧‧‧電腦可讀式介質
231‧‧‧螢幕
231a‧‧‧使用者介面
232‧‧‧輔助全球衛星定位系統模組
233‧‧‧輸入/輸出系統
233a‧‧‧顯示器控制器
233b‧‧‧輸入控制器
234‧‧‧周邊裝置
235‧‧‧處理器
237‧‧‧記憶體控制器
238‧‧‧輸入模組或輸入裝置
239‧‧‧記憶體
240‧‧‧射頻模組
260‧‧‧資料路徑
30‧‧‧網路
300-1~7‧‧‧第一~七欄位
3000‧‧‧邏輯表/資料收集模組或架構
320‧‧‧列/小表
321~324‧‧‧小表
400‧‧‧虛擬機器
402‧‧‧第一模組
404‧‧‧第二模組
405‧‧‧腳本
406‧‧‧第三模組
408‧‧‧第四模組
500‧‧‧網路應用程式
5000‧‧‧運算裝置
502‧‧‧搜尋按鈕/搜尋欄位
600‧‧‧應用程式搜尋引擎
610‧‧‧資料收集代理伺服器
630‧‧‧包裝器
640‧‧‧超管理器模組
650‧‧‧機器人模組
660‧‧‧排程器
670App‧‧‧安全檢查模組
701a‧‧‧伺服器
701b‧‧‧伺服器
702a‧‧‧伺服器
702b‧‧‧伺服器
703a‧‧‧伺服器
703b‧‧‧伺服器
704a‧‧‧伺服器
704b‧‧‧伺服器
710‧‧‧排程器
720‧‧‧虛擬機器管理員
730‧‧‧可配置的軟體定義網路
740‧‧‧儲存裝置
75a‧‧‧運行單元
75b‧‧‧運行單元
750‧‧‧包裝器
760‧‧‧應用程式封包儲存模組
770‧‧‧整合性代理程式
780‧‧‧虛擬機器
790‧‧‧單一虛擬機器
80A、801~806‧‧‧階段
812~815‧‧‧階段
810‧‧‧掛勾伺服器
820‧‧‧掛勾程式
830‧‧‧App
840‧‧‧函數庫
850‧‧‧系統/核心呼叫
88‧‧‧虛擬機器
88a‧‧‧超管理器
88c‧‧‧超管理器
888‧‧‧資料庫
888’‧‧‧資料庫
8888‧‧‧資料儲存庫
89‧‧‧虛擬機器
89a‧‧‧超管理器
90-1~5‧‧‧物件
90-1p~5p‧‧‧圖片
901~907‧‧‧階段
911~923‧‧‧階段
931~934‧‧‧階段
941~943‧‧‧階段
951~956‧‧‧階段
900‧‧‧容器
910‧‧‧背景或廣告
918‧‧‧欄標
920‧‧‧欄標
922‧‧‧欄標
924‧‧‧欄標
926‧‧‧動作條或橫幅
988‧‧‧歡迎畫面
100‧‧‧伺服器叢集
100a‧‧‧網路應用程式伺服器
100b‧‧‧應用程式搜尋引擎伺服器
100c‧‧‧資料庫管理伺服器
100d‧‧‧檔案管理伺服器
100e‧‧‧行動作業系統模擬伺服器
10‧‧‧第一使用者
10a‧‧‧智慧型手機
10b‧‧‧平板電腦
10c‧‧‧筆記型電腦
10d‧‧‧個人電腦
118‧‧‧儲存裝置
118a‧‧‧電腦可讀式介質
12‧‧‧記憶體
131‧‧‧螢幕
131a‧‧‧使用者介面
132‧‧‧輔助全球衛星定位系統模組
133‧‧‧輸入/輸出系統
133a‧‧‧顯示器控制器
133b‧‧‧輸入控制器
134‧‧‧周邊裝置
135‧‧‧處理器
137‧‧‧記憶體控制器
138‧‧‧輸入模組或輸入裝置
139‧‧‧記憶體
14‧‧‧資料路徑
140‧‧‧射頻模組
16‧‧‧記憶體控制器
160‧‧‧資料路徑
17‧‧‧通訊埠
18‧‧‧處理器
19‧‧‧儲存裝置
19x‧‧‧儲存裝置
200‧‧‧應用程式伺服器
20‧‧‧第二使用者
20a‧‧‧智慧型手機
20b‧‧‧平板電腦
20c‧‧‧筆記型電腦
20d‧‧‧個人電腦
201‧‧‧應用程式伺服器
202‧‧‧應用程式伺服器
2104‧‧‧應用程式圖標
2106‧‧‧應用程式名稱或描述
2108‧‧‧應用程式圖標
2110‧‧‧應用程式名稱或描述
2112‧‧‧應用程式圖標
2114‧‧‧應用程式名稱或描述
2118‧‧‧內容
2120‧‧‧內容
2112‧‧‧內容
2124‧‧‧地圖
2222‧‧‧範例
2223‧‧‧範例
2224‧‧‧範例
218‧‧‧儲存裝置
218a‧‧‧電腦可讀式介質
231‧‧‧螢幕
231a‧‧‧使用者介面
232‧‧‧輔助全球衛星定位系統模組
233‧‧‧輸入/輸出系統
233a‧‧‧顯示器控制器
233b‧‧‧輸入控制器
234‧‧‧周邊裝置
235‧‧‧處理器
237‧‧‧記憶體控制器
238‧‧‧輸入模組或輸入裝置
239‧‧‧記憶體
240‧‧‧射頻模組
260‧‧‧資料路徑
30‧‧‧網路
300-1~7‧‧‧第一~七欄位
3000‧‧‧邏輯表/資料收集模組或架構
320‧‧‧列/小表
321~324‧‧‧小表
400‧‧‧虛擬機器
402‧‧‧第一模組
404‧‧‧第二模組
405‧‧‧腳本
406‧‧‧第三模組
408‧‧‧第四模組
500‧‧‧網路應用程式
5000‧‧‧運算裝置
502‧‧‧搜尋按鈕/搜尋欄位
600‧‧‧應用程式搜尋引擎
610‧‧‧資料收集代理伺服器
630‧‧‧包裝器
640‧‧‧超管理器模組
650‧‧‧機器人模組
660‧‧‧排程器
670App‧‧‧安全檢查模組
701a‧‧‧伺服器
701b‧‧‧伺服器
702a‧‧‧伺服器
702b‧‧‧伺服器
703a‧‧‧伺服器
703b‧‧‧伺服器
704a‧‧‧伺服器
704b‧‧‧伺服器
710‧‧‧排程器
720‧‧‧虛擬機器管理員
730‧‧‧可配置的軟體定義網路
740‧‧‧儲存裝置
75a‧‧‧運行單元
75b‧‧‧運行單元
750‧‧‧包裝器
760‧‧‧應用程式封包儲存模組
770‧‧‧整合性代理程式
780‧‧‧虛擬機器
790‧‧‧單一虛擬機器
80A、801~806‧‧‧階段
812~815‧‧‧階段
810‧‧‧掛勾伺服器
820‧‧‧掛勾程式
830‧‧‧App
840‧‧‧函數庫
850‧‧‧系統/核心呼叫
88‧‧‧虛擬機器
88a‧‧‧超管理器
88c‧‧‧超管理器
888‧‧‧資料庫
888’‧‧‧資料庫
8888‧‧‧資料儲存庫
89‧‧‧虛擬機器
89a‧‧‧超管理器
90-1~5‧‧‧物件
90-1p~5p‧‧‧圖片
901~907‧‧‧階段
911~923‧‧‧階段
931~934‧‧‧階段
941~943‧‧‧階段
951~956‧‧‧階段
900‧‧‧容器
910‧‧‧背景或廣告
918‧‧‧欄標
920‧‧‧欄標
922‧‧‧欄標
924‧‧‧欄標
926‧‧‧動作條或橫幅
988‧‧‧歡迎畫面
本發明如前之概述以及於後之詳細描述在閱讀時,經結合圖式將更好理解。故謹佐以較佳之實施例揭示於圖式中;然而,本發明並不限圖式中之排列方式和手段。圖式包含:
第1圖:其係依據本發明之一實施例透過應用程式資料搜尋App之聯網系統之概念圖;
第2圖:其係依據本發明之一實施例中,基於應用程式資料搜尋App之聯網系統架構示意圖;
第3A、3B圖:其係依據本發明之一實施例之資料架構示意圖;
第3C、3D圖:其係依據本發明之一實施例中,資料架構之邏輯表及其一列之示意圖;
第4A圖:其係依據本發明之一實施例中,基於應用程式資料搜尋App之聯網系統架構示意圖;
第4B圖:其係依據本發明之一實施例中,基於應用程式資料搜尋App之聯網系統架構示意圖;
第4C圖:其係依據本發明之一實施例中,基於應用程式資料搜尋App之聯網系統架構示意圖;
第4D圖:其係依據本發明之一實施例中,基於應用程式資料搜尋App之聯網系統架構示意圖;
第4E圖:其係為本發明之一實施例中,具資料收集架構之系統架構示意圖;
第4F圖:其係依據本發明之一實施例中,具有資料收集代理程式設定於一伺服器與一網路之間以提取及/或快取應用程式資料之系統架構示意圖;
第4G圖:其係依據本發明之一實施例中,具有可用於一伺服器中以將每一App與一運行應用程式接口(runner API)包裝起來之一包裝器之一系統之架構示意圖;
第4H圖:其係依據本發明之一實施例中,具有一超管理器模組以協助一伺服器之虛擬機器執行App之系統架構示意圖;
第4I圖:其係依據本發明之一實施例中,具有一機器人模組整合第4A圖中之一腳本、一第三模組、一第二模組以及一第一模組之系統架構示意圖;
第4J圖:其係依據本發明之一實施例中,具有一排程器協助執行App之一系統之架構示意圖;
第4K圖:其係依據本發明之一實施例中,具有一App安全檢查模組以檢察軟體應用程式或App之安全性之一系統之架構示意圖;
第5A~5E圖:其係依據本發明一實施例中,使用者介面之範例之示意圖;
第6A~6C圖:其係依據本發明之一實施例中,應用程式搜尋引擎所提供之服務之使用者介面之範例之示意圖;
第7A~7H圖:其係依據本發明之一實施例中,使用單一虛擬機器或複數虛擬機器執行一或多個App之示意圖;
第8A圖:其係為使用一資料收集模組以在使用者階層提取或截取應用程式資料之作業系統之概念圖;
第8B圖:其係為使用一資料收集模組以在核心階層提取或截取應用程式資料之作業系統之概念圖;
第9A、9B圖:其係為使用第7A~7H圖中之代理程式而執行資料收集模組之任務之範例示意圖;
第9C圖:其係為資料收集模組或第7A~7H圖中之代理程式在提取或截取與一App相關之資料/內容之流程圖;
第9D圖:其係為一排程器運作之流程圖;以及
第9E圖:其係為一虛擬機器管理員運作之流程圖。
以下為本發明之詳細實施例說明並佐以圖式,各圖式中相同的符號係代表相同或相似的物件。
第1圖為本發明一實施例之系統之概念圖,此系統可包含一個伺服器叢集100(或是一雲端);一應用程式伺服器200;一第一使用者10以及一第二使用者20,其中任兩者可透過一網路30通訊連結,此網路30可為網際網路或是蜂巢式網路,但並不限於此。在此實施例中,伺服器叢集可包含複數個伺服器(例如第1圖中的伺服器100a~100d),各個伺服器用於執行本發明至少一部分的任務、程序或步驟,並可為單獨、依序、並行或組合式運作而提高系統的效率。伺服器叢集100當中的任一伺服器可包含但不限於一個處理器、一記憶體模組、一通訊埠以及一包含一資料庫的一儲存裝置。第2圖為伺服器叢集的一個例子。
請參考第1、4A以及4B圖,伺服器100a可配置為一網路應用程式伺服器(下稱為網路應用程式伺服器100a),並耦接於伺服器100b(下稱為應用程式搜尋引擎伺服器100b),以服務第一使用者10以及第二使用者20。網路應用程式伺服器100a的主要功能在於向使用者提供網路相關工具,例如允許使用者在網頁介面輸入搜尋要求。應用程式搜尋引擎伺服器100b的主要功能在於提供搜尋引擎服務,以搜尋應用程式資料。其中,應用程式資料可包含但不限於字元、屬性、描述、序號、標誌符號、統計值、歷史記錄、超連結、檔案路徑、聲音、影像,以及其他任何可作為搜尋格式之資訊及其組合。
網路應用程式伺服器100a可在第一使用者10的螢幕131或第二使用者20的螢幕231上提供一個搜尋欄位或是搜尋按鈕502(或者是透過網路瀏覽器呈現),使第一使用者10或第二使用者20得以存取應用程式搜尋引擎伺服器100b所提供的搜尋工具。使用者可在搜尋欄位輸入查詢內容以啟動搜尋。此技術領域具有通常知識者能理解此實施例中所指之查詢內容可為一或多個關鍵字、圖片、影像串流、聲音,或者是其組合。舉例而言,使用者可透過打字或是發聲而將一或多個單字輸入於搜尋欄位502當中;或者,也可以透過按下搜尋按鈕502,將圖片、影像或聲音格式之檔案提交搜尋。
請參考第4A圖,一App可被安裝於應用程式搜尋引擎伺服器100b或第一使用者10。當該App被安裝、啟用並運行時,該App可依據其本身如何被操作而產生(或獲取)對應的應用程式資料。應用程式資料可由應用程式伺服器200提供,也可以是由App本身產生。待應用程式資料自該App產生或由應用程式伺服器200提供後,應用程式搜尋引擎伺服器100b便可收集該些應用程式資料。
請參考第4F圖,一資料收集代理伺服器610可被使用於一伺服器(例如應用程式搜尋引擎伺服器100b)與網路30之間,以提取及/或快取本發明於一實施例中的應用程式資料。如果資料收集代理伺服器610從第二使用者20收到搜尋要求,其可檢視其先前儲存之本地快取是否有相符合之應用程式資料;若找到相符合的應用程式資料,資料收集代理伺服器610可回傳資料給第二使用者20,不需要另外將搜尋要求發送至應用程式搜尋引擎伺服器100b。
請參考第1圖以及第4A圖,應用程式資料可被儲存於網路應用程式伺服器100a或應用程式搜尋引擎伺服器100b之資料庫中,可一併參可第2圖以及第4A圖,並且可以字串或二進位碼之形式儲存。這些被收集的應用程式資料可以被網路應用程式伺服器100a或應用程式搜尋引擎伺服器100b配合SQL、C、C++等程式語言進行管理、存取或是查詢,也可使用其他資料管理工具進行上述操作。在一個例子中,資料庫中的字串或二進位碼可以基於一個查詢請求而被搜尋;而在另一個例子中,儲存於資料庫中的資料片段可與一或多個唯一鍵(例如:一個主鍵)產生關聯,且使特定之資料片段可於搜尋這些鍵(Key)時被找出。在應用程式資料被儲存於資料庫之前,應用程式資料可先被整理為複數個分類,且各個分類分別與複數個關鍵字具有關聯(例如:『飯店』以及『小屋』等關鍵字與『旅行』之分類具有關聯)。屬於同一個類別的資料可於儲存時聯結於一組鍵,例如具順序性或關聯性的號碼,而諸如單數序列、偶數序列、以相同數字起始/結尾、在特定位數具有相同數字…等特殊號碼亦可。當應用程式搜尋引擎伺服器100b基於一個查詢請求而搜尋相關之應用程式資料時,與該查詢相符合之關鍵字所相關聯之鍵會最先被選擇,接著,資料庫中與被選擇之鍵對應之應用程式資料即被進行搜尋,以尋找與本次查詢相關的內容。值得注意的是,應用程式資料也可使用其他搜尋引擎技術而被收集以及儲存,而不限於上述模式。在一個例子中,應用程式資料可被儲存於一個邏輯表(例如BigTable)或是Hadoop架構下的一個Hadoop檔案系統。第3C圖為一個邏輯表3000,第3D圖則展示了邏輯表3000中的一列320。於此,應用程式資料可被儲存於能被各種Tablet伺服器(例如BigTable Tablet伺服器,未示於圖中)存取之複製檔案系統中的小表(Tablet)320~324。任何對於小表的修改都會被記錄在共享檔案系統中的交易日誌,在前述這個例子中,小表320~324當中所儲存之資料為不可變更(也就是說,當資料被寫入邏輯表3000後,就永遠不變)。而在另一個例子中,為了允許更新,較新的資料可被儲存於隨機存取記憶體,而舊的資料則是儲存於邏輯表3000當中的一系列檔案裡。
請參考第1圖以及第4B圖,在另一個例子中,應用程式資料可被儲存於一個獨立運行的資料庫888’。此資料庫888’可被網路應用程式伺服器100a或應用程式搜尋引擎伺服器100b配合SQL、C、C++等程式語言或其他資料管理工具進行管理。 儲存於資料庫888’的應用程式資料可被應用程式搜尋引擎伺服器100b搜尋。
本技術領域具有通常知識者應理解前述所提及之搜尋功能都可由網路應用程式伺服器100a或應用程式搜尋引擎伺服器100b單獨提供;因此,網路應用程序及搜尋功能並不一定需要分置於兩個不同的伺服器上實施。而更進一步而言,這些功能也可以透過PaaS、IaaS、SaaS等雲端運算技術而實現。
復請參考第1圖,在另一個例子中,伺服器叢集100可進一步包含一伺服器100c(下稱為資料庫管理伺服器100c),其可作為第一資料庫,或者是對與之相耦接之第二資料庫(未示於圖中)提供資料庫管理之服務,該第二資料庫係用於儲存應用程式資料。例如,第二資料庫可存在於儲存區域網路(SAN)當中,而資料庫管理伺服器100c可控制這個位於儲存區域網路當中的第二資料庫。儲存於第一或第二資料庫之應用程式資料可被SQL、C、C++等程式語言或其他資料管理工具進行管理,換句話說,當資料庫管理伺服器100c執行本發明所揭示之方法時,資料庫管理伺服器100c係可控制及存取第一或第二資料庫。
在另一例子中,如果應用程式資料是圖片、影像、影音檔或文字檔,其可被儲存於網路應用程式伺服器100a的儲存裝置(未示於圖中)、應用程式搜尋引擎伺服器100b的儲存裝置19(請參考第2圖)、資料庫管理伺服器100c的儲存裝置(未示於圖中),或者是與這些伺服器100a、100b、100c相耦接之儲存裝置19(請參考第4B圖)之中。而這些資料相對應的檔案名稱、標題、描述或標記(請參考第3A或3B圖),則可以字串儲存於網路應用程式伺服器100a或應用程式搜尋引擎伺服器100b之資料庫中,或者是前述提及之第一資料庫或第二資料庫,以供搜尋之用。
在一例子中,相對應於該些圖片、影像、影音檔或文字檔之字串也可具有檔案路徑,並同時儲存於資料庫,此檔案路徑可表示資料的所在位置。例如,伺服器叢集100可進一步包含一伺服器100d(下稱為檔案管理伺服器100d,可參考第1圖),其係與伺服器100a、100b或100d相耦接,作為檔案管理之服務。搜尋之關鍵字若與字串相符合,則與該字串相對應之檔案即會被作為搜尋結果。此時,資料庫中所找到的字串與關鍵字相符合,使相對應之檔案會透過其路徑而被檢索出。
本技術領域具有通常知識者應理解前述之伺服器100a、100b以及/或100c也可具有檔案管理之服務,以管理儲存裝置或NAS(Network Attached Storage)設備。
在另一例子中,複數個伺服器可被配置為並行工作而使伺服器叢集100擴大,以對網路上大量的客戶端提供服務。於此,與前述伺服器耦接之儲存裝置以及資料庫也可一併擴大。
進一步而言,進入伺服器100a、100b、100c以及100d之資料流量或是該些伺服器所提供之服務,可被一個負載平衡模組或是負載平衡伺服器(未示於圖中)所控制。本技術領域具有通常知識者應理解本發明之方法並不限制伺服器叢集100當中的伺服器數量。
於另一例子中,一個單一之伺服器可被配置在網路的伺服器端執行前述所有的任務與程序,這種單一伺服器可在應用程式資料的數量較小、需要伺服器運行的任務較簡單的情況下取代如第1圖中所示之伺服器叢集100。
另一種可行的方式則是讓伺服器100a~100d動態地交換其角色;伺服器叢集100當中的各個伺服器可交換其任務、程序或是步驟,並且仍維持系統的完整性。
第一使用者10可執行在電腦裝置上運行之App,以從相關的應用程式伺服器或雲端取得應用程式資料。此電腦裝置可為但不限於智慧型手機10a、平板或平板電腦10b(統稱為行動裝置)、筆記型電腦10c、個人電腦10d、智慧電視、電視遊樂器主機、車用電腦或是行車記錄器。同樣地,第二使用者20也可使用上述之裝置(相對應之20a、20b、20c、20d)操作相同的App。本技術領域具有通常知識者應理解App並非一定要由人力操作而取得應用程式資料,設定為自動執行之一機器、電腦程序或是機器人也是可執行/操作App的方式。
第2圖揭示了包含有應用程式搜尋引擎伺服器100b、應用程式伺服器200、第一使用者10以及第二使用者20的系統,其中的應用程式搜尋引擎伺服器100b可包含但不限於一記憶體12、一資料路徑14、一記憶體控制器16、一通訊埠17、一處理器18以及一儲存裝置19。在一例子中,儲存裝置19可包含一資料庫888。資料庫888或儲存裝置19可設置於伺服器系統之外部,但仍與應用程式搜尋引擎伺服器100b相耦接。
第一使用者10或第二使用者20可分別包含一記憶體139或239、一資料路徑160或260、一記憶體控制器137或237、一處理器135或235、一儲存裝置118或218、一周邊裝置134或234、一輔助全球衛星定位系統(Assisted Global Positioning System,AGPS)模組132或232、一射頻(Radio Frequency,RF)模組140或240、一輸入/輸出系統133或233、一螢幕131或231以及一輸入模組或輸入裝置138或238。其中該輸入/輸出系統133或233包含顯示器控制器133a或233a,以及一輸入控制器133b或233b;而該螢幕131或231可顯示一使用者介面131a或231a。在一例子中,儲存裝置118或218可分別包含一電腦可讀式介質(computer-readable medium)118a或218a;而於另一例子中,儲存裝置118或218則可視為電腦可讀式介質。
虛擬機器是將作業系統安裝並運行於運算環境之一種軟體實現(software implementation),其通常是用於模擬實體之運算環境,但對於中央處理器、記憶體、硬碟、網路和其他硬體資源的請求則是由虛擬層(Virtualization Layer)管理,此虛擬層可將前述之請求轉譯至實體標的物件。虛擬機器可被創造於一虛擬層(例如運行於客戶端或伺服器之作業系統之一個超管理器(hypervisor)或是虛擬化平台)中,亦即虛擬機器是運行於主機作業系統(Host OS)之上的虛擬層之中。虛擬層可用於創造多種各別的、孤立的虛擬機器環境;而相較於將作業系統和軟體直接安裝於實體硬體,虛擬機器具有多種優點,例如其孤立性可確保運行在虛擬機器上的應用程式和服務不會受到主機作業系統或其他虛擬機器的干擾,同時,虛擬機器也易於移除、複製,以及在各個主機伺服器之間重新分配而得以優化硬體資源的利用。
App除了可被第一使用者10執行而產生應用程式資料,其也可於本發明之系統中的伺服器或虛擬機器上被執行而產生應用程式資料。由於App可具有系統限定之特徵,意即特定之App可僅在特定形式的作業系統上被執行,而為了成功執行此App,就有必要知曉有關於有限定作業系統之資訊存在。在一例子中,伺服器(例如應用程式搜尋引擎伺服器100b)可取得App關於限定作業系統之資訊,使本發明之系統可了解哪種環境可執行此App。
在另一例子中,如第4G圖之範例,伺服器(例如應用程式搜尋引擎伺服器100b)可使用一包裝器(Wrapper)630而將各個App(或App的封包)與一個運行應用程式介面(runner API)包裝。在運行應用程式介面的輔助下,伺服器可取得App限定作業系統之資訊,使本發明之系統可了解哪種環境可執行此App。
在另一例子中,運行應用程式介面可直接被使用而輔助伺服器上一或多個虛擬機器取得App限定作業系統之資訊,使本發明之系統可了解哪種環境可執行此App。
如第4H圖所示,在另一範例中,一超管理器模組640可被伺服器(例如應用程式搜尋引擎伺服器100b)利用於控制執行App之虛擬機器數量。例如,超管理器模組640可生成、刪除、啟動或解除啟動虛擬機器。此超管理器模組640可作為管理虛擬機器資源的一個管理工具,使App的執行更有效率。
在另一例子中,超管理器模組640是一種核心虛擬機器(kernel-based virtual machine,KVM),其用於將具有不同作業系統之複數個虛擬機器在不改變其圖片檔案之情況下同步運行。藉由核心虛擬機器的輔助,在不同虛擬機器上具有不同作業系統之客製化運行環境得以被同步地提供。
應用程式資料可被應用程式伺服器200或App本身提供,並且儲存於資料庫888,而第二使用者20可透過使用者介面231a對應用程式資料進行搜尋。如此,應用程式搜尋引擎伺服器100b可進行搜尋並且將搜尋結果傳送給第二使用者20。
本技術領域具有通常知識者應理解前述系統中的元件、模組或是裝置可被整合於一個模組或是單個晶片中;除此之外,在應用程式搜尋引擎伺服器100b當中的伺服器系統中,第一使用者10以及第二使用者20可透過網路30而相互交流。進一步而言,在伺服器100a、100c或100d當中的伺服器系統可包含如第2圖所示之相同元件、模組或是裝置。
資料庫
資料庫
第3A以及第3B圖揭示了本發明一例子中之資料庫888或888’之資料結構範例。在此例子中,資料庫888或888’是一個關聯資料庫。請參考第3A圖,資料結構包含但不限於儲存App 1之名稱之一第一欄位300-1、儲存用於辨識App 1之ID之一第二欄位300-2、儲存App 1之檔案名稱或封包名稱之一第三欄位300-3、儲存App 1之位置之第四欄位300-4、儲存內容列表ID之一第五欄位300-5、儲存App 1之下載次數之一第六欄位300-6或是儲存App 1之推薦次數之一第七欄位300-7。除此之外,第3B圖揭示了第3A圖中,儲存於五欄位300-5之內容列表ID之一範例。本技術領域具有通常知識者應理解第3A圖以及第3B圖中的部分欄位是選擇性的。
在另一例子中,資料庫888或888’的資料結構可建置為第3C或/及第3D圖所示之一邏輯表3000或/及Hadoop檔案系統。其中,Hadoop檔案系統或邏輯表3000當中的每個資料分別為一鍵值對(Key-Value Pair)或資料對(Key-Data Pair),像是第3D圖中,App的名稱:” Joseph’s App”可作為相對於資料的鍵。
應用程式搜尋引擎
應用程式搜尋引擎
第4A圖揭示了本發明之一例子中,用於搜尋應用程式資料之系統。如第4A圖所示,此系統可包含應用程式搜尋引擎伺服器100b、第一使用者10以及應用程式伺服器200。應用程式伺服器200可與App 1溝通而提供除了靜態資料已外的動態及/或即時資料。在此例子中,應用程式搜尋引擎伺服器100b可包含一虛擬機器400、一網路應用程式500、一應用程式搜尋引擎600以及儲存裝置19。虛擬機器400是一個能托管(hosting)App之作業系統模擬環境,換句話說,App可以在虛擬機器400上,如同於行動裝置上一般地被執行。
在另一例子中,裸機方法也可在伺服器100b或100e中應用於托管App。當應用裸機方法時,一程式(未示於圖中)係作為伺服器100b或100e與託管式App之間的介面,其可轉譯來自託管式App之系統呼叫(system call)為機器編碼,並將機器編碼直接送至伺服器100b或100e,以處理伺服器100b或100e(或應用程式伺服器200)與託管式App之間的所有通訊(例如發送請求、接收應用程式資料等)。
在一例子中,App 1的應用程式封包可從應用程式伺服器200或其他資料位置(未示於圖中,一些例子為諸如APP Store或Google Play等應用程式商店)下載,應用程式伺服器200或這些其他資料位置可儲存應用程式封包,或是提供這應用程式封包的下載連結。
在一例子中,虛擬機器400可包含一第一模組(或程式)402用於將應用程式封包安裝於虛擬機器400。於此,虛擬機器400可進一步包含一第二模組(或程式)404用於執行App 1。第二模組404可連續地或周期地執行App 1。在一例子中,如果有超過一個App運行於虛擬機器400,第二模組(或程式)404可視其本身所設定之策略或規則,而依序地、隨機地或並行地執行所有的App。
在一例子中,虛擬機器400可進一步包含一第三模組(或程式)406用於分析所執行的App 1。此模組決定App 1如何與應用程式伺服器200通訊。舉例而言,第三模組406可檢查App 1所提供的不同功能,以及這些功能是如何經執行而從相對應的應用程式伺服器200取得應用程式資料。隨著此分析,可編寫一腳本(script)405以自動地、有系統地執行App 1而產生應用程式資料。
第5A~5E圖係為App 1之使用者介面之範例。在此例子中,當如第5B圖中所示之物件(例如90-1)被接觸或點擊時,App 1可提供向相關之應用程式伺服器200請求資料之功能。於此,第三模組406可分析該使用者介面而測定物件90-1~90-5的位置以及功能,腳本405則可經執行而模擬App 1的使用者之行為,例如點擊或接觸物件90-1,以向應用程式伺服器200請求資料。另一個例子則是在第三模組406分析App 1時,將腳本405編寫入應用程式搜尋引擎伺服器100b(或第三模組406)。而再於另一個例子中,腳本405可被儲存於應用程式搜尋引擎伺服器100b的儲存裝置19,並且在App 1被分析時,將腳本405傳輸至第三模組406。
在另一例子中,如第4I圖所示,腳本405、第三模組406、第二模組404以及第一模組402可被整合為一機器人模組650。機器人模組605係用於模擬人類行為,而可如同真實的人類一般執行一App。又在另一例子中,機器人模組650可透過監視及記錄人類使用者的命令而學習/記錄如何操作App。舉例而言,機器人模組650可監視使用者的輸入記錄而學習/記錄其操作此App之行為特徵。在另一例子中,機器人模組650可利用圖像識別演算法分析App的圖形使用者介面(GUI)。
在另一例子中,圖像識別演算法可包含一中文文字識別(optical character recognition,OCR)演算法,當使用OCR演算法, App的圖形使用者介面及其當中的按鍵、字元、線段、頁面及視窗等物件可經分析而被辨識,並且因此得以透過機器人模組執行特定的操作動作。
在另一例子中,機器人模組可利用隨機探測演算法分析圖形使用者介面,隨機探測演算法指引機器人模組隨機地探測(例如對於使用者介面上之任一位置任意輸入任一輸入事件,例如觸碰、點選、滑動、拖曳等等)或是啟動App的圖形使用者介面,例如以隨機的方式探測或啟動圖形使用者介面於螢幕上的像素。若圖形使用者介面的特定像素或是像素位置基於此隨機探測演算法而產生應用程式資料,則機器人模組可利用諸如機器學習方法(machine learning manner)等方式學習並記錄此分析。
虛擬機器400可進一步包含一第四模組(或程式)408,用於將應用程式資料儲存於資料庫888或儲存裝置19(或其他任何與應用程式搜尋引擎伺服器100b耦接的儲存裝置)。
本發明之另一實施例揭示如下。App 1係透過第二模組404而執行於虛擬機器400,而虛擬機器400當中的第三模組406則是用於分析App 1。接著,腳本450即被執行而於App 1產生活動,此活動包含從應用程式伺服器200請求應用程式資料,而因此發送出的應用程式資料即被收集並儲存於資料庫888。另外,App 1本身也可以產生應用程式資料,任何由App本身所產生之應用程式資料也會被收集並儲存於資料庫888。因此可知,被應用程式搜尋引擎收集與儲存之應用程式資料可為應用程式伺服器200所傳送之資料,也可以是App 1本身所產生的資料。於本發明之此實施例中,一遠端使用者20經於使用者介面131a的欄位502輸入一查詢指令並且按下搜尋按鈕(或提交鍵)522,產生針對與該查詢指令相關之資料之一搜尋請求。一應用程式搜尋引擎600在接收到該搜尋請求後,即於資料庫888當中,對與搜尋請求相關之應用程式資料進行搜尋。若找到相關的資料,則應用程式搜尋引擎600產生一個包含有該資料、相關App的清單、一或多個與該些相關App具關聯的資料連結,或著是一或多個與該些相關App具關聯之應用程式封包之下載連結之搜尋結果。接著,網路應用程式500傳輸搜尋結果至遠端使用者20。
第6A~6C圖揭示部分搜尋結果之範例2222、2223、2224。應用程式搜尋引擎600找到超過一個的相關應用程式資料;而該些應用程式資料的連結、包含有該些應用程式資料之App之下載路徑,或者是應用程式資料本身,則可依據其被下載、推薦或是評分之數字(或依據該些數字運算出之排序值大小)而顯示並依序排列。在一例子中,請參考第3A或3B圖,該些被下載、推薦或是評分之數字也可儲存於資料庫888,而來自應用程式伺服器之應用程式資料也可被儲存在儲存裝置19當中以供應用程式搜尋引擎600搜尋。
第4B圖揭示了本發明之另一實施例。第4B圖中的網路係與第4A圖中的網路相似,差異僅在於虛擬機器400係於一行動作業系統中模擬伺服器100e,此伺服器100e係分離於配置在應用程式搜尋引擎伺服器100b內的應用程式搜尋引擎600之外。在另一例子中,則是使用複數個伺服器作為單個行動作業系統模擬伺服器100e(下稱為複數個行動作業系統模擬伺服器),當執行複數個App或是處理來自於複數個應用程式伺服器之大量的應用程式資料時,其可產生更好的表現。
在另一例子中,網路應用程式500可被配置於網路應用程式伺服器100a當中,此網路應用程式500係分離於配置在應用程式搜尋引擎伺服器100b內的應用程式搜尋引擎600之外。為了更有效率地服務大量的使用者,複數個伺服器被整合為一個單一的網路應用程式伺服器100a(下稱為複數個網路應用程式伺服器)或單一的應用程式搜尋引擎伺服器100b(下稱為複數個應用程式搜尋引擎伺服器)。而在上述之複數個網路應用程式伺服器或複數個應用程式搜尋引擎伺服器可搭配使用一或多個負載平衡伺服器設置於前端,以更好的處理使用者的搜尋請求。為了達成更有效率的利用儲存容量,以及在存取/搜尋儲存裝置或資料庫時有更快的反應時間,第4A圖中所示之應用程式搜尋引擎伺服器100b當中的儲存裝置19可被設置於應用程式搜尋引擎伺服器100b之外的儲存裝置19x所取代,不過此儲存裝置19x仍是耦接於應用程式搜尋引擎伺服器100b。在一例子中,儲存裝置19x較第4A圖中的應用程式搜尋引擎伺服器100b所具有的儲存裝置19有更大的容量。而在另一個例子中,可將複數個儲存裝置19x以陣列形式配置,以提供更大的容量供行動作業系統模擬伺服器100e或應用程式搜尋引擎伺服器100b使用。在另一例子中,儲存裝置19x可被配置於檔案管理伺服器100d當中。
同樣地,第4A圖中的資料庫888可被第4B圖中的資料庫888’所取代。資料庫888’係耦接於資料庫管理伺服器或是儲存裝置19x。在一例子中,資料庫888’係由複數個資料庫所整合成之單一資料庫,可有更快的反應時間。
第4C圖揭示本發明於一例子中的另一種網路實施例。應用程式封包可被執行於搭載有行動作業系統之一運算裝置5000。另外,運算裝置5000可搭載有一電腦作業系統而可托管諸如網路App、擴充元件和插件等應用程式。在一例子中,第一使用者10在操作App 1時,App 1可向應用程式伺服器200請求應用程式資料或是由其自身產生資料。應用程式搜尋引擎伺服器100b可將前述的應用程式資料收集,並且儲存於與應用程式搜尋引擎伺服器100b耦接的儲存裝置當中。在一例子中,運算裝置5000可為智慧型手機10a、平板電腦10b、筆記型電腦10c或是個人電腦10d。
在另一例子中,應用搜尋引擎伺服器100b可進一步包含一虛擬機器400,此虛擬機器400包含一模組/程式404以於運算裝置5000上執行App 1。在另一實施例中,虛擬機器400也可包含一模組406運行腳本405而在運算裝置5000上執行App 1。腳本405可被儲存於儲存裝置內,或是嵌入模組406之內。模組406也可用於將應用程式資料儲存在儲存裝置19或是其他與應用搜尋引擎伺服器100b耦接之儲存裝置當中。
第4D圖揭示本發明於一例子中的另一種網路實施例。應用程式資料係從應用程式伺服器200或第一使用者10直接傳輸至應用程式搜尋引擎伺服器100b,而應用程式搜尋引擎伺服器100b則將資料儲存於儲存裝置19或其他儲存裝置。在另一例子中,應用程式伺服器200可直接將應用程式資料傳輸置儲存裝置,並使應用程式資料被儲存於該儲存裝置當中。應用程式搜尋引擎伺服器100b可搜尋此儲存裝置,以找出與任何查詢指令相關的資料。
第4D圖所示之實施例不需要經由執行App而從應用程式伺服器取得應用程式資料。舉例而言,可使用一程式建置或耦接於應用程式伺服器200,使本發明中的應用程式伺服器200將其所儲存有的應用程式資料轉移或提供出。此程式係為能與應用程式伺服器200通訊之腳本或是任何軟體碼。應用程式伺服器200當中的應用程式資料可被轉移。應用程式搜尋引擎伺服器100b可在接收到一使用者查詢指令時,搜尋儲存裝置當中與查詢指令相關的資料。本技術領域具有通常知識者應理解本發明並不限於此處所揭示之例子,仍有許多其他方法可在不執行App的條件下由應用程式伺服器200收集資料,而該些方法也是本案所涉及的範圍之內。舉例而言,可建置一程式於應用程式搜尋引擎伺服器100b,用以從應用程式伺服器200存取以及/或取得應用程式資料。於此,該程式只要知道應用程式伺服器之URL/URI,就可從從應用程式伺服器200接收應用程式資料。在另一例子中,諸如應用程式搜尋引擎伺服器100b等伺服器可執行一腳本而分析App 1,以判斷與之相關的應用程式伺服器200是哪一個/在哪裡,以藉此存取或取得應用程式資料。
在上述的實施例中,請參考第4E圖,一資料收集模組或架構3000可配置於應用程式搜尋引擎伺服器100b以分析並處理從應用程式伺服器200所直接傳輸之應用程式資料。該資料收集架構3000可模擬App的功能,因此可處理並理解應用程式伺服器200所提供之應用程式資料。舉例而言,如果應用程式伺服器200所傳輸之應用程式資料是分離的封包,該資料收集架構可收集資料封包並將之處理為具意義之應用程式資料而得以被搜尋。進一步而言,資料收集架構也可分析應用程式資料,以辨識需要的應用程式資料並排除不需要的部分,也可將這些應用程式資料進行分類或是組合。
此處所述之程式或是模組可於前述之伺服器當中處理器執行(例如應用程式搜尋引擎伺服器100b當中的處理器18)。而程式或是模組之暫存檔案則可儲存於處理器的快取或是伺服器的記憶體中(例如應用程式搜尋引擎伺服器100b當中的記憶體12)。然而,本技術領域具有通常知識者應理解本發明中的程式或是模組也可為實體物件,例如一個晶片或是一個電路。
網路爬蟲/網路蜘蛛
網路爬蟲/網路蜘蛛
在一例子中,一網路爬蟲(web crawler)(或網路蜘蛛)可被用於收集應用程式封包、應用程式資料、與App相關之資訊(例如描述)或是應用程式連結。應用程式搜尋引擎伺服器100b或作業系統模擬伺服器100e可下載網路爬蟲所收集之App,並且於伺服器叢集100執行這些App。
資訊檢索
資訊檢索
資訊檢索系統可被應用在應用程式伺服器或是App本身所提供的應用程式資料上而回應檢索請求。其目的是在於將資料組織並編列為具有意義的分類而提升搜尋效率。
App瀏覽器
App瀏覽器
App可被執行於遠端伺服器或是雲端,且來自應用程式伺服器之應用程式資料可被傳輸到客戶端而於一App瀏覽器上顯示。使用者可透過App瀏覽器操作App,而無需在本地端安裝App。
應用範例
應用範例
第5A至第5E圖為本發明之一例子中的App之使用者介面之範例。於第5A圖中,App具有一個通常包含圖片的歡迎畫面(或是啟動頁面)988,此歡迎畫面988係於App被啟動或開啟後顯示。
請參考第5B至第5E圖,此使用者介面具有一容器(container)900,而在容器900當中所顯示之內容係可變化,且係依據所選擇之欄標(Tab)為何而定(例如容器900底部之欄標918、920、922和924)。例如第5B圖所示係為容器900於選擇欄標918時的頁面布局。布局可以包括動作條或橫幅926(可進一步包含一個讓使用者登入App之連結)、背景或廣告910(例如影片、動畫、Flash的滑動背景等)。物件90-1至90-5可包含具選擇性的圖片90-1p至90-5p。在一例子中,物件90-1至90-5係耦接至一網路應用程式伺服器,以利用HTTP方法而從應用程式伺服器提取動態、即時性的應用程式資料(例如『POST http://example.com/apiPurpose.php』或『GET http://example.com/apiPurpose.php?mode=GetData&ID=C00001』等『POST』、『GET』方法)。於此,當App向應用程式伺服器請求應用程式資料時,應用程式伺服器可以JSON格式或XML格式傳輸回應,例如{"status":"OK", "result" : {"name" : "Happy Cafe", "display" : "1", "addr" : "3F., No.18-6, Jinhua St., Taipei, Taiwan, R.O.C", "desc" : "This is the Introduction of Happy Cafe", "shophours" : "0800-2200", "openweek" : "0111110", "shoptel" : "886-33433997", "shopurl" : "http://anotherexample.com", "shopimage" : [{"http://example.com/images/90-1p.jpg"}]}})。在本發明的一例子中,從應用程式伺服器所提取的應用程式資料可包含:一頁式瀏覽(one view)應用程式之連結、應用程式資料之連結、應用程式封包的可下載連結,以及與App或應用程式資料有關的文字、圖片、影片以及聲音。
應用搜尋引擎所提供之使用者介面之範例
應用搜尋引擎所提供之使用者介面之範例
第6A至第6C圖係為本發明另一例子中,網路應用程式伺服器100a或應用程式搜尋引擎伺服器100b提供給使用者(例如第二使用者)之使用者介面之範例。第6A至第6C圖之使用者介面可顯示於電腦、筆記型電腦、平板電腦、智慧型手機或是其他行動裝置之螢幕。請參考第6A圖,與關鍵字相關的App可顯示其應用程式圖標2104、2108或2112,以及應用程式名稱或描述2106、2110或2114,以作為搜尋結果。請參考第6B圖,搜尋結果可以表單形式列出App內容2118、2120或2112,或是該些內容的連結。請參考第6C圖,搜尋結果也可顯示於一地圖2124上,例如作為搜尋結果之應用程式圖標2104、2108以及2112即係顯示於此地圖2124。
網路App、擴充元件與插件
網路App、擴充元件與插件
基於網路App、擴充元件與插件之運作方法係類似於App,本發明亦因此揭示了一種搜尋應用程式之方法。已知網路App、擴充元件與插件係可於一智慧裝置或是運算裝置(例如個人電腦)上被執行,而當在個人電腦上運作應用程式時,這些應用程式的使用者係透過指定的應用程式伺服器,在該些應用程式伺服器執行任務的同時進行通訊。舉例而言,當使用Chrome瀏覽器的擴充元件「The Weather Channel」時,此擴充元件獲得使用者的所在位置(或是由使用者輸入他的所在位置),接著,與此擴充元件連接的應用程式伺服器會將與前述所在位置之天氣預報傳送至使用者電腦上的瀏覽器。此處的機制相當類似於App使用者向應用程式伺服器請求資料。
排程
排程
排程器也可進一步應用於本發明之系統,排程器的主要功能在於安排及決定App的執行方式。排程器可為一個能被實施於本發明當中之任何伺服器或資料庫之腳本、編碼或是程式。排程器也可作為一排程伺服器、虛擬機器或是機器人模組,其基於排程策略而執行App。
在一實施例中,一或多個排程器可被用於調度虛擬機器或伺服器執行App。而在另一實施例中,排程器也可用於調度機器人模組執行App。排程器於本發明當中的用途係在於有效率地分配及利用系統資源,進而達成提升整體系統效能的目標。舉例而言,在第4J圖中,排程器660為了便於執行App,其可被用於協調伺服器(例如應用程式搜尋引擎伺服器100b)、第一使用者20的電子裝置、網路30、應用程式伺服器200以及第二使用者20的電子裝置。又舉例而言,排程器660可基於系統組件的需求而進行協調,例如所需要的資源量、運行中的任務數、等待時間、優先順序、資料相依性等等。排程器660也可設置於本發明之所揭示之例子中的伺服器(例如應用程式搜尋引擎伺服器100b)當中。
排程器可基於一排程策略而對系統中的多個構件進行排程。排程策略係定義了App的執行方式,舉例而言,該策略可建立規則以規範App被機器人模組、虛擬機器或伺服器執行之順序。排程策略也可定義App的執行頻率,使系統知曉App被執行的次數以及每次之間隔時間,其還可以管理App的執行時刻、頻率、優先順序以及執行時間長度。排程策略可被儲存於資料庫當中(例如資料庫888或888’)。
在一例子中,排程器可在機器人模組、虛擬機器或是伺服器的負載較低時增加App的執行頻率;相反的,排程策略也可指引排程器於負載較高時減少執行頻率。
App在執行上的次序與優先權也可由排程策略定義,舉例而言,排程策略可包含先到先做排程演算法、最短工作優先排程演算法、優先權排程演算法、循環排程演算法、多層佇列排程演算法、多層回饋佇列排程演算法以及/或即時排程演算法。了解系統的條件以及資源,並且確認App的類型及特性將有助於判斷使用哪種排程演算法係較合適。舉例而言,排程策略可動態地將一地位(status)分派至各個App,以決定App在執行上的優先順序;特別是在首次執行App之後,各個App的閒置時間或是消耗時間可被記錄,以供排程器依據該地位而動態地切換App的執行順序。
排程策略可由人工智慧或是手動的方式產生。在人工智慧方式中,排程器可具有高階智慧而學習App的特性,而App的特性係可包含App的執行頻率或是類型等(例如分類)。學習App的類型或分類可幫助排程器決定該App的執行頻率。舉例而言,新聞類App可能較遊戲類App需要更高的執行頻率,因為新聞類App通常會更頻繁的更新內容。因此,若是執行了新聞類App,無論是由機器人模組、虛擬機器或是伺服器執行,排程器都可動態地提升其在執行上的頻率或是優先順序。相反的,排程器也可動態地降低鮮少更新之App的執行頻率以或優先順序。
而在手動的方式中,排程策略係以手動的方式輸入;舉例而言,系統的管理員可手動地命令App的執行次序、優先權或是頻率。
App安全檢查模組
App安全檢查模組
對於開發者與使用者而言,行動軟體安全已成為今日重要的議題。隨著市場上App的數量逐漸擴大,為了確保網路爬蟲所找到的App式安全且不含惡意病毒,一個可靠的安全檢查方法必須到位。
在一實施例中,如第4K圖所示之範例,其可配置一App安全檢查模組670,其基於複數個安全等級而檢查軟體應用程式或App之安全性。更確切而言,可依應用程序之處理需求而定義不同之安全等級,且可用於阻擋不符合特定安全等級的App。在本發明之例子中,App安全檢查模組670可被設置於虛擬機器400之外,不過仍是位於伺服器(應用程式搜尋引擎伺服器100b)之內。
在另一實施例中,App安全檢查模組670係用於提供對App安全認證,將透過網路爬蟲取得之App經由安全檢查模組670檢查其是否能通過各種不同之安全等級,例如等級一、等級二、等級三、等級四以及等級五等五種安全等級之一。
App安全檢查模組670可在每一個安全等級當中包含一組安全認證機制。安全認證機制可包含通訊認證、透過清單和追蹤API呼叫而偵測惡意程式,以及偵測惡意系統行為。
單個/多個虛擬機器之機制
單個/多個虛擬機器之機制
在前述之圖式(例如第4A~4K圖)中,具有一排程器之單一虛擬機器被用於執行App,而在其他的實施例中,多個虛擬機器也可在同一個伺服器上被用於同步執行複數個App。因此,該些App的應用程式資料會被同步產生、處理以及/或儲存於本發明所揭示的伺服器中。
第7A~7H圖係為本發明之實施例使用單一虛擬機器或多個虛擬機器執行App。
在第7A圖中,一範例系統當中可包含一伺服器701a以及一或多個應用程式伺服器201、202。伺服器701a以及應用程式伺服器201、202可透過網路30而耦接/通訊。應用程式伺服器201、202可具有與應用伺服器200相似的功能。應用程式伺服器201、202可分別被分派處理不同App之應用程式資料,或者是相同App之不同執行緒;舉例而言,應用程式伺服器201可被App「APP_kk」的開發者特定分派處理與App_kk相關的應用程式資料,而應用程式伺服器201則可被App「APP_jj」的開發者特定分派處理與App_jj相關的應用程式資料。網路30則扮演伺服器701a和應用程式伺服器201、202之間傳輸資料的媒介。
伺服器701a可基於第4A~4K圖所示之伺服器100b而設計,不過也可具有額外的功能。伺服器701a可具有一排程器710、一虛擬機器管理員720、一儲存裝置740、一包裝器750、一應用程式封包儲存模組760以及一或多個虛擬機器88、89。伺服器701也可選擇性地包含一個可配置的軟體定義網路(SDN)730。
虛擬機器管理員720可在排程器710的作用下用於管理虛擬機器88、89(例如一個『Ctrl_sm5』之指令控制虛擬機器89,以及一個『Ctrl_sm4』之指令控制虛擬機器88)。虛擬機器管理員720可管理伺服器701a當中的虛擬機器產生、刪除、啟動以及/或停用。舉例而言,當有App於伺服器701a上啟動,排程器710會命令虛擬機器管理員720在伺服器701a產生一個新的虛擬機器處理此App。在另一例子中,當有App於伺服器701a上停用,排程器710會命令虛擬機器管理員720刪除或關閉伺服器701a當中用於處理前述停用之App之虛擬機器。虛擬機器管理員720係可基於排程器710之一排程策略而運作。
在部分實施例中,可將虛擬機器管理員720實施為前述之機器人模組之一部分(例如於第4I圖中,作為機器人模組650之一部分)。
在本發明之部分實施例中,排程器710可以程式碼或是腳本的形式儲存於伺服器701a當中。
在一例子中,包裝器750可用於提供複數個輸入事件(input event)以及/或指示運作一App,使該App得以直接執行於伺服器701a。輸入事件可包含手勢事件,例如為了運做App而予以碰觸、移動或是震動等動作。
在另一例子中,包裝器750可用於將一App與一個運行應用程式介面包裝,使該App可在該運行應用程式介面的輔助下而被執行於伺服器701a。在此例子中該App在與該運行應用程式介面結合之前可能為不可執行的,此係因為該App可因使用特定的格式/程式語言而使其無法於一或多個在伺服器701a上的作業系統中被執行(例如在iOS環境中可被執行的ipa檔案在Android環境中則無法被安裝/執行,除非是先與該運行應用程式介面包裝,使與iOS相關之內容在輸入/輸出時被轉譯/轉換為Android可接受之格式)。透過運行應用程式介面的幫助,App即可在伺服器701a所使用的作業系統中執行。在部分例子中,被包裝器750所包裝之App可來自於前述之網路爬蟲。
應用程式封包儲存模組760可用於為伺服器701a儲存App;舉例而言,其可儲存APP_11、APP_12、…、APP_1m、APP_21、…、APP_ij、…、APP_n1、APP_n2、…以及APP_nm等App。
儲存裝置740可用於儲存伺服器701a上所執行之一或多個App所產生的應用程式資料。
在本發明之一例子中,若虛擬機器88係透過虛擬機器管理員720而產生,並特別用以執行APP_kk,則此虛擬機器88也可包含一超管理器88a,其可用於動態地管理虛擬機器88的資源。舉例而言,超管理器88a可向伺服器701a請求用於虛擬機器88的資源,或是將虛擬機器88所釋出的資源歸還於伺服器701a。超管理器88a可包含一作業系統OS_kk,此作業系統OS_kk可包含至少一App管理員SM_kk以及一代理程式Pr_kk。App管理員SM_kk可包含一安裝控制器IC_kk,其使用APP_kk的一身分Apk_id_kk而將APP_kk自應用程式封包儲存模組760進行安裝。該代理程式Pr_kk可用於作為發送或接收APP_kk的應用程式資料。另外,伺服器701a當中的代理程式可扮演前述之資料收集代理伺服器610的角色。
類似地,虛擬機器89可由虛擬機器管理員720所產生,特別用於執行App:APP_jj。虛擬機器89可包含一超管理器89a,其可用於動態地管理虛擬機器89的資源。舉例而言,虛擬機器89a可向伺服器701a請求用於虛擬機器89的資源,或是將虛擬機器89所釋出的資源歸還於伺服器701a。超管理器89a可包含一作業系統OS_jj,此作業系統OS_jj可包含至少一App管理員SM_jj以及一代理程式Pr_jj。App管理員SM_jj可包含一安裝控制器IC_jj,該安裝控制器IC_jj可將App APP_jj自應用程式封包儲存模組760進行安裝。
代理程式Pr_jj可用於作為發送或接收App APP_jj的應用程式資料。
在部份例子中,伺服器701a所搭載的作業系統可用於行動電子裝置,例如為iOS、Android、…等。
在部分例子中,超管理器88a和89a可為Linux作業系統之核心的虛擬化基礎設施,例如基於核心的虛擬機器(kernel-based virtual machine,簡稱KVM)。
在部分例子中,虛擬機器88與89可運行Linux作業系統,例如CentOS(像是CentOS 6.4)或Ubunto。
在本發明的部分實施例中,SDN 730可配置為管理虛擬機器(例如虛擬機器88和89)及與該些虛擬機器相關之應用程式伺服器(例如應用程式伺服器201和202)之間的資料傳輸及/或接收。可組態(configurable)SDN 730會儲存伺服器701a所提供的虛擬機器位址(例如IP位址)。當應用程式伺服器(例如應用程式伺服器201)對一App(例如APP_kk)請求應用程式資料,可組態SDN 730即會依據前述所儲存之位址,將執行該App之虛擬機器(例如虛擬機器88)所產生的應用程式資料發送給相關的伺服器。當伺服器701a被用於同步托管大量的虛擬機器時,可組態SDN 730將會幫助伺服器701a有效率地管理虛擬機器及其相關伺服器之間的應用程式資訊通訊量。
在部分例子中,可組態SDN 730可被開放虛擬交換標準(Open vSwitch)技術所實現。
伺服器701a運作之流程範例係如下所示:當伺服器701a準備執行APP_kk時,排程器710係指示虛擬機器管理員720產生虛擬機器88。接著App管理員SM_kk可執行APP_kk以產生應用程式資料。代理程式Pr_kk則可將應用程式資料儲存於儲存裝置740,或者是透過網路30而將應用程式資料指引至應用程式伺服器201(也可在本發明部分實施例中透過可組態SDN 730的幫助),或者是自伺服器201接收請求。因此,虛擬機器88係有能力產生應用程式資料以回應來自應用程式伺服器201的請求,並且將該應用程式資料回傳給應用程式伺服器201。另外,一旦在虛擬機器88執行APP_kk,超管理器88a會動態地管理虛擬機器88的資源。
在第7B圖中,一伺服器702a係以類似伺服器701a的方式實現,差異僅在於移除了虛擬機器的代理程式(例如Pr_kk和Pr_jj),並改使用整合性代理程式770應用於虛擬機器中。
在第7C圖中,一伺服器703a係以類似伺服器701a的方式實現,而差異在於虛擬機器(例如虛擬機器88、89)係被整合於單一虛擬機器780當中。單一虛擬機器(例如虛擬機器780)可用於在伺服器703a當中管理多個超管理器(例如超管理器88a和89a),使虛擬機器780可同步執行一或多個App。
在第7D圖中,一伺服器704a係以類似伺服器702a的方式實現,而差異在於虛擬機器(例如虛擬機器88、89)係被整合於單一虛擬機器790當中,且該些虛擬機器中的超管理器也被整合為單一超管理器88c。此超管理器88c可用於同步管理伺服器704a當中的一或多個作業系統(例如作業系統OS_kk和OS_jj)。
在第7E圖中,一伺服器701b係以類似伺服器701a的方式實現,而差異在於包裝器750係搬遷至App管理員,例如作為運行單元(runner)75a和75b。運行單元75a可用於將APP_kk與一運行API包裝,使APP_kk可被執行於作業系統OS_kk;而運行單元75b則可用於將APP_jj與運行API包裝,使作業系統OS_jj可執行APP_jj。
在第7F圖中,一伺服器702b係以類似伺服器702a的方式實現,而差異在於包裝器750係搬遷至App管理員,例如作為運行單元75a和75b。
在第7G圖中,一伺服器703b係以類似伺服器703a的方式實現,而差異在於包裝器750係搬遷至App管理員,例如作為運行單元75a和75b。
在第7H圖中,一伺服器704b係以類似伺服器704a的方式實現,而差異在於包裝器750係搬遷至App管理員,例如作為運行單元75a和75b。
對第7A~7H圖之虛擬機器的數量進行改變也是本發明的範圍之內。
對第7A~7H圖中之單元進行合理的組合以及/或搬移也是本發明的範圍之內。
資料收集模組
資料收集模組
在部分實施例中,第4E圖所示之資料收集架構3000也可配置於第7A~7H圖中所示之虛擬機器管理員(例如虛擬機器管理員SM_kk和SM_jj),以用於分析和處理應用程式資料。虛擬機器管理可作為前述之機器人模組之一部分(例如作為第4I圖所示之機器人模組650之一部分)。資料收集模組3000可扮演掛勾者(hook)的腳色而截取經與運行API包裝之App的API呼叫(例如系統呼叫),以及可記錄及分析App在機器學習方法中的行為(或是從系統呼叫中提取應用程式資料/內容)。
第8A圖係本發明之一實施例中,使用資料收集模組3000以在使用者階層(user-level)掛勾應用程式資料之作業系統的概念圖。如第8A圖所示,一掛勾伺服器810可耦接獲設置於伺服器100b或100e,並且用接收所掛勾的應用程式資料以及將之轉移至資料儲存庫、儲存裝置或其他前置處理工具。而當透過一系統/核心呼叫850對一函數庫840呼叫,使該函數庫840接收到應用程式資料之時或之後,一掛勾程式820可用於提取/截取、記錄或分析此應用程式資料。
第8A圖係為在執行App 830的過程中,所發生之互動之範例流程圖,其中:
階段80A:掛勾伺服器810自掛勾程式820接收其所提取/截取之應用程式資料。
階段801:App 830呼叫函數庫840以產生向遠端應用程式伺服器200請求應用程式資料之請求。
階段802:掛勾程式820掛勾函數庫840(例如呼叫一個掛勾API以掛勾函數庫840所接收到的應用程式資料),以接收到在系統呼叫850呼叫函數庫840之後產生的應用程式資料。
階段803:在函數庫840被App 830呼叫之後,產生一個給予系統呼叫850之請求(例如一個HTTP POST或GET方法)。系統呼叫850可傳輸HTTP POST或GET請求至相關的驅動程式,例如網路介面卡(NIC)驅動程式。網路介面卡驅動程式會將HTTP POST或GET請求轉換/變換/編碼/嵌入而形成一個封包,並且將之透過MAC子層(即OSI模型當中的資料連結層之媒體存取控制子層)以及/或PHY層(即OSI模型當中的實體層),而經網際網路傳輸至遠端與App 830相關的應用程式伺服器(例如應用程式伺服器200)。
階段804:系統呼叫850將其接收到的應用程式資料自驅動程式轉移至函數庫840。
階段805:函數庫840自系統呼叫850接收到的應用程式資料在此階段會被掛勾程式820提取/截取。
階段806:在自系統呼叫850接收到應用程式資料以及呼叫函數庫840之後,即產生回應階段803當中之請求之結果。舉例而言,如果原本的請求是對內容進行請求,則在系統呼叫850接收到內容(例如包含有複數個文字的文章)之後,此階段會呼叫函數庫840,以在使用者介面上顯示該內容(例如將內容顯示於App 830之使用者介面中的視窗)。
在一例子中,請求可附帶關鍵字,而應用程式資料可附帶該些關鍵字的相關搜尋結果,掛勾程式820則可用於接收該搜尋結果。在經過自掛勾伺服器810開始之一段處理程序後,搜尋結果最後可被儲存於儲存裝置當中(例如儲存裝置740或資料儲存庫8888)。
第8B圖係本發明一實施例中,使用資料收集模組3000以在核心階層掛勾應用程式資料之作業系統的概念圖;如第8B圖所示,其圖中所示之單元之功能係與第8A圖中的相同,故不再重複敘述。
第8B圖係為在執行App 830的過程中,所發生之互動之範例流程圖:
階段80A:相同於前述之階段80A。
階段801:相同於前述之階段801。
階段812:在函數庫840被App 830呼叫後,產生一個請求並被掛勾程式820截取。
階段813:掛勾程式820發送該請求至系統/核心呼叫850;同樣的,系統/核心呼叫傳輸該請求(例如一個HTTP POST或GET方法)至相關的驅動程式,該驅動程式會將該請求轉換/變換/編碼/嵌入而形成一個封包,並且將之透過MAC子層或PHY層,而經網際網路傳輸至遠端與App 830相關的應用程式伺服器(例如應用程式伺服器200)。
階段814:系統/核心呼叫850將其接收到的應用程式資料自驅動程式轉移至掛勾程式820。
階段815:掛勾程式820將應用程式資料轉移至函數庫840。
階段806:如同前述之階段806。
在部分實施例中,資料收集模組3000的部分任務可被轉移至第7A~7H圖所示之代理程式而減輕第7A~7H圖中之虛擬機器管理員的負載。
第9A和9B圖係為使用第7A~7H圖中之代理程式而執行資料收集模組3000之任務,以藉此收集應用程式資料之例子。
在第9A和9B圖中,「策略與邏輯」係指排程器(例如排程器710)之排程策略。
第9A圖之各個階段係如下所示:
階段901:排程器請求關於一App之一排程策略。
階段902:該請求被回應並附帶一確認通知。
階段903:排程器啟動與該App相對應之一虛擬機器管理員。
階段904:在排程器的控制之下,虛擬機器管理員可啟動或停用App,或者是操作App。
階段905:App發送一請求至與之相對應之應用程式伺服器。
階段906:應用程式伺服器回傳一回應,該回應附帶有與該請求相關之資料或是內容。
階段907:與該App相對應之一代理程式提取/截取並儲存該回應中的資料或內容於一儲存裝置或一資料儲存庫。
第9B圖中的各個階段係如下所示,其包含App安全檢查機制:
階段911:排程器請求與一App相關之一排程策略。
階段912:該請求被回應並附帶一確認通知。
階段913:排程器啟動與該App相對應之一虛擬機器管理員。
階段914a:虛擬機器管理員呼叫一App安全檢查模組以檢查該App之安全層級。
階段914b:該虛擬機器管理員呼叫一代理程式以提取/截取與該App相關之傳輸資料以供未來進行分析。
階段915:在排程器的控制之下,虛擬機器管理員可啟動或停用App,或者是操作App。
階段916:在App安全檢查模組的監視以及代理程式的截取之下,App發送一請求至與之相對應之應用程式伺服器。
階段917:在App安全檢查模組的監視以及代理程式的截取之下,應用程式伺服器回傳一回應,該回應附帶有與該請求相關之資料或是內容。
階段918a:App請求App安全檢查模組終止其監視。
階段918b:App請求代理程式終止提取/截取與該App相關之資料。
階段919:代理程式儲存其所提取/截取之資料或內容製一儲存裝置或一資料儲存庫。
階段920:App回應該終止請求。
階段921:代理程式回應該終止請求。
階段922:虛擬機器管理員回應該終止請求。
階段923:排程器將收集應用程式資料之過程之結果儲存於儲存裝置或是資料儲存庫當中。
第9C圖係為資料收集模組3000或第7A~7H圖中之代理程式在提取/截取與一App相關之資料/內容之流程圖,其中:
階段931:當App啟動時,自虛擬機器管理員接收一截取要求;該截取要求可包含該App之身分。
階段932:在收集所輸入之資料/內容時,將截取請求以及與該App有關聯之輸入之資料/內容進行整合。
階段933:截取以及/或分析所收集之資料/內容,該資料/內容係與該App相關。
階段934:回應一終止請求,並儲存所收集之資料/內容於一儲存裝置或資料儲存庫。
第9D圖係為一實施例之排程器運作之流程圖,其中:
階段941:於一個儲存裝置或資料儲存庫中檢索一排程策略。在一例子中,一時間事件(例如建立一時間戳(timestamp))也可包含於檢索排程策略時的檢索範圍之內。
階段942:發送一截取請求至一虛擬機器管理員。
階段943:等待一終止通知,並且在接獲該終止通知時,儲存與該App相關之截取資料/內容。
第9E圖係為虛擬機器管理員(或機器人模組)於一實施例運作之流程圖,其中:
階段951:當一App啟動時,自一排程器接收一截取請求,該截取請求係關於截取與該App相關之資料/內容。
階段952:虛擬機器管理員被該排程器啟動而截取與該App相關之資料/內容。
階段953:依據該排程器而執行該App之功能。
階段954:發送一截取請求至一App安全檢查模組。
階段955:發送一截取請求至一資料收集模組或一代理程式。
階段956:通知該排程器終止其活動,並且儲存與該App相關之資料/內容於一儲存裝置或一資料儲存庫。
本發明更揭示了另一個搜尋應用程式之方法,此方法包含執行至少一個應用程式之步驟。該應用程式可在一個其適合的硬體或是虛擬機器上運行。而當應用程式被執行時,與之相對應的應用程式資料即被生成。這些應用程式資料可從相對應的應用程式伺服器接收,以及/或者是由此應用程式本身產生。該應用程式資料基於應用程式運作如何運行而可為靜態或動態之形式。該應用程式資料可被儲存於一儲存裝置當中,例如本發明之系統當中的資料庫或記憶體。而透過諸如網路搜尋欄位等介面,使用者可輸入其搜尋內容,當接收到來自於使用者的查詢指令時,即會進行搜尋而找出與查詢指令相關之特定應用程式資料。若相關之應用程式資料被辨識出,這些相關之應用程式資料之資訊就會被傳送給發出查詢指令的使用者。
本技術領域具有通常知識者應能理解,對於應用程式、網路App、擴充元件或插件之搜尋方法與前述對App之搜尋方法係為相近,本發明對此已於前有詳盡之說明;因此,本發明於前述所有關於App之實施例、方法、系統以及組成元件皆可適用於搜尋應用程式、網路App、擴充元件或插件。
10‧‧‧第一使用者
100b‧‧‧應用程式搜尋引擎伺服器
118‧‧‧儲存裝置
12‧‧‧記憶體
131‧‧‧螢幕
131a‧‧‧使用者介面
132‧‧‧輔助全球衛星定位系統模組
133‧‧‧輸入/輸出系統
133a‧‧‧顯示器控制器
133b‧‧‧輸入控制器
134‧‧‧周邊裝置
135‧‧‧處理器
137‧‧‧記憶體控制器
138‧‧‧輸入模組或輸入裝置
139‧‧‧記憶體
14‧‧‧資料路徑
140‧‧‧射頻模組
16‧‧‧記憶體控制器
160‧‧‧資料路徑
17‧‧‧通訊埠
18‧‧‧處理器
19‧‧‧儲存裝置
200‧‧‧應用程式伺服器
20‧‧‧第二使用者
218‧‧‧儲存裝置
218a‧‧‧電腦可讀式介質
231‧‧‧螢幕
231a‧‧‧使用者介面
232‧‧‧輔助全球衛星定位系統模組
233‧‧‧輸入/輸出系統
233a‧‧‧顯示器控制器
233b‧‧‧輸入控制器
234‧‧‧周邊裝置
235‧‧‧處理器
237‧‧‧記憶體控制器
238‧‧‧輸入模組或輸入裝置
239‧‧‧記憶體
240‧‧‧射頻模組
260‧‧‧資料路徑
30‧‧‧網路
Claims (9)
- 一種搜尋軟體應用程式之系統,其係包含:一或多個軟體應用程式;一或多個伺服器,用於執行該或該些軟體應用程式;一或多個排程器,用於依據一排程策略而排程該或該些伺服器執行該或該些軟體應用程式;一包裝器(wrapper),用於提供至少一輸入事件以及一指令其中之一,以執行該或該些軟體應用程式;一或多個電腦程式,用於收集該或該些軟體應用程式之應用程式資料,並且儲存所收集之該應用程式資料於一或多個資料庫;以及一或多個搜尋引擎,用於提供搜尋服務,其係使用經收集且儲存於該或該些資料庫之該應用程式資料而搜尋該或該些軟體應用程式。
- 如申請專利範圍第1項所述之搜尋軟體應用程式之系統,其中該或該些電腦程式更包含一機器人模組,用於模擬一使用者執行該或該些軟體應用程式之行為,以進行至少產生該應用程式資料與接收該應用程式資料其中 之一。
- 如申請專利範圍第2項所述之搜尋軟體應用程式之系統,其中該機器人模組係透過記錄真實使用者操作該或該些軟體應用程式之行為而模擬該使用者之行為。
- 如申請專利範圍第1項所述之搜尋軟體應用程式之系統,其中該或該些電腦程式進一步包含一資料收集代理程式,用於提取(fetch)或快取(cache)該或該些軟體應用程式之該應用程式資料。
- 如申請專利範圍第1項所述之搜尋軟體應用程式之系統,其中該包裝器更用於將該或該些軟體應用程式與一應用程式介面包裝,以幫助該或該些伺服器執行該或該些軟體應用程式。
- 如申請專利範圍第1項所述之搜尋軟體應用程式之系統,其更包含:一運行應用程式介面,用於幫助該或該些伺服器之一虛擬機器執行該或該些軟體應用程式。
- 如申請專利範圍第1項所述之搜尋軟體應用程式之系統,其更包含:一超管理器模組,用於控制一虛擬機器執行該或該些軟體應用程式。
- 如申請專利範圍第1項所述之搜尋軟體應用程式之系統,其中該或該些電腦程式更包含一或多個機器人模組,且該或該些排程器更係依據該排程策略而排程該或該些機器人模組。
- 如申請專利範圍第1項所述之搜尋軟體應用程式之系統,其中該排程器更係用於分析該或該些軟體應用程式之至少一執行頻率、一執行次序、一執行長度以及一執行優先權其中之一,以產生該排程策略。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361862967P | 2013-08-07 | 2013-08-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201508523A TW201508523A (zh) | 2015-03-01 |
TWI553493B true TWI553493B (zh) | 2016-10-11 |
Family
ID=51300568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103126881A TWI553493B (zh) | 2013-08-07 | 2014-08-06 | 搜尋軟體應用程式之方法及其系統 |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP2846273A1 (zh) |
JP (1) | JP5859074B2 (zh) |
CN (1) | CN105354189A (zh) |
BR (1) | BR102014019318A2 (zh) |
RU (1) | RU2598988C2 (zh) |
TW (1) | TWI553493B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI581588B (zh) * | 2015-06-12 | 2017-05-01 | 財團法人工業技術研究院 | 行動邊緣計算之控制方法、網路系統與服務平台 |
US10120949B2 (en) | 2015-10-29 | 2018-11-06 | Google Llc | Indexing native application data |
CN105488112B (zh) * | 2015-11-20 | 2019-09-17 | 小米科技有限责任公司 | 信息推送方法及装置 |
CN106844019A (zh) * | 2015-12-04 | 2017-06-13 | 阿里巴巴集团控股有限公司 | 应用程序控制方法、应用程序跳转关联配置方法及装置 |
US11087234B2 (en) * | 2016-01-29 | 2021-08-10 | Verizon Media Inc. | Method and system for distributed deep machine learning |
US11237859B2 (en) * | 2018-11-28 | 2022-02-01 | Red Hat Israel, Ltd. | Securing virtual machines in computer systems |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5910903A (en) * | 1997-07-31 | 1999-06-08 | Prc Inc. | Method and apparatus for verifying, analyzing and optimizing a distributed simulation |
TW200836079A (en) * | 2007-01-05 | 2008-09-01 | Yahoo Inc | Clustered search processing |
TW201303620A (zh) * | 2011-04-08 | 2013-01-16 | Apple Inc | 用於應用程式搜尋引擎之基於主題的語言模型生成 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6785671B1 (en) * | 1999-12-08 | 2004-08-31 | Amazon.Com, Inc. | System and method for locating web-based product offerings |
US7234139B1 (en) * | 2000-11-24 | 2007-06-19 | Catharon Productions, Inc. | Computer multi-tasking via virtual threading using an interpreter |
US7552422B2 (en) * | 2004-03-31 | 2009-06-23 | Microsoft Corporation | Test case inheritance controlled via attributes |
US7356590B2 (en) * | 2005-07-12 | 2008-04-08 | Visible Measures Corp. | Distributed capture and aggregation of dynamic application usage information |
JP2009116733A (ja) * | 2007-11-08 | 2009-05-28 | Nec Corp | アプリケーション検索システム、アプリケーション検索方法、モニタ端末、検索サーバおよびプログラム |
JP5287099B2 (ja) * | 2008-09-29 | 2013-09-11 | 日本電気株式会社 | 検索装置、情報処理装置、検索方法、プログラム及び記録媒体 |
US8943478B2 (en) * | 2009-07-14 | 2015-01-27 | International Business Machines Corporation | Fault detection and localization in dynamic software applications |
JPWO2012014284A1 (ja) * | 2010-07-27 | 2013-09-09 | 株式会社日立製作所 | テストシナリオ生成方法、テストシナリオ生成システム、及び、テストシナリオ生成プログラム |
US20120316955A1 (en) * | 2011-04-06 | 2012-12-13 | Yahoo! Inc. | System and Method for Mobile Application Search |
EP2610776B1 (en) * | 2011-09-16 | 2019-08-21 | Veracode, Inc. | Automated behavioural and static analysis using an instrumented sandbox and machine learning classification for mobile security |
US8737980B2 (en) * | 2011-09-27 | 2014-05-27 | W2Bi, Inc. | End to end application automatic testing |
JP5420623B2 (ja) * | 2011-11-05 | 2014-02-19 | 京セラドキュメントソリューションズ株式会社 | プログラム |
JP5906705B2 (ja) * | 2011-12-06 | 2016-04-20 | 日本電気株式会社 | テストシステム、テスト方法、及び、プログラム |
-
2014
- 2014-07-31 RU RU2014131897/08A patent/RU2598988C2/ru not_active IP Right Cessation
- 2014-08-05 BR BR102014019318A patent/BR102014019318A2/pt not_active IP Right Cessation
- 2014-08-06 CN CN201410383444.8A patent/CN105354189A/zh active Pending
- 2014-08-06 JP JP2014160757A patent/JP5859074B2/ja not_active Expired - Fee Related
- 2014-08-06 EP EP14180107.6A patent/EP2846273A1/en not_active Withdrawn
- 2014-08-06 TW TW103126881A patent/TWI553493B/zh not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5910903A (en) * | 1997-07-31 | 1999-06-08 | Prc Inc. | Method and apparatus for verifying, analyzing and optimizing a distributed simulation |
TW200836079A (en) * | 2007-01-05 | 2008-09-01 | Yahoo Inc | Clustered search processing |
TW201303620A (zh) * | 2011-04-08 | 2013-01-16 | Apple Inc | 用於應用程式搜尋引擎之基於主題的語言模型生成 |
Also Published As
Publication number | Publication date |
---|---|
TW201508523A (zh) | 2015-03-01 |
CN105354189A (zh) | 2016-02-24 |
EP2846273A1 (en) | 2015-03-11 |
BR102014019318A2 (pt) | 2016-09-27 |
JP5859074B2 (ja) | 2016-02-10 |
RU2014131897A (ru) | 2016-02-20 |
JP2015035216A (ja) | 2015-02-19 |
RU2598988C2 (ru) | 2016-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20150046425A1 (en) | Methods and systems for searching software applications | |
TWI553493B (zh) | 搜尋軟體應用程式之方法及其系統 | |
US20220038528A1 (en) | Dynamic creation and execution of containerized applications in cloud computing | |
US10642904B2 (en) | Infrastructure enabling intelligent execution and crawling of a web application | |
CN107004024B (zh) | 上下文驱动的多用户通信 | |
JP6356273B2 (ja) | バッチ最適化レンダリング及びフェッチアーキテクチャ | |
US20140040231A1 (en) | Methods and systems for searching software applications | |
US10650067B2 (en) | Cloud-enabled architecture for on-demand native application crawling | |
US11010215B2 (en) | Recommending applications based on call requests between applications | |
US8762408B2 (en) | Optimizing software applications | |
US20180137174A1 (en) | Container application execution using image metadata | |
US11461119B2 (en) | Virtual containers configured to support multiple machine learning models | |
JP7397094B2 (ja) | リソース構成方法、リソース構成装置、コンピューター機器、及びコンピュータープログラム | |
US20180124109A1 (en) | Techniques for classifying a web page based upon functions used to render the web page | |
US11652908B2 (en) | Split testing with custom cache keys for content delivery networks | |
CN113656673A (zh) | 面向广告投放的主从分布内容爬取机器人 | |
US20160253708A1 (en) | Method and system for efficiently serving upsell content based on complex user archetypes | |
US11783002B2 (en) | Intelligent dynamic preloading | |
KR102147978B1 (ko) | 사용자 어시스트 앱을 이용한 사용자 어시스트 시스템 | |
TWM600871U (zh) | 排程和執行工作的電腦程式產品和裝置 | |
KR102440893B1 (ko) | 멀티 챗봇 서비스의 응답 시간 개선을 위한 방법 및 장치 | |
EP2026274A1 (en) | Commercial new E-paper system | |
US20220383129A1 (en) | Simulating service performance using machine learning | |
US11829294B2 (en) | Preloaded content selection graph generation | |
ElAraby et al. | Web Crawler Architecture over Cloud Computing compared with Grid Computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |