張同光,李繼光,張龍昌
(1.新鄉學院計算機與信息工程學院 新鄉453003;2.北京郵電大學網絡與交換技術國家重點實驗室 北京100876)
近年來,社交網絡服務(social network service,SNS)飛速發展,并且出現了一大批優秀的提供社交網絡服務的網站,如國外的 Facebook、MySpace和國內的51.com、開心網等。人們將自己實際的社交網絡關系數字化并虛擬存儲在社交網站后,社交網站就可以集中管理大量的個人社交網絡數據,并挖掘其中潛在的人際關系資源。因此,有研究認為,社交網站在從根本上改變人際交往和社區活動等社會生活方式方面具有很大的潛力[1]。
目前互聯網應用模式正在從普通互聯網向移動互聯網發展,同樣的,SNS也在向移動互聯網模式發展。移動SNS服務和應用是基于分布式網絡軟件的形式實現,可以通過網絡服務、移動通信服務以及網站應用的形式提供給用戶,而其用戶可以是人,也可以是另外的網絡服務或者應用。移動SNS系統是處在異構網絡融合、內容聚合基礎上的社會網絡服務系統,是移動通信應用和Web應用的融合應用。移動通信技術涉及到短信、彩信、位置、視頻、計費等相關技術;Web技術包括Web2.0、Mobile2.0等眾多關鍵技術。由于移動SNS服務的提供技術包含了眾多的關鍵技術,研制過程中存在平臺復雜度高、模塊復用率低、系統結構靈活性較差、不能快速適應應用變化、第三方系統之間的有機集成困難等問題。
關于移動SNS的研究已經有大量工作[3~6],然而還沒有相關工作能有效解決上述問題。因此本文提出一種基于構件的移動SNS系統的設計方法,設計出移動SNS服務端系統架構,并給出系統的構件模型,有效地解決了以上的問題,從而為移動SNS系統的構建提供了一種可行方案。
構件[7](component)是指應用系統中可以明確辨識的構成成分。可復用構件[7](reusable component)是指具有相對獨立的功能和可復用價值的構件。構件可以包括軟件工作產品、軟件子系統、源代碼構件、構架、領域分析、設計、文檔、個案分析、經驗教訓、研究成果以及有創見的軟件工程思想與表述等[8]。
軟件構件的分類方法很多,根據構件的不同側面可以分為不同的種類。分析應用系統的本質,可以發現其中通常包含以下3類成分[7]。
通用基本構件是特定于計算機系統的構成成分,如基本的數據結構、展現構件、邏輯構件、運算構件、基礎服務等,可以存在于各種應用系統中。
領域共性構件是應用系統所屬領域的共性構成成分,它們存在于該領域的各個應用系統中。在各行業領域中,這些構件具有極其重要的作用,所以領域共性構件的開發要從全局的角度進行開發,必須統一規劃,通盤考慮,聯合建設,使其能夠適應行業領域內各專業領域的需要。
應用專用構件是每個應用系統的特有構成成分。應用系統開發主要在于前兩類構成成分的重復開發。應用系統中具體業務功能模塊就是應用專用構件的范疇。
首先,移動SNS以移動終端為媒介。當然,移動SNS也需要對用戶通過PC接入SNS網站進行信息的管理、與朋友的互通等。但是,移動SNS主要還是以手機移動終端作為用戶接入和使用SNS服務的手段,從而充分發揮移動終端的可攜帶性。這就要求移動SNS在網頁設計、用戶交互方式、信息傳遞方式等方面突出移動終端的特點。
第二,移動SNS以更為真實的社會關系為基礎。在移動SNS中,用戶主要通過手機接入,因此在技術上,很容易將SNS中的用戶與其真實身份聯系起來,從而使得在移動SNS中,更容易建立真實的社會關系。移動SNS最大價值體現在用戶關系上,要幫助用戶維護好第一度的聯系,促進信任關系的產生,方便關系擴展,不僅要為大家提供一個認識朋友的平臺,更要提供豐富多樣的線上線下社交活動,為用戶提供一種真實的社交生活;不僅使用戶的社交面更廣,同時也節約了使用者在拓展人際關系上所花費的時間成本、物質成本。
第三,將SNS與移動通信技術有機結合。移動通信是目前人們通信的主要手段之一,而通信行為絕大多數是基于一定關系的,如朋友、工作、商務等。基于SNS構建的各種社會化網絡,正好能夠體現這種多緯度的社會化關系。因此,基于SNS建立的社會化網絡關系數據以及其他的信息可以為用戶的通信提供有效的支持。同時,用戶的各種通信行為,很大程度上反映了用戶真實的社會關系,如果能夠得到有效的利用,將能夠為SNS社會關系的構建起到非常重要的支撐作用。
因此,本文設計的移動SNS平臺是基于實名制的,向用戶提供個性化服務、好友管理、同步通信錄、社區服務、開放平臺上的應用、站內搜索、溝通交流、管理平臺、移動通信服務等功能。這些功能可以Web頁面的方式提供,用戶可通過PC或者手機終端接入進行手工操作,也可以API的方式供其他應用使用,以使得SNS建立的社會關系信息能夠促進其他網絡服務或應用的更加有效的使用。而作為運營移動SNS的服務商應當能夠有效地管理移動SNS相關數據,所以提供了業務運營商的應用管理功能。
因此移動SNS的主要功能包括下面幾種。
·個性化服務:移動SNS需要為用戶提供方便展示自己個性的地方,從而讓其他用戶能夠全面完整地了解用戶。
·好友管理:移動SNS需要為用戶對其各種人際關系進行的操作管理提供支持。
·移動通信錄:可以在個人電腦、掌上電腦、移動電話等任何聯網設備上錄入聯系人的移動電話號碼、固定電話號碼、E-mail、QQ、MSN和通信地址等通信錄信息,或對以前的信息進行分組、管理和更新。
·社區服務:移動SNS需要為用戶方便地構建和管理社區提供支持。
·開放平臺上的應用:移動SNS需要為各種應用與移動SNS的交互提供良好的支持。
·站內搜索:能夠為用戶提供方便的搜索功能。
·管理平臺:移動SNS用戶可以對自己的以上相關操作進行批量管理。
·移動通信服務:移動SNS能夠提供短信、彩信、視頻和位置等移動通信相關功能。
移動SNS系統總體架構,如圖1所示,其中包括了移動SNS客戶端、移動SNS服務端、移動網絡運營商系統和第三方服務4個域。用戶通過終端登錄移動SNS服務域,具有編程能力的終端提供相關系統支撐模塊;移動SNS服務運營域根據請求為用戶提供相關業務服務,其中有可能通過與第三方服務或者移動網絡運營商系統交互共同完成。
移動SNS服務端架構是移動SNS系統架構的核心,圖1中的虛線部分為移動SNS服務端。移動SNS服務端位于用戶、第三方應用服務和移動通信服務提供商的中心位置,其通過與上述3種角色間的交互完成社交服務。下面詳細介紹移動SNS服務端提供服務的相關技術。


