我正在學習如何在.NET中使用Remoting。我已經構建了一個小應用程序,它可以完成基本的Hello World工作。 爲RemoteObject的代碼是:C#中的遠程處理不工作
public class MyRemoteObjectClass:MarshalByRefObject
{
public MyRemoteObjectClass()
{
Console.WriteLine("Remote object created");
}
//return message reply
public String ReplyMessage(String msg)
{
Console.WriteLine("Client : " + msg);//print given message on console
return "Server : Yeah! I'm here";
}
}
服務器類的代碼是:
class MyServerClass
{
public MyServerClass()
{
}
static void Main(string[] args)
{
RemotingConfiguration.Configure("RemotingSettings_Server.xml",false);
Console.WriteLine("server activated");
Console.ReadLine();
}
}
客戶端類的源代碼是:
class MyClientAppClass
{
static void Main(string[] args)
{
RemotingConfiguration.Configure("ClientSettings.xml",false);
Console.WriteLine("Settings read successfully");
MyRemoteObjectClass remObject = (MyRemoteObjectClass)Activator.GetObject(typeof(MyRemoteObject.MyRemoteObjectClass),"http://localhost:8989/MyRemoteObjectClass",WellKnownObjectMode.Singleton);
if (remObject == null)
Console.WriteLine("cannot locate server");
else
{ String res = remObject.ReplyMessage("You there?"); Console.WriteLine(res); Console.ReadLine(); }
}
}
服務器和客戶端我的配置文件分別爲:
<configuration>
<system.runtime.remoting>
<application>
<service>
<wellknown
mode="Singleton"
type="MyRemoteObject.MyRemoteObjectClass, MyRemoteObjectClass"
objectUri="MyRemoteObjectClass.rem"
/>
</service>
<channels>
<channel ref="http" port="8989"/>
</channels>
</application>
</system.runtime.remoting>
</configuration>
客戶端:
<configuration>
<system.runtime.remoting>
<application>
<client>
<wellknown
type="MyRemoteObject.MyRemoteObjectClass, MyRemoteObjectClass"
url="http://localhost:8989/MyRemoteObjectClass.rem"
/>
</client>
</application>
</system.runtime.remoting>
</configuration>
我第一次建立了DLL的遠程對象,複製在服務器和客戶端的exe位置的DLL。然後運行服務器,然後運行客戶端。服務器被實例化,但客戶端程序會引發異常,如「遠程處理異常:請求的服務未找到」。
請幫我解決這個問題,並且可能是清楚瞭解遠程處理概念的好地方。
謝謝, Rakesh。
遠程處理非常困難,而且記錄錯誤。跳過遠程處理並直接轉到WCF。 – Will 2010-06-19 16:21:38