2014-02-05 25 views
0

如何在c#中創建一個運行在桌面上的程序,但在某些情況下,能夠將變量和對象傳遞給服務器。然後服務器會在將結果返回桌面上的程序進行進一步處理之前處理這些變量。傳遞數據到服務器進行計算

因此,例如,我想將雙打3.5和4.5傳遞給服務器。然後,服務器將添加3.5和4.5,將8返回到桌面上的程序。這個8將會被桌面上的程序進一步利用。

我是否必須編寫兩個單獨的程序?一個在服務器上,另一個在桌面上。如果是這樣,我如何鏈接它們。即如何將數據從桌面上的程序傳遞到服務器上的程序,反之亦然?

非常感謝您的幫助。

+1

.NET爲此提供了單獨的技術。它被稱爲[WCF](http://en.wikipedia。組織/維基/ Windows_Communication_Foundation)。 – kravasb

+1

你可以使用WCF或WebAPI – NDJ

回答

2

你不需要兩個不同的程序。雖然這樣更容易,但您可以堅持使用不同模式運行的程序。

WCFWebApiServiceStackMessageBus可用於此。

但是你正在跳躍,很難一次完成。

您有一個同步本地應用程序(一切運行在一個應用程序中),並且您想要訪問異步遠程應用程序(一切都在另一臺計算機上並行化並執行)。 WCF等給你一個簡單的開始,但我會建議較小的步驟,因爲它不會減輕所有問題。

首先保持您的同步應用程序並使其異步。所以它在一個多線程環境中向它自己發出一些消息(比如說兩個雙打)並且等待它而不被阻塞。

這引入了自己的一套問題(線程,等待,鎖定)。

完成之後,您應該將您的功能外部化到單獨的應用程序或運行在「服務器」模式下的相同應用程序,從而生成異步本地應用程序。 在此步驟中,您已經完成了穿線並仍處於本地位置,但跨越了應用程序邊界。

你做到這一點後,開始考慮將服務器應用程序在遠程機器上,並處理這個(通信,資源可用性,協議等)

每一步都是複雜的。通過一次完成所有事情,您將需要處理多線程,阻止應用程序,複雜的WCF,連接處理(超時,代理,不可用資源,連接中斷等),並同時外包處理。

0

是的,你確實需要兩個程序。如前所述,儘管您可以使用任何您想要的技術,但WCF和ASP.NET WEB API是兩種最常用的Microsoft技術。基本上你需要在WCF或ASP.NET中構建你的服務器端應用程序,然後你將爲你的客戶端應用程序添加一個服務引用。創建服務引用時,您將指定服務的URL,Visual Studio將構建應用程序之間進行通信所需的類。完成之後,您可以使用任何常規方法調用服務器應用程序。

相關問題