從winform轉入wcf的初步思考

來源:互聯網
上載者:User

從OO到wcf

小生是做winform出身的,最近一直想往BS方面轉,覺得WCF對我是一個好的切入點,於是看了一些wcf的資料,個人感覺,去學習一門技術,是容易的,難的是怎麼把這門技術和自己己有的知識融會貫通,我學習wcf的動機比較簡單的,先學習了wcf,把自己現的winform的系統的商務邏輯封裝在wcf,形成winform +wcf的結構,然後再著手進行BS的系統。

Step 1.Winform + 本地商務邏輯

Step 2.Winform + WCF

Step 3.Winform + Browser + WCF

Step 4.Browser + WCF

但是剛一開始接觸wcf ,感覺很不習慣 ,原因很簡單。

但如我有一個類。

 

class A{

A(String id);

void op(){};

B getB(){};

String p1{get;set;}

}

class B{

string id;

void op2();

}

 

在這裡,我是沒辦法直接將A轉為一個服務的,原因很簡單,如果A作為服務以後,那麼B只能作為這個一個服務的資料約來實現。

B的操作op2就實現不了。

剛開始,很不理解 ,覺得這樣設計就相當於衝突了。因為, 即使A,B都作為服務,管理起來也很混亂 。

而網上關於wcf的教程,都是實現方面的。

沒有設計方面的介紹。

自己想了一下,呵呵,達人們不要笑,這個對俺確實很難,俺得弄清楚這些的事的來龍。

覺得在真正的服務的實現中,相當於把一個類的操作和資料分開,來降低粒度和耦合,這和OO的思想是不衝突 。

在wcf中,對A,B的邏輯應該如下處理.

首先對於A,把A分解成ServiceA和DataContractA兩個類,其中ServiceA作為wcf的服務契約,而DataContractA作為資料契約

Code
class ServiceA{

DataContractA Op(DataContract A);//對應於A.op()

DataContractA GetDataContractA(string id);//對應於A的建構函式

DataContractB GetB(DataContrac A);//對應於A.getB()

 

}

class DataContractA{

String p1{get;set;}//對於應A的屬性p1

}

對於Class B也做類似處理。

 

class ServiceB{

DataContractB Op2(DataContractB b);//對應於B.op2

}

class DataContractB{

string id{get;set;}//對應於b.id

}

 

 

這樣,原來的邏輯很正常過渡到wcf服務了。

這是小弟的一些理解 ,請達人們拍磚

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.