频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

微软 .NET Remoting体系结构评估

来源:Microsoft 作者: 出处:巧巧读书 2005-11-24 进入讨论组
上一页 1 2 3 4 5 6 7 8 9 10 11 下一页 
管理错误

  在任何情况下,都应该记住要使用标准的设备使用和监视方法。事件记录仍是非常有价值的信息资源,就象网络监视器工具一样,网络监视器可以专门用于详细查看客户端/服务器的 Remoting 会话。
中间层的 Remoting 服务器仍可以使用 Visual Studio .NET 提供的标准调试工具进行调试,例如,对于由 IIS 集成的 Remoting 服务器,可以通过向 ASP.NET 辅助进程附加调试会话(Visual Studio .Net | Debug [调试] | Processes [进程] | Attach [附加]) 来设置断点(如果资源可用)。但 Remoting 的错误很独特,下面列出了一些。请注意,所有错误都已使用 .NET Framework SDK 提供的 Basic Remoting Hello Sample 的各版本进行了复现,服务器和客户端也已在单机上运行。故障现象与在网络链接上的相同,只是由于 HTTP/TCP 的超时设置不同,需要相当长的时间才能出现错误。

  丢失 MarshalByRef

  由于 Remoting 要通过引用以用于给定的类,该类必须只做一件事,就是继承 MarshalByRefObject。假设开发人员忘记做这项工作,我们将得到一个 System.Runtime.Remoting.RemotingException 类型的异常,说明我们有一个“丢失的 MarshalByReference”.

  是否能正确捕获和处理这个 RemotingException 将取决于程序员。(想想这个开发人员忘记了他应记住的唯一一件事。)

  解决方法是:记住继承 MarshalByRefObject!

  众所周知的服务器激活的错误服务器端

  对于服务器激活(请参阅产品特性一节),Remoting 服务器将其侦听处声明为端点。该端点一般包括一个对象 URI(远程对象的众所周知名称),一个协议和一个端口号。当然,所有这些都可能配置错误。

  错误的 URI

  由服务提供的 Basic Remoting Hello Sample 的 URI 是 HelloService.soap,如相关的 web.config 文件中所指定:

<configuration>
<system.runtime.remoting>
<application>
<service>
<wellknown mode="SingleCall" type="Hello.HelloService, Hello"
objectUri="HelloService.soap" />
</service>
</application>
</system.runtime.remoting>
</configuration>

  此服务是 IIS 集成的。IIS 集成要求 URI 带有后缀 .rem 或 .soap,我们在服务器上使用 .rope。在此实例中,我们将再次收到 RemotingException,这次显示的文本是“对象 </Hello.soap> 在服务器上已断开或不存在”。

  请确保各个 URI 相互匹配!当 IIS 集成 Remoting 服务器时,还要确保 URI 以 .rem 或 .soap 结尾。

  不匹配的协议/端口

  为了进行此项测试,我们切换到控制台集成的服务器,以下是该服务器的配置文件

<configuration>
<system.runtime.remoting>
<application name="RemotingHello">
<service>
<wellknown mode="SingleCall" type="Hello.HelloService, Hello"
objectUri="HelloService.soap" />
</service>
<channels>
<channel ref="http" port="8000" />
</channels>
</application>
</system.runtime.remoting>
</configuration>

  假设我们要在服务器端将协议更改为 TCP,而使客户端保留 HTTP。

  我们将再次收到 RemotingException,这次的文本是“底层连接已关闭:接收时出现意外错误”。

  端口设置错误也会导致上述异常,唯一的不同是这种情况下,要用较长的时间才会出现错误。服务器和客户端之间的端口和协议必须匹配。

  丢失 URI

  另一种可能性是远程服务器没有运行,例如,服务器由 IIS 集成,而虚拟应用程序或相关的程序集丢失。再次使用 Basic Hello Remoting 服务器,我们需要虚拟应用程序 RemotingHello 能够运行。如果不能运行,我们将收到未处理的异常(取决于调用代码),但这次的异常将是:“无法加载类型 clr:Hello.HelloService, Hello”。

  在这些情况下,请确保虚拟应用程序在运行,而且所需的程序集正确地放置在相关的 bin 子文件夹中。

  总而言之,客户端必须正确地引用服务器定义的端点以便激活服务器,这意味着,端口、协议和 URI 的定义必须相互匹配。这太容易出错了。因此,如果服务器的位置定义为:

<service>
<wellknown mode="SingleCall" type="Hello.HelloService, Hello"
objectUri="HelloService.soap" />
</service>

  那么,客户的设置必须为:

<client url="http://localhost/RemotingHello">
<wellknown type="Hello.HelloService, Hello"
url="http://localhost/RemotingHello/HelloService.soap" />
</client>

  其中,URL 表示集成 Remoting 服务的 IIS 虚拟应用程序,类型表示类和程序集名称。

URl收藏 http://www.qqread.com/dotnet/y520949000.html 更多文章 更多内容请看.NET移动与嵌入式技术.NET开发手册专题,或进入讨论组讨论。
上一页 1 2 3 4 5 6 7 8 9 10 11 下一页 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章