.net中如何调用远程组件

chgsnake 2003-05-20 10:54:07
以前可以用DCOM来进行组件的远程调用,而且不需要任何额外的代码。.net中如何调用远程组件,是不是需要专门的开发呢?
...全文
67 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
chgsnake 2003-05-22
  • 打赏
  • 举报
回复
又遇到一个问题,我把.net自带的例子RemotingHello(位于FrameworkSDK\Samples\Technologies\Remoting\Basic\RemotingHello)编译后,在本机执行没有问题。
当我把客户端放到另外一个机器上,却报如下错误:
“未处理的异常: System.IO.FileNotFoundException: 找不到文件或程序集名称“CAOLibra
ry”,或找不到它的一个依赖项。文件名:“CAOLibrary””
然后我把CAOLibrary.dll也考到了客户端机器,却报如下错误:
“未处理的异常: System.Net.WebException: 远程服务器返回错误:(407) 需要代理身份验
证。”,但是我服务器的web站点是允许匿名的。
唉,真是费劲,看了无数篇remoting文章,到目前还一个例子都搞不出来
freeboy0002 2003-05-20
  • 打赏
  • 举报
回复
以上是.net Remoting 技术,用于分布式远程访问
freeboy0002 2003-05-20
  • 打赏
  • 举报
回复
远程对象
using System;
namespace HelloRemoting
{
public class SayHello : MarshalByRefObject
{

// 远程客户调用的方法
private string sClient;
public string Hello(string greeting)
{
Console.WriteLine("远端传入的信息 :{0}", greeting);
return "Hello";
}
}
}

远程服务器
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;

namespace ServerSayHello {
public class ServerSayHello {

public static int Main(string [] args) {

TcpChannel chan = new TcpChannel(8085);
ChannelServices.RegisterChannel(chan);
RemotingConfiguration.RegisterWellKnownServiceType
(Type.GetType("HelloRemoting.SayHello,share"),
"SayHello", WellKnownObjectMode.SingleCall);
System.Console.WriteLine("按 <enter> 推出...");
System.Console.ReadLine();
return 0;
}
}
}

客户端

using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using HelloRemoting;
namespace RemotingSamples {
public class Client
{
public static int Main(string [] args)
{
TcpChannel chan = new TcpChannel();
ChannelServices.RegisterChannel(chan);
SayHello obj =
(SayHello)Activator.GetObject(typeof(SayHello)
, "tcp://localhost:8085/SayHello");
if (obj == null)
System.Console.WriteLine("不能定位到远端服务");
else Console.WriteLine(obj.Hello("你好,我是清江河!"));
return 0;
}
}
}

希望对你有点帮助:)
chgsnake 2003-05-20
  • 打赏
  • 举报
回复
多谢指点,我还有些迷惑的地方。以前用DCOM来进行组件的远程调用,我们在开发客户端时可以不必考虑对象是远程的还是本地的,客户端代码是不变的,只需要在部署时导dll server的代理就可以,非常灵活,而且通讯由COM来控制,不需要我们专门编码。难道现在.net必须针对本地和远程的dll组件进行分别的处理么,那岂不是要有两套代码?

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