根據移動SNS服務端架構 (見圖1)中列舉的移動SNS服務端的有關功能,本節設計出服務端系統的功能模塊結構(見圖2)。圖2所示是傳統的應用軟件系統劃分方法,移動SNS服務端系統由若干子系統組成,而每個子系統又由若干個業務模塊組成,可以根據實際情況考慮是否要將業務模塊繼續細分為業務子模塊。比如,移動通信服務可以劃分成短信服務、彩信服務、位置服務、視頻服務子模塊。其實這樣的拆分,就是一個構件業務化分割的過程。而在基于面向構件開發的過程中,應用專用構件就對應著模塊這個層次。因此,可以將上述各個功能模塊映射成為相應的應用專用構件,然后確定應用專用構件需求,最后還要確定哪些構件是可復用的應用專用構件。應用專用構件描述并實現了某個相對獨立的業務功能模塊。例如,圖2中的“移動通信服務”就可以作為一個獨立的業務功能模塊,也適合以應用專用構件形式分割。
在構建移動SNS服務端系統的體系結構后,就可以確立“橫切豎割,構件編織”的構件模型架構。各個子系統的功能以業務構件的形式進行部署,這樣,一個應用專用構件將通過各個層次的領域共性構件和通用基本構件的協作來完成移動SNS服務功能的運行,而各個層次的構件則由具體的構件環境和應用服務器進行解析執行。從這個角度看,應用專用構件是由不同層次上的構件組合而成的。圖3是由構件封裝的移動SNS服務端系統架構。

