本篇內(nèi)容介紹了“Remoting如何測(cè)試”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
10年的鐵東網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣的優(yōu)勢(shì)是能夠根據(jù)用戶(hù)設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整鐵東建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“鐵東網(wǎng)站設(shè)計(jì)”,“鐵東網(wǎng)站推廣”以來(lái),每個(gè)客戶(hù)項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
服務(wù)端與客戶(hù)端通信對(duì)象,盡量放在一個(gè)共享庫(kù)中,需要繼續(xù)MarshalByRefObject類(lèi)
using System;
using System.Collections.Generic;
namespace MessageObject
{
public class RemoteObject : MarshalByRefObject
{
public static Queue qMessage { get; set; }
public string SendMessage(string message)
{
if (qMessage == null)
{
qMessage = new Queue();
}
qMessage.Enqueue(message);
return message;
}
}
}
單獨(dú)建立一個(gè)控制臺(tái)工程,引入帶有上面通信對(duì)象的共享庫(kù),注冊(cè)Remoting通道,開(kāi)啟Remoting服務(wù),等待客戶(hù)端調(diào)用。
using MessageObject;
using System;
using System.Collections.Generic;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Ipc;
using System.Threading;
namespace IPCServer
{
class Program
{
static void Main(string[] args)
{
StartServer();
Thread thread = new Thread(new ThreadStart(ReceviceMessage));
thread.Start();
}
private static void StartServer()
{
IpcServerChannel channel = new IpcServerChannel("ServerChannel");
ChannelServices.RegisterChannel(channel, false);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteObject), "RemoteObject", WellKnownObjectMode.SingleCall);
Console.WriteLine("消息服務(wù)啟動(dòng)...");
}
private static void ReceviceMessage()
{
while (true)
{
Queue qMessage = RemoteObject.qMessage;
if (qMessage != null)
{
if (qMessage.Count > 0)
{
string message = qMessage.Dequeue();
Console.WriteLine("接收消息是:" + message);
}
}
Thread.Sleep(1000);
}
}
}
}
單獨(dú)建立一個(gè)客戶(hù)端測(cè)試控制臺(tái)工程,連接服務(wù)端Remoting服務(wù),調(diào)用服務(wù)端通信對(duì)象,達(dá)到訪(fǎng)問(wèn)服務(wù)端的目的
using MessageObject;
using System;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Ipc;
namespace IPCClient
{
class Program
{
static void Main(string[] args)
{
RemoteObject objRemoteObject = ConnectServer();
Send(objRemoteObject);
}
private static void Send(RemoteObject objRmoteObject)
{
while (true)
{
Console.WriteLine("請(qǐng)輸入消息...");
string message = Console.ReadLine();
try
{
objRmoteObject.SendMessage(message);
Console.WriteLine("發(fā)送成功");
}
catch (Exception ex)
{
Console.WriteLine($"無(wú)法連接到消息服務(wù):{ex.Message}");
}
}
}
private static RemoteObject ConnectServer()
{
IpcClientChannel channel = new IpcClientChannel();
ChannelServices.RegisterChannel(channel, false);
RemoteObject objRemoteObject = (RemoteObject)Activator.GetObject(typeof(RemoteObject), "ipc://ServerChannel/RemoteObject");
return objRemoteObject;
}
}
}
通信對(duì)象如果必須放在兩個(gè)不同的解決方案或者工程中,當(dāng)客戶(hù)端無(wú)法訪(fǎng)問(wèn)服務(wù)端遠(yuǎn)程對(duì)象時(shí),比如提示:“連接到 IPC 端口失敗: 系統(tǒng)找不到指定的文件?!?,可使用此demo測(cè)試:
服務(wù)端是否先于客戶(hù)端開(kāi)啟?
嘗試檢查兩端通信對(duì)象命名空間一致嗎?比如服務(wù)端遠(yuǎn)程對(duì)象命令空間定義為:namespace MessageObjectServer,客戶(hù)端為:namespace MessageObjectClient,這樣肯定不行的
通信使用的屬性定義相同嗎?比如都要使用這個(gè)屬性:public static Queue qMessage { get; set; },服務(wù)端定義為Queue
“Remoting如何測(cè)試”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!