2011-11-24 62 views
2

我一直在閱讀關於在我的Silverlight項目中使用[DataContract]指定的類。我知道他們會被序列化並傳遞給客戶端來傳遞信息。[DataContract]類中的代碼

除此之外,您似乎可以在某些情況下向這些類添加代碼。現在我正在閱讀的這本書給出了一個Silverlight應用程序和託管Web項目的例子。這不像我的項目,因爲我有一個單獨的WCF服務,它通過IIS託管。這並不完全相同。我希望在我的應用程序和此WCF服務之間有一個帶有共享代碼的Datacontact類。

我已經有[DataConract]類的設置和所有,它可以通過WCF服務和應用程序之間的罰款。我只是想知道如果這樣做,而不是在一個解決方案中完全禁止我在[DataContract]類中添加代碼。

好的,謝謝你的閱讀。

回答

4

在大多數情況下,您希望避免數據合同類中的任何邏輯。通過引用Web服務創建的客戶端無法生成您可能在服務器端使用的任何自定義方法。

當然,這並不禁止你將邏輯放在這些類中。只是它不會在客戶端提供。

相反,您可以創建將用於客戶端和服務器端的共享庫,並將類負責數據合同操作/業務邏輯。如果您遵循該路線,您可能需要查看Portable Class Library - 它允許您創建既可用於服務器端也可用於Silverlight客戶端的程序集。

另一種選擇是鏈接從服務器項目到Silverlight客戶端項目的數據約定類。您可以使用添加 - >現有項目 - >添加爲鏈接選項從Visual Studio中執行此操作。這也可以讓你在服務器和客戶端之間共享代碼,但是它有時會變得相當混亂(考慮到Silverlight的限制)。