2010-11-24 48 views
0

編碼器,我正在設計/實現(是的,都在同一時間)我自己的CMS的原型。我使用Asp.net,WCF和silverlight。到目前爲止,我有我的項目如下模式:Asp.net + Silverlight + WCF和n層架構

表示層[Silverlight的& Asp.net/html]> WCF>商業邏輯>數據庫

我的模型的目標是使它容易程度在未來的應用。可以從任何可以使用我的WCF服務的應用程序訪問應用程序。

不幸的是,我在實現我的模型時遇到一些困難。在我看來,如果我有我的解決方案三個項目:

解決方案:

  • -Asp.net [演示層]
  • -Silverlight [演示層]
  • -WCF [WCF和業務邏輯]

然後,我將不得不在我的表示層和我的WCF層重複很多類。

這裏是一個場景:假設我在我的WCF中有一個Post類,這是我的BL的一個實現。在創建服務引用的客戶端實例之後,我可以使用諸如client.AddPostAsync(post參數)之類的行添加一個來自我的PL的新帖子。但是,如果想通過調用WCF方法來檢索我的PL中的Post對象,那麼我將不得不在我的PL中實現一個Post類,這與我的WCF中的Post類完全相同!

因此,從長遠來看,我將結束與無論是在我的WCF層和我的PL類很多重複。我覺得有些東西我不明白,或者我在模型中弄亂了某些東西?請幫忙!

+2

當您將服務引用添加到您的表示層時,它會爲您生成所有數據合同。您不必再次定義它們。如果我錯過了一些東西,你可以給你的WCF方法的完整方法原型? – Andrew 2010-11-24 06:32:31

回答

0

事實上你沒有從在Silverlight WCF服務複製類(與DataContract屬性),它們將被簡單地自動創建當你創建一個服務引用到WCF服務。

Howether他們會很簡單basicly商店數據的字段類,所以我能理解你可能想在Silverlight創建一些功能重複,如果你需要它們背後的一些邏輯。我在我的項目中使用相同的模型,也有這個問題。

我想你應該計劃你的建築提前知道這一點,使這些WCF繼承的類越來越看起來像DataTransferObject模式類,以避免大規模的集體重複。

+0

我注意到的一件事是,我只能在client_GetPostsCompleted(..)方法中設置事件處理ex)之後調用類。它是否正確? – ealshabaan 2010-11-24 14:52:43