新聞中心
很多開發(fā)人員對于Winform還比較熟悉,對于WCF還是有一定理解上的難度的。本文將從一個由Winform轉(zhuǎn)入WCF的開發(fā)人員的角度,來進(jìn)行仔細(xì)的思考。

小生是做Winform出身的,最近一直想往BS方面轉(zhuǎn),覺得WCF對我是一個好的切入點(diǎn),于是看了一些WCF的資料,個人感覺,去學(xué)習(xí)一門技術(shù),是容易的,難的是怎么把這門技術(shù)和自己己有的知識融會貫通,我學(xué)習(xí)WCF的動機(jī)比較簡單的,先學(xué)習(xí)了WCF,把自己現(xiàn)的Winform的系統(tǒng)的業(yè)務(wù)邏輯封裝在WCF,形成Winform +WCF的結(jié)構(gòu),然后再著手進(jìn)行BS的系統(tǒng)。
即
Step 1.Winform + 本地業(yè)務(wù)邏輯
Step 2.Winform + WCF
Step 3.Winform + Browser + WCF
Step 4.Browser + WCF
但是剛一開始接觸WCF ,感覺很不習(xí)慣 ,原因很簡單。
但如我有一個類。
- class A{
- A(String id);
- void op(){};
- B getB(){};
- String p1{get;set;}
- }
- class B{
- string id;
- void op2();
- }
在這里,我是沒辦法直接將A轉(zhuǎn)為一個服務(wù)的,原因很簡單,如果A作為服務(wù)以后,那么B只能作為這個一個服務(wù)的數(shù)據(jù)約來實(shí)現(xiàn)。
B的操作op2就實(shí)現(xiàn)不了。
剛開始,很不理解 ,覺得這樣設(shè)計(jì)就相當(dāng)于沖突了。因?yàn)椋?即使A,B都作為服務(wù),管理起來也很混亂 。
而網(wǎng)上關(guān)于WCF的教程,都是實(shí)現(xiàn)方面的。
沒有設(shè)計(jì)方面的介紹。
自己想了一下,呵呵,達(dá)人們不要笑,這個對俺確實(shí)很難,俺得弄清楚這些的事的來龍。
覺得在真正的服務(wù)的實(shí)現(xiàn)中,相當(dāng)于把一個類的操作和數(shù)據(jù)分開,來降低粒度和耦合,這和OO的思想是不沖突 。
在WCF中,對A,B的邏輯應(yīng)該如下處理.
首先對于A,把A分解成ServiceA和DataContractA兩個類,其中ServiceA作為WCF的服務(wù)契約,而DataContractA作為數(shù)據(jù)契約
- Code
- class ServiceA{
- DataContractA Op(DataContract A);//對應(yīng)于A.op()
- DataContractA GetDataContractA(string id);//對應(yīng)于A的構(gòu)造函數(shù)
- DataContractB GetB(DataContrac A);//對應(yīng)于A.getB()
- }
- class DataContractA{
- String p1{get;set;}//對于應(yīng)A的屬性p1
- }
對于Class B也做類似處理。
- class ServiceB{
- DataContractB Op2(DataContractB b);//對應(yīng)于B.op2
- }
- class DataContractB{
- string id{get;set;}//對應(yīng)于b.id
- }
這樣,原來的邏輯很正常過渡到WCF服務(wù)了
鏈接:http://www.cnblogs.com/geyunfei/archive/2009/11/01/1594066.html
當(dāng)前標(biāo)題:淺析由Winform轉(zhuǎn)入WCF的思考
網(wǎng)站URL:http://m.5511xx.com/article/cdiicce.html


咨詢
建站咨詢