分層的體系結構可以避免系統部件的耦合,實現了對功能的分割和保護,提高了開發的效率,可以降低系統的復雜性,增強系統的可擴展性、可復用性和可維護性,因此,適合變化復雜的移動SNS服務端系統。
根據移動SNS服務端的特點,采用面向構件方法的分層策略,設計了如圖4所示的移動SNS服務端的邏輯層次結構。
移動SNS服務端的邏輯層次自頂向下分別是:應用層、展現層、邏輯層、基本能力數據層和API數據交換。這些層次正對應著各層構件。下面是各層構件的詳細描述。
(1)移動SNS應用專用構件
移動SNS應用專用構件對應不同移動SNS系統的特色應用,屬于移動SNS應用專用構件范疇。能夠完成移動SNS具體業務功能。本文所提系統的應用專有構件包括:推薦服務、個性化服務、好友管理、移動通信錄、社區服務、第三方應用管理、移動通信服務和位置服務等。
(2)移動 SNS展現構件
移動SNS展現構件對應著展現層,負責系統的界面表現、控制頁面的流轉和對業務服務的調用,并控制頁面和業務服務之間的數據傳遞。
(3)移動 SNS通用構件
移動SNS通用構件對應著邏輯層,對移動SNS的屬性和功能進行邏輯控制,體現移動SNS的業務規則;提供對移動SNS數據、移動通信功能、計費和Internet服務各項處理,滿足移動SNS的功能需求;確保對移動SNS業務和移動SNS信息展現的有效性和合理性。
“SNS+LBS”是將SNS與移動通信中的位置服務結合生成高級的、能夠實現移動SNS運營商為用戶提供與位置服務相關的交友業務和應用業務。其在系統架構和開發中表現很簡單,只要調用底層基本能力封裝的移動運營商提供的位置服務、第三方提供的地圖展示接口,即可形成定制的位置相關的服務流程。

