摘要:基于WCF的統一用戶視圖(Union User View,簡稱UUV)服務組件采用面向服務體系架構(SOA)思想和理論模式并應用WCF服務編程技術實現的輕量級服務組件,以統一服務的方式對公司組織架構和用戶基本信息進行管理,并提供接口規范供各應用系統調用以獲取公司組織架構和用戶基本信息,并保證整個貨代企業公司的用戶賬號一致,同時可實現一個用戶多重身份的功能,更好地實現了公司組織架構和用戶基本信息在各應用系統之間的數據共享與數據同步。
關鍵詞:統一用戶視圖;WCF;面向服務體系架構;服務組件
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2010)05-1214-03
Design And Implementation of Union User View Service Component Based on WCF
YAO Xue-mei1, ZHANG Biao2
(1.Guangdong Lingnan Institute of Vocational and Technical College of Information Engineering Teaching e-commerce, Guangzhou 510663,China; 2.Exhibition Information Technology Co., Ltd. Engineering 8, Guangzhou 510660,China)
Abstract:Union User View service component based on WCF uses service-oriented architecture (SOA) model of ideological and theoretical application of WCF services and programming services to achieve the lightweight components, and manages company's organizational structure and the basic user information in form of union services, and standardize the interface for applications calling for the organization's structure and the basic user information, and to ensure that the entire freight forwarding business user's account, at the same time achieve a multi-user identity The function, to better achieve the company's organizational structure and the basic user information in the application system and data sharing between data synchronization.
Key words: Union User View; Windows Communication Founation; Service Oriented Architecture; Service Component
基于SOA(Service Oriented Architecture)的架構設計把原有的功能封裝成服務,以服務或服務組合的形式組成業務流程,提高了已部署系統的靈活性,同時避免了因為業務變化而重新構建系統或者作大改動的麻煩,它不僅可以快速地對業務的變化作出響應,同時也能解決各應用系統之間存在的“信息孤島”問題,更好地實現數據共享與數據同步 [1]。
深圳某貨代公司原有的應用系統一直采用傳統模式的信息系統,由相互獨立的各個子系統組成,不同的子系統采用不同技術和平臺開發,造成各子系統之間的信息相互獨立,存在著較嚴重的“信息孤島”問題,在數據共享與數據同步方面存在嚴重的問題,如各應用系統之間的公司組織架構和用戶信息,目前企業的發展也已經受到了較嚴重的制約。基于WCF的統一用戶視圖(Union User View,簡稱UUV)服務組件的設計正是基于上述問題而提出的,它采用面向服務體系架構(SOA)思想和理論模式并應用WCF服務編程技術實現的輕量級服務組件,以統一服務的方式對公司組織架構和用戶基本信息進行管理,并提供接口規范供各應用系統調用以獲取公司組織架構和用戶基本信息,并保證整個貨代企業公司的用戶賬號一致,同時可實現一個用戶多重身份的功能,很好地實現了貨代公司組織架構和用戶基本信息在各應用系統之間的數據共享與數據同步。
1 SOA研究概述
面向服務的體系架構(Service Oriented Architecture,SOA)是信息化技術迅速發展下的一種全新的體系架構,是指為了解決在Internet環境下業務集成的需要,通過連接能完成特定任務的獨立功能實體實現的一種軟件系統架構[2]。SOA正成為新一代企業軟件架構的主流和趨勢,將會為整個企業級軟件架構設計帶來巨大的影響。
基于SOA的架構設計把原有的功能封裝成服務,以服務或服務組合的形式組成業務流程,提高了已部署系統的靈活性,同時避免了因為業務變化而重新構建系統或者作大改動的麻煩,它不僅可以快速地對業務的變化作出響應,同時也能解決各應用系統之間存在的“信息孤島”問題,更好地實現數據共享與數據同步,而且能夠適合企業動態性的架構,可以對企業的各種實際業務與功能需求做出快速反應,真正做到隨需而變[1]。
2 WCF服務編程技術
Windows通信基礎(Windows Communication Foundation,WCF),是微軟基于SOA推出的.Net平臺下的框架產品,它代表了軟件架構設計與開發的一種發展方向,是微軟推出的在Windows操作系統下開發面向服務應用程序的統一平臺 [4]。WCF是微軟應對SOA戰略而推出的一套基于.NET Framework下的SDK[5]。在基于WCF的統一用戶視圖服務組件設計與實現中,將利用WCF服務編程技術來實現組件所需各類服務的開發,包括數據契約和服務契約的定義、基本服務實現;并結合.NET組件開發技術完成服務組件的實現。WCF集成了.NET編程開發的習慣,極大地提高了基于SOA的應用系統開發的效率,保證了服務編寫的規范性和高質量[5]。
3統一用戶視圖服務組件的分析與設計
3.1 UUV概述
統一用戶視圖,Union User View,簡稱UUV,是為管理員進行公司組織架構和用戶基本信息管理,并提供接口規范供各應用系統調用以獲取公司組織架構和用戶基本信息,并保證整個貨代企業公司的用戶賬號一致,同時可實現一個用戶多重身份的功能。
3.2 邏輯結構
根據貨代企業實際的業務需求,統一用戶視圖的邏輯結構如圖1所示。
統一用戶視圖的邏輯結構主要包括以下幾個部分:
用戶信息庫:存放組織機構及用戶信息,用戶信息保持與Active Directory同步,組織機構信息以信息庫為準。
單點認證中心:對外提供開放式協議標準的HTTP接口和Web Services接口,供用戶和獨立應用系統(IAS)完成單點登錄操作。
組織機構及用戶管理:提供一系列用戶管理界面,管理用戶及組織機構信息。
應用管理模塊:管理應用系統角色權限控制,用于門戶個性化展現。
管理及查詢接口:為應用系統提供查詢用戶相關信息接口,同步實現用戶信息同步至各應用系統接口。
3.3 功能結構
統一用戶視圖中包括的功能模塊和功能點如圖2所示。
3.4 用戶模型
統一用戶視圖的本質,就是維護好機構、人員和人員組三者之間的關系。它們之間的關系圖3所示。
組織機構及用戶管理的管理對象是深圳某貨代企業所有的機構以及所有的工作人員,可以將機構和人員抽象為以下三個概念:
組織機構(ORG):是實際的貨代集體企業各部門的抽象概念
人員或者用戶(User):是現實中實際存在的人的抽象概念。規定一個人至少存在于一個部門下,即一個人員必須至少從屬于一個機構,但一個人可屬于多個組織機構。
組(Group):是人員或者部門的集合,統一用戶視圖只管理全局組,本地應用組由各應用系統維護。
組織機構、人員(用戶)、組的數據關系如圖4所示。
3.5 統一用戶視圖(UUV)服務組件接口設計
在基于WCF的統一用戶視圖服務組件的接口設計中,提供了內部接口和外部接口,內部接口主要提供給內部應用系統使用,外部接口主要提供給下屬單位在構建第三方的應用系統時使用。服務組件接口架構圖5所示。
1)內部接口設計
內部接口主要提供給內部應用系統使用[9],例如客戶管理、銷售管理等子系統,接口以內部服務方式提供,為了保障統一用戶視圖管理的唯一性,全部服務接口設計為只讀屬性。在應用系統中新建名為UUVInfo4IntranetSVC的服務,提供統一用戶視圖的內部接口調用,包括了查詢用戶信息、查詢組織信息、查詢所有的組織、查詢組信息等接口。
2)外部接口設計
外部接口主要提供給下屬單位在構建一些其他應用應用系統時,需要使用到用戶、組織架構等信息時,方便構建第三方的應用系統。在應用系統中新建名為UUVInfo4-InternetSVC的服務,提供統一用戶視圖的外部接口調用,其接口包括了同步用戶信息、同步組織機構信息、同步組信息、查詢組織接口等。
4統一用戶視圖服務組件的實現
根據統一用戶視圖服務組件設計的要求,將服務組件中可能被多次用到的功能模塊設計成服務,每一個功能模塊都有多項功能組成,其中每一個功能就是一個基本服務。基本服務的實現包括了數據契約的定義、服務契約即服務接口的定義、服務的實現[7]。
4.1 數據契約定義
數據契約,即Data Contract,定義了與服務交互的數據類型[4]。WCF為內建類型如int和string隱式地定義了契約,也可以非常便捷地將定制類型定義為數據契約。
在統一用戶視圖中,用戶信息包括了用戶ID、用戶登錄帳號、用戶中文名、用戶英文名、崗位、辦公電話、手機、小靈通、傳真、Email等,因此需要對用戶相關的信息定義好數據契約,以供服務消費者在調用服務是使用。用戶信息數據契約定義如下:
//用戶數據契約
[DataContract]
public class UserInfo
{ private Guid _userID;
private string _userAccount;
private string _userCNName;
private string _userENName;
……………………
///
/// 用戶ID
///
[DataMember]
public int UserID
{
get { return _userID; }
set { _userID = value; }
}……………………
}
由于DataContract將被序列化以及反序列化,因此類型中成員的順序也相當重要,在DataMemberAttribute中,提供了Order屬性,用以設置成員的順序[4]。
4.2 服務契約定義
服務契約,即Service Contract,又稱服務接口,描述了客戶端能夠之下的服務操作[4]。與面向對象的編程類似,在程序的編寫過程中先完成對服務接口的定義,然后在完成對服務操作實現[6]。
在WCF服務編程中,使用特性ServiceContractAttribute標定服務契約,OperationContractAttribute標定服務方法服務實現。IUserSVC的服務接口定義具體如下:
///
/// 用戶信息服務接口
///
[ServiceContract()]
public interface IUserSVC
{
///
/// 查詢所有的用戶信息
///
[OperationContract()]
IList
//其他接口方法定義………………
}
OperationContract只能用于Method,只有添加了此特性的方法才能被客戶端調用。SOA 只是分布式系統的架構體系,在架構體系內部依然采取面向對象的原則來編碼,所以標注私有方法是不被推薦的,這也是使用接口作為服務契約的一個好處[10]。
4.3 服務操作實現
在服務操作的實現過程,也將會涉及到對業務邏輯層相應方法的調用,業務邏輯層又會調用到數據處理層方法的調用,對于數據處理層和業務邏輯層的實現屬于傳統的面向對象多層結構編程[8],在此將不再做詳細介紹。
首先在項目中添加為UserSVC的WCF Service的新項,此時將會產生兩個文件UserSVC.svc和AppCode目錄下的UserSVC.cs文件。其中UserSVC.svc文件是WCF服務中用于識別隱藏在文件和類后面的服務代碼,類似與.asmx文件;而UserSVC.cs文件將是完成對服務契約(接口)操作實現的類文件。具體實現代碼如下所示:
///
/// 用戶信息服務實現類
///
public class UserSVC : IUserSVC
{
///
/// 查詢所有的用戶信息
///
public IList
{
return UserBLL.Instance.GetAllUser ();
}
///
///根據用戶登錄帳號查詢用戶信息
///
public UserInfo GetUserInfoByUserAccount (string userAccount)
{
return UserBLL.Instance.GetUserInfoByUserAccount(userAccount);
}
//其他接口操作實現………………
}
5 結束語
基于WCF的統一用戶視圖服務組件采用面向服務體系架構(SOA)思想和理論模式,并結合.NET組件開發技術和WCF服務編程技術實現的一套輕量級服務組件,以統一服務的方式對公司組織架構和用戶基本信息進行管理,很好地解決了貨代企業信息系統中各子系統之間存在的“信息孤島”問題,并保證整個貨代企業公司的用戶賬號一致,同時可實現一個用戶多重身份的功能,更好地實現了公司組織架構和用戶基本信息在各應用系統之間的數據共享與數據同步。
參考文獻:
[1] 李巍.構建下一代軟件架構SOA[EB/OL].http://tech.51cto.com/art/200601/16242.htm,2006.
[2] 單建洪,盧中延.SOA整合之道[M].北京:電子工業出版社,2008.
[3] SOA 在行業中的應用[EB/OL].http://www.ibm.com/developerworks/cn/webservices /ws-soaapp/index.html, 2004.
[4] Juval Lowy.WCF服務編程[M].張逸,徐寧,譯.北京:機械工業出版社,2008.
[5] (美)Craig M. Marc M. Nigel W.等著.WCF揭密[M].趙科平,譯.北京:人民郵電出版社,2008.
[6] 沙為超.基于Web服務的SOA應用研究[J].安徽大學,2007.
[7] 郭春燕.基于SOA的企業應用的研究與實現[J].大連理工大學,2005.
[8] 郭晉偉.SOA架構的管理信息系統設計與實現[J].中國科學研究生院,2006.
[9] 朱振杰.SOA的關鍵技術的研究與應用實現[J].四川:電子科技大學,2006.
[10] 張逸.WCF基礎知識問與答[EB/OL].http://www.cnblogs.com/wayfarer/archive/2008/ 04/15/1153775.-html,2008.
[11] Mikhail Genkin.SOA中的服務接口設計最佳實踐之一[EB/OL].http://dev.yesky.com/81/ 7749581.shtml,2008.