2013-03-20 71 views
0

我試圖從Perl(ArGoSoft郵件服務器.NET)控制郵件服務器。它提供的所有功能都是.NET遠程接口(詳見http://en.wikipedia.org/wiki/.NET_Remoting)。從Perl連接到.NET遠程處理接口

我不是很熟悉.NET和我所有的系統是基於Apache和Perl(一些在Windows上,一些在Linux上)。我需要從Perl控制郵件服務器,能夠查看,添加或刪除域和用戶以及其他相關內容。所有這一切都可以使用遠程接口完成,ArraoSoft Web Interface實際使用該接口,該接口自然只能在IIS上運行。

我試圖找到一種方法,與的Perl遠程接口進行通信。再一次,我對.NET不是很熟悉,但似乎是某種使用二進制數據的Web服務。如果我嘗試從telnet連接到它,我無法做任何事情,只要我開始輸入任何內容,就會發生錯誤。

另外,我用一個嗅探器來查看Web界面和遠程接口和我得到的是二進制數據50%之間的通信。

所以,我不知道是否有人在這裏能想到一個可能的解決方案這一點。

由於提前,

舊金山

回答

0

我懷疑你的唯一合理的解決辦法是寫一個.NET包裝,討論到服務器並公開Perl程序可以訪問的接口。選項將是COM(如果Perl可以做COM ...我不知道),HTTP接口或自定義TCP接口。

直接與Remoting接口交談會非常困難。你將不得不爲正在傳遞的.NET對象編寫一個二進制反序列化器。編寫解串器可能需要更長的時間,而不是學習足夠的.NET編程(如果你不知道的話)來編寫封裝器。

你可以寫在任何.NET支持的語言的.NET包裝:C#,F#,Visual Basic .NET中,託管C++等

+0

是的,Perl可以做COM。我曾嘗試在VS2010中創建一個包裝器,從郵件服務器引用一個DLL以通過COM公開方法,但是它失敗並顯示消息「引用的程序集沒有安全名稱」。我聯繫了郵件服務器的作者,要求他糾正這個問題,他說他會的,但是他很久沒有這麼做了。你認爲我可以在不引用任何東西的情況下編寫一個包裝器嗎? – 2013-03-20 01:53:57

+0

您應該遇到問題的唯一時間是如果您嘗試創建強名稱的程序集。如果你正在構建一個內部工具,那麼這不應該給你帶來麻煩。請參閱http://stackoverflow.com/q/6370753/56778。 – 2013-03-20 02:41:17

+0

如果我沒有記錯,問題是隻有簽名的程序集可以使COM可見,並且爲了簽名它,所有引用的程序集都必須具有強名稱。我會再次嘗試,而不簽署它,也許我錯過了一些東西。 – 2013-03-20 03:32:48