“SNS+彩信”是將SNS與移動通信中的彩信服務結合生成高級的、能夠完成移動SNS運營商為用戶提供與彩信服務相關的交友業務和應用業務。其在系統架構和開發中表現很簡單,只要調用底層基本能力封裝的移動運營商提供的彩信服務接口即可。
“SNS+短信”是將SNS與移動通信中的短信服務結合生成高級的、能夠完成移動SNS運營商為用戶提供與短信服務相關的交友業務和應用業務。其在系統架構和開發中表現很簡單并且目前短信業務平臺非常多,沒有什么特色而言。
“SNS+視頻”是將SNS與移動通信中的視頻服務結合生成高級的、能夠完成移動SNS運營商為用戶提供與視頻服務相關的交友業務和應用業務。其在系統架構和開發中相對復雜,對于點對點的服務類似于視頻通話業務,對于點對多點的服務類似于多媒體會議業務,其應用對移動通信網絡帶寬和質量要求較高,目前尚不宜作為主打應用推廣。
SNS也與互聯網上已有的其他服務結合,如即時消息(QQ、MSN 等)、RSS、Blog、VIKI等,這些應用通過調用第三方開放的接口和SNS中的關系數據為上層提供支持。
SNS用戶數據分析是用來匯總和分析注冊用戶的個人數據、交友網絡數據、生成內容數據(如發帖和照片等)和行為數據(如上下線時間、在線時長等)等應用移動SNS服務過程中所產生的各類數據,其分析結果可在服務端為客戶提供更精準化、個性化的服務時提供參考。具體內容可參見§5.2。
(4)移動SNS基本能力與數據構件
該層構件對應著基本能力和數據層,為各項移動SNS應用提供基本能力和數據服務,包括數據庫、短信、彩信、位置、視頻、計費和Internet開放服務等,可以根據實際情況在其中增減各層次的構件,并提供對關系和多維數據庫的支持。通過基本能力與數據層,能夠成功地收集、管理移動SNS基本數據信息和獲取移動通信服務能力。
(5)各層次開放 API構件
各層次開放API構件對應著基本能力與數據層、邏輯層、展現層,對于不同外部應用的需求級別給予不同層次的開放能力。由于移動SNS系統和其他交互的外部系統的結構環境的差異,因此,面臨的是一個物理上分散、異質異源的環境。在這樣一個異構環境中,如果沒有統一的、接口良好的、包容性很強的信息集成和處理技術來為不同系統提供數據服務和業務邏輯計算服務,移動SNS服務端系統就很難做到真正的一體化,因此必須解決異構環境中的數據交換和功能利用問題。API構件將異構數據的組織形式轉換成統一的數據形式,解決系統的信息集成問題;同時將異構系統間的消息交互和功能互用轉換成統一的調用格式,方便系統間交互。
(1)構件粒度
構件的粒度可以分為粗粒度、中等粒度、細粒度。對于粗粒度的構件來講,往往含有非常復雜的業務邏輯;而中等粒度的構件是由細粒度的構件組成的,其中含有一些不復雜卻特殊的業務邏輯;細粒度構件往往是由一些RAD工具提供的,它具有很清晰的邏輯結構。在移動SNS服務端系統的設計中,粗粒度構件主要指應用專有構件,中等粒度構件主要指領域共性構件,細粒度構件指通用基本構件。
(2)構件粒度模型
為了識別出構件的類型(通用基本構件、領域共性構件、應用專有構件),有必要通過定量公式計算業務構件的粒度,以保證得出合理的構件設計結果。構件的粒度計算離不開業務用例。業務用例的內部實現流程通常采用活動圖描述,經驗表明,過程構件粒度隨著活動圖中的分支數和活動數這兩個因素而線性增加。參考文獻[9]提出構件粒度計算式如下:

其中,PC為某過程構件,Granularity為該構件的粒度,u為過程構件所聚集的某一用例,Branch(u)為該用例的活動圖中的分支數,Activity(u)為該用例的活動圖中的活動數,α為分支數所占的權重比例,β為活動數所占的權重比例,α+β=1。對于一般的業務用例,可以認為合理的α值為0.6,β值為0.4;但是,對于某些分支條件很多(大于7)的業務用例,可將α值提高為0.7,β值降低為0.3,以更好地反映實際特征。在移動SNS服務端系統中,通用基本構件將α調整為0,領域共性構件和應用專有構件按照上述式子適當調整α和β參數。
鑒于上述式量化粒度還是比較粗糙,還不能很好反映運行時業務構件的粒度,在其基礎上,還可繼續擴展其計算方法為分別代表串行結構、循環結構、選擇結構、并行結構中的活動數,r為經過評估后循環執行的次數,ci為選擇分支中的可能概率。那樣,粒度計算式可改寫為:(αus+βul+χuc+δup)×(w1,w2,…,wtotal)T,其中(w1,w2,…,wtotal)T是用例中每個活動的權值,并且 α+β+χ+δ=1。設計構件時可以適當調整 α、β、χ、δ權值,從而體現構件的粒度值。
根據移動SNS服務端功能模塊劃分和邏輯層次結構的定義,設計出適合異構網絡應用的移動SNS服務端軟件架構,如圖5所示。
移動SNS服務端軟件架構由移動SNS核心模塊(mobile SNS core)和移動SNS服務模塊(mobile SNS service)組成。移動SNS核心模塊為移動SNS運營平臺的搭建提供技術支持,移動SNS服務模塊為開發、執行第三方應用提供技術支持。
移動SNS核心模塊由模板引擎(template engine)和移動SNS擴展模塊組成。模板引擎提供了定制模板的運行環境,其中模板管理(template manager)模塊定義模板、維護模板,模板運行(template runtime)負責解析、展現模板。模版引擎采用模版代碼分離技術,將網站管理功能、模版制作和前臺程序模塊3層分離,實現了日常網站管理的易用性、模版定制的任意性、程序模塊的獨立性等3項滿足個性化網站開發的需求。移動SNS擴展模塊包括WAP、Web瀏覽器的擴展功能和一些完成移動SNS業務的引擎。Web Extension是Web核心模塊的擴展,提供一些通用的標記語言,為第三方開發應用提供統一規范。Ajax Extension是Ajax核心功能的擴展,綁定一些移動SNS功能的動態頁面應用。JS Extension是JS腳本的擴展,為開發者提供通用的JS函數和標準。JS通過調用擴展的Ajax模塊功能實現用戶的異步數據獲取。WAP Extension是WAP核心的擴展,定義支持WML的通用的標記語言,為開發者提供統一的WML開發規范。移動SNS引擎(mobile SNS engine)由工作流引擎(workflow engine)、搜索引擎(search engine)、實體引擎(entity engine)組成。工作流引擎(workflow engine)負責解析、執行工作流。搜索引擎(search engine)負責文本、圖片、內容、數據等在移動SNS系統內搜索。實體引擎(entity engine)負責數據庫定義、數據查詢、數據維護。

