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
{
publicclass 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")]
publicinterface IExampleService
{
[OperationContract]
IList<Example> GetData(int workers);
// TODO: 在此添加您的服務操做
}
publicclass 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
returnnew 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面向服務開發不失爲一種理想地選擇。異步