使用WCF實現SOA面向服務編程—— 架構設計

作者: 風塵浪子  來源: 博客園  發布時間: 2011-04-12 11:07  閱讀: 11622 次  推薦: 2   原文鏈接   [收藏]  

  SOA本身就是一種面向企業級服務的系統架構,簡單來說,SOA就是一種進行系統開發的新的體系架構,在基于SOA架構的系統中,具體應用程序的功能是由 一些松耦合并且具有統一接口定義方式的組件(也就是service)組合構建起來的。因此,基于SOA的架構也一定是從企業的具體需求開始構建的。但是,SOA和其它企業架構的不同之處就在于SOA提供的業務靈活性。業務靈活性是指企業能對業務變更快速和有效地進行響應、并且利用業務變更來得到競爭優勢的能力。對企業級架構設計師來說,創建一個業務靈活的架構意味著創建一個可以滿足當前還未知的業務需求的IT架構。使用WCF實現SOA,正好可以利用WCF的靈活性,把業務層封裝,發布為Web服務。這樣可以降低系統的耦合度,加大對未知業務的擴展性。

  Web服務本來就是沒有區分代碼的,在這個例子里在下多開發了一個Service Interface目的是為了使系統更易于管理。在開發期間,Service是不斷更改的,如果在UI層上直接調用服務層,那更改將會是頻密的,所以在這里在下開發一個Service Interface層目的是為了把WSDL集成在同一個DLL程序集里面,進行統一修改。最后UI層只要直接調用Service Interface,就可以對系統直接進行操作。要以不同開發工具來實現Service Interface,這個的代價并不大,開銷是可以承擔的。下面附上最簡單的例子,希望有經驗的高手給予點評,有不妥的地方請多加指教。

 
//實現Ucsmy.Portal.BLL層
namespace Ucsmy.Portal.BLL
{

public class ExampleManager
{

public IList<Example> GetList(int workers)
{
IExampleDAL examleDAL
= DataAccess.CreateExampleDAL();
return examleDAL.GetList(workers);
}
}
}


//在Ucsmy.Portal.Service層里使用WCF直接調用BLL層里面的方法
namespace Ucsmy.Portal.Service
{
[ServiceContract(Namespace
="Ucsmy.Portal.Service")]
public interface IExampleService
{
[OperationContract]
IList
<Example> GetData(int workers);
// TODO: 在此添加您的服務操作

}

public class ExampleService : IExampleService
{

public ExampleManager exampleManager;

public ExampleService()
{
exampleManager
= new ExampleManager();
}


public IList<Example> GetData(int workers)
{
IList
<Example> exampleList = exampleManager.GetList(workers);
if (exampleList != null)
return exampleList;
else
return new List<Example>();
}
}
}

  在原代碼中,在下以Ucsmy.Portal.ServiceFactory實現Service Interface層,其實這個ServiceFactory沒有太多工作,只是對WCF添加服務引用,然后直接生成DLL即可。當然這只是初步的做法,在日后完善代碼的時候,這一層還需要對WCF的生命流程進行管理。

  最后在UI層只要直接添加對Service.Portal.ServiceFactory的引用就可以直接運行,無需再理會BLL,DAL.......等復雜的邏輯轉換。在實現多功能分布式開發的時候,以WCF實現的SOA的開發方式更能展示其優勢。在現代的大型企業系統開發過程中,系統往往會使用B/S,C/S混合的開發模式。在以往的開發過程,開發人員往往把B/S,C/S分開來實現。在使用WCF技術后,開發人員可以把功能模塊統一發布為WCF,然后綁定不同的endpoint進行發布,將B/S和C/S方式的業務邏輯層真正地融合在一起,從而降低開發難度。

  使用WCF實現SOA,可以對事務、安全、編碼等進行統一管理,協調了各服務器之間的系統操作。它涵蓋了之前微軟推出的所有用于分布式開發的技術,包括Remoting、Web Services、WSE、MSMQ等,并以一種統一的編程模式來實現。WCF既支持具有互操作性的Web服務,也能夠實現.NET客戶端 與.NET服務端的通信,提供了分布式事務的支持,同時在安全性上,它完全遵循了WS-*的標準,此外,它還支持隊列服務,可以非常方便地利用消息隊列完 成異步操作與脫機調用。在眾多優點的支持下,使用WCF實現SOA面向服務開發不失為一種理想地選擇。

  下載原代碼

2
0
 
標簽:.NET WCF SOA
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()