移動SNS服務為第三方應用開發提供開放API管理(API management)和第三方應用服務 (third application service)。第三方應用服務主要提供了應用定義(application creation)和應用監管(application monitor)。應用定義負責第三方應用的定義,提交移動SNS工作流系統執行,應用監管負責監督、管理第三方應用的執行。
移動SNS是一個熱點研究領域,然而目前的研究都不能解決平臺復雜度高、模塊復用率低、系統結構靈活性較差、不能快速適應應用變化、第三方系統之間的有機集成困難等問題。本文提出了移動SNS服務端架構,給出了詳細功能描述,提出了移動SNS構件模型,描述了移動SNS構件間邏輯層次關系,提出了構件粒度模型,提出了移動SNS服務端軟件架構,為移動SNS服務端設計提供了一套有效的解決方案。
然而,移動SNS的終端用戶設備能力差距較大,因此需要提出一個適應能力較強的終端架構;另外,移動SNS要能提供異構網絡環境的第三方應用集成,因此需要提出移動SNS的異構網絡應用集成方法。
1 Ellison N B,Steinfield C,Lampe C.Social network sites and society:currenttrendsand future possibilities.Interactions Magazine,2009,16(1):6~9
2 Haobin Zhong,Lingyan Bi,Zewei Feng,et al.Research on the design method of mobile social network services.In:International Conference on Information Management,Innovation Management and Industrial Engineering,Taipei,Taiwan,2008
3 Song Li,Wendong Wang,Yidong Cui,et al.A novel prefetching method forscene-based mobile socialnetwork service.In:International Conference on Broadband Network and Multimedia Technology,Beijing,China,2010
4 Quan Chen,Yang Ji,Chunhong Zhang.Implementation of cloud and terminalcollaboration MSNS system.In:International Conference on Advanced Computer Theory and Engineering,Chengdu,China,2010
5 Yanpeng Wei,Zhigang Wen,Chunxiao Fan,etal.The simulation platform for mobile social networking.In:International Conference on Broadband Network and Multimedia Technology,Beijing,China,2010
6 張龍昌,劉志晗,董昊.基于FOAF的分布式移動SNS應用.電信科學,2010,26(5):88~92
7 楊芙清,梅宏,李克勤.軟件復用與軟件構件技術.電信科學,1999,15(2):68~75
8 林正奎,楊德禮.軟件構件復用技術綜述.計算機工程與設計,2004,25(6):877~880
9 徐偉,尹寶林.企業信息系統業務構件設計研究.軟件學報,2003,14(7):1 213~1 220