|
SOA本身就是一種面向企業(yè)級(jí)服務(wù)的系統(tǒng)架構(gòu),簡(jiǎn)單來(lái)說(shuō),SOA就是一種進(jìn)行系統(tǒng)開(kāi)發(fā)的新的體系架構(gòu),在基于SOA架構(gòu)的系統(tǒng)中,具體應(yīng)用程序的功能是由一些松耦合并且具有統(tǒng)一接口定義方式的組件(也就是service)組合構(gòu)建起來(lái)的。因此,基于SOA的架構(gòu)也一定是從企業(yè)的具體需求開(kāi)始構(gòu)建的。但是,SOA和其它企業(yè)架構(gòu)的不同之處就在于SOA提供的業(yè)務(wù)靈活性。業(yè)務(wù)靈活性是指企業(yè)能對(duì)業(yè)務(wù)變更快速和有效地進(jìn)行響應(yīng)、并且利用業(yè)務(wù)變更來(lái)得到競(jìng)爭(zhēng)優(yōu)勢(shì)的能力。對(duì)企業(yè)級(jí)架構(gòu)設(shè)計(jì)師來(lái)說(shuō),創(chuàng)建一個(gè)業(yè)務(wù)靈活的架構(gòu)意味著創(chuàng)建一個(gè)可以滿足當(dāng)前還未知的業(yè)務(wù)需求的IT架構(gòu)。使用WCF實(shí)現(xiàn)SOA,正好可以利用WCF的靈活性,把業(yè)務(wù)層封裝,發(fā)布為Web服務(wù)。這樣可以降低系統(tǒng)的耦合度,加大對(duì)未知業(yè)務(wù)的擴(kuò)展性。
Web服務(wù)本來(lái)就是沒(méi)有區(qū)分代碼的,在這個(gè)例子里在下多開(kāi)發(fā)了一個(gè)Service Interface目的是為了使系統(tǒng)更易于管理。在開(kāi)發(fā)期間,Service是不斷更改的,如果在UI層上直接調(diào)用服務(wù)層,那更改將會(huì)是頻密的,所以在這里在下開(kāi)發(fā)一個(gè)Service Interface層目的是為了把WSDL集成在同一個(gè)DLL程序集里面,進(jìn)行統(tǒng)一修改。最后UI層只要直接調(diào)用Service Interface,就可以對(duì)系統(tǒng)直接進(jìn)行操作。要以不同開(kāi)發(fā)工具來(lái)實(shí)現(xiàn)Service Interface,這個(gè)的代價(jià)并不大,開(kāi)銷是可以承擔(dān)的。下面附上最簡(jiǎn)單的例子,希望有經(jīng)驗(yàn)的高手給予點(diǎn)評(píng),有不妥的地方請(qǐng)多加指教。
//實(shí)現(xiàn)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直接調(diào)用BLL層里面的方法
namespace Ucsmy.Portal.Service
{
[ServiceContract(Namespace="Ucsmy.Portal.Service")]
public interface IExampleService
{
[OperationContract]
IList<Example> GetData(int workers);
// TODO: 在此添加您的服務(wù)操作
}
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>();
}
}
}
NET技術(shù):使用WCF實(shí)現(xiàn)SOA面向服務(wù)編程—— 架構(gòu)設(shè)計(jì),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。