2011-05-10 211 views
2

我已經寫了一個簡單的RPC類,它允許我在.net桌面應用程序和.net服務器應用程序之間序列化和發送二進制數據。簡單地說,客戶可以發送:自定義RPC vs WCF vs .NET Remoting

Dim Message as new TCPMessage 
Message.Handler = "NewUser" 
Message.AddField("FirstName", "Paul") 
Message.AddField("Photo", PhotoBytes) 
Message.Send() 

而服務器將重建在另一端的數據:

Public Sub NewUser (Message As TCPMessage) 
    Dim FirstName as string = Message.GetString("FirstName") 
    Dim Photo() as Bytes = Message.GetBytes("Photo") 
    ... 
End Sub 

這一切工作的我此刻在做什麼好 - 它看起來非常輕巧和高性能。

我想知道的是,通過.NET Remoting/WCF執行此操作的優點/缺點是什麼?我對這些技術知之甚少,但看起來它們更加靈活,可能性不高,表現出相當大的學習曲線。

根據性能標準,學習曲線以及考慮到其他人不會維護代碼的標準,我是否應該繼續使用自己的DIY方案構建小型內部應用程序,還是儘快將Remoting/WCF儘量縮短?編輯:性能是關鍵,客戶端應用程序將定期接收約200,000行數據集(是的,這絕對有必要接收這麼多的數據)。這全部只在局域網上運行。

+0

我絕對沒有數據可以支持這個,但WCF提供了很多深度,同時管理非常輕巧。如果存在顯着的性能差異,我會感到驚訝。 – 2011-05-10 06:49:49

+0

謝謝,這實際上只是一個假設,WCF會更慢。一旦我瞭解了更多有關WCF的信息,我會做一些性能測試。 – Satellite 2011-05-11 07:10:25

+0

你最終使用過WCF嗎?任何性能測試,謝謝 – 2011-11-02 05:22:13

回答

1

首先,.NET遠程現已棄用,取而代之的WCF,請參閱Does WCF really replace .NET Remoting?

WCF是快速和相對輕巧。 雖然WCF的關鍵好處是它是如此可配置的。幾乎只做配置更改,您可以更改系列化格式,傳輸協議,身份驗證機制,QOS功能(可靠性/安全性/可伸縮性)。它的可擴展性還不夠,如果它不提供你所需要的,你可以自己添加它。最後它從通信代碼中提取應用程序代碼。

我肯定會將WCF用於新項目。我是否會從穩定,高性能,定製的解決方案中更改現有的應用程序?這取決於變化的程度,現有解決方案的缺點以及wcf可能帶來的潛在收益。