【问题标题】:Connect to .NET remoting interface from Perl从 Perl 连接到 .NET 远程处理接口
【发布时间】:2013-03-20 01:11:02
【问题描述】:

我正在尝试从 Perl (ArGoSoft Mail Server .NET) 控制邮件服务器。它为此目的提供的只是一个 .NET 远程接口(在http://en.wikipedia.org/wiki/.NET_Remoting 阅读更多内容)。

我对 .NET 不是很熟悉,我所有的系统都基于 Apache 和 Perl(一些在 Windows 上,一些在 Linux 上)。我需要从 Perl 控制邮件服务器,能够查看、添加或删除域和用户以及其他相关内容。所有这些都可以使用远程接口来完成,ArGoSoft Web 接口实际上使用了远程接口,它自然只在 IIS 上运行。

我正在尝试找到一种与 Perl 的远程接口进行通信的方法。同样,我对 .NET 不是很熟悉,但似乎是某种使用二进制数据的 Web 服务。如果我尝试从 telnet 连接到它,我将无法执行任何操作,并在我开始输入任何内容时立即回复错误。

另外,我使用嗅探器查看 Web 界面和远程处理界面之间的通信,我得到的 50% 是二进制数据。

所以,我想知道这里是否有人可以想到一个可能的解决方案。

提前致谢,

弗朗西斯科

【问题讨论】:

    标签: .net perl remoting


    【解决方案1】:

    我怀疑您唯一合理的解决方案是编写一个与服务器对话并公开 Perl 程序可以访问的接口的 .NET 包装器。选项可以是 COM(如果 Perl 可以做 COM……我不知道)、HTTP 接口或自定义 TCP 接口。

    直接与 Remoting 界面对话会非常困难。您必须为正在传递的 .NET 对象编写二进制反序列化程序。编写反序列化器可能需要比学习足够多的 .NET 编程(如果您不知道)来编写包装器所需的时间更长。

    您可以使用任何 .NET 支持的语言编写 .NET 包装器:C#、F#、Visual Basic .NET、托管 C++ 等。

    【讨论】:

    • 是的,Perl 可以做 COM。前段时间我尝试在 VS2010 中创建一个包装器,从邮件服务器引用一个 DLL 以通过 COM 公开方法,但它失败并显示消息“引用的程序集没有安全名称”。我联系了邮件服务器的作者,要求他纠正这个问题,他说他会的,但很长一段时间他都没有。你认为我可以在不引用任何内容的情况下编写包装器吗?
    • 您唯一遇到的问题是您尝试创建强名称程序集。如果您正在构建一个内部工具,那么这不会给您带来任何麻烦。见stackoverflow.com/q/6370753/56778
    • 如果我没记错的话,问题是只有签名的程序集才能使 COM 可见,并且为了对其进行签名,所有引用的程序集都必须具有强名称。我会在不签名的情况下再试一次,也许我错过了什么。
    • 可能就是这样。如果是这种情况,您总是可以构建一个套接字接口。甚至可能更容易。 . .
    • 我刚刚发现通过使用必须在 IIS 上运行的 ArGoSoft Mail Server 的 Web Mail,我可以访问一个 WSDL 接口,它几乎是远程接口的代理,所以我想我'将只使用 Perl 中的 SOAP 来完成所有操作。无论如何谢谢你的帮助。 :-)
    猜你喜欢
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    相关资源
    最近更新 更多