2012-06-10 24 views
0

我們有一個n層體系結構:n-tier,Linq和WCF

-a WCF服務與數據庫通信並處理所有的業務邏輯。 - 與WCF服務通信的ASP.NET MVC網站。

這裏是數據序列-反序列化從數據庫到一個「吉他」的HTML視圖一個場景:

-Guitar_1通過LINQ產生的類, -Guitar_2的DataContract通過WCF服務暴露,並且由ASP.NET MVC網站使用。 -Guitar_3模型傳遞到視圖

當最終用戶想要檢索一把吉他時,吉他_1被轉換成吉他_2,然後轉換成吉他_3。這真的不是問題,但如果最終用戶請求吉他列表,那麼對於每個吉他(一個循環)重複所有這些過程。

如果我不得不以編程方式處理所有序列化 - 反序列化的東西,我每層只有一個類。它仍然可以通過在Linq類上註釋'DataContract'/'DataMember'在wcf項目上完成,但是如果我刷新我的數據庫模型,所有我的註釋消失(ASP.NET MVC項目中的相同情況,刷新服務引用刪除所有添加的代碼)。

另外,使用這些自動序列化器真的更有成效嗎?編寫串行器 - 解串器花費的時間與註釋類(DataContract/DataMember)和處理Guitar_1類到Guitar_2的轉換時間一樣多...加上性能損失(循環和轉換)...

你們認爲什麼?因爲這個原因,你們有沒有像過去那樣編碼?

UPDATE:如所建議的通過 '作者Abhijit噶當派',I用於局部類消耗WebService時,但是,我發現了一個更好的解決方案使用LINQ2SQL時:POCO類。

+0

正如你所說「如果我刷新我的數據庫模型,所有我的註釋消失」>>>>>>>>>您是否首先使用EntityFramework模型?那麼爲什麼不使用partial class進行註釋呢? –

回答

2

如果主要擔心由框架創建的模型類會自動重新生成,並且您更改爲類似註釋的類似內容已被刪除,那麼您可以使用partial classes, info here。如果自動生成的類是Employee。然後在單獨的文件中創建一個部分類Employee,並在這個部分定義中包含要註釋的字段。這個班不會被消滅和重新培訓。但是,當編譯代碼時,生成的Employee類將是原始Employee類+部分定義的Employee類的組合。

也從類Guitar_1轉換到Guitar_2是好的,有時我們必須做這樣的事情來滿足特定的要求。我更喜歡通過網絡傳輸JSON數據,比如從WCF到MVC Web,然後瀏覽器將從MVC APP中獲取JSON數據。然後,我使用jsrender或knockout等框架將數據呈現爲客戶端(瀏覽器)上的HTML。 JSON是可讀的,緊湊的JavaScript和JavaScript庫愛json。

+0

謝謝,我對部分類不太熟悉,所以我不知道我們可以'重複'屬性。問題解決了! – Akli