2008-12-30 57 views
1

我錯過了.Net遠程處理時間,當我只能通過線路發送對象時,它會在中間層的兩側工作而沒有太多工作。原因如下:將序列化的WCF對象轉換回本機對象

我已被賦予一項任務。我正在構建邏輯/數據抽象層(愚蠢的PCI合規性),以便我們可以將我們的數據庫服務器從公司網絡移到受保護的網絡中。我曾經在.Net 2.0下進行了一次這樣的項目,並且進行了遠程處理。我在中間件層上構建了該對象,並將該對象發送給客戶端,客戶端使用我的.Net對象進行工作。但是WCF需要序列化才能夠在管道中上下傳遞東西,並且序列化消除了我在我所使用的領域中做出令人難以置信的事情的奇特方法。 (1)將方法從類本身移到一個靜態實用程序類和(2)「反序列化」客戶端數據並重建本地對象與序列化對象的數據。

nativeObject.Name = serializedObject.Name; 

第二種方法的缺陷是我必須重新序列化對象,然後才能將其發送回中間件層。

serializedObject.Name = nativeObject.Name; 

這兩種方法的工作,但它正在書寫的對象採取比它應該,因爲這中間層造成整個系列化混亂的要長得多。我會回到.Net Remoting,但建築師說他希望在WCF中完成這個抽象層,因爲(我的話,不是他的)它是新的和性感的。

那麼,如何開始在WCF連接的兩側使用.Net本機對象......而無需編寫1000行膠水代碼。

回答

1

您可以生成一個代理並告訴它使用一組特定的類而不是創建新的代理。我相信這是使用svutil.exe的/ r參數完成的。如果你使用IDE(VS2008),你可以在添加一個服務引用點擊高級時做到這一點,並確保選擇了組件中的重用類型(我認爲是默認值)。

+0

因此,事實證明,我的設計缺陷是我忘記將模型組件包含在ServiceReference項目中。我不知道我是個白癡還是你是個天才。所以我可以對自己感覺更好,我投你一票,成爲一個天才。 – thaBadDawg 2008-12-30 18:41:27