小弟有三個 server, 分別用作 (1)php (2)存 COM (.dll) (3)mysql
小弟有一 .dll 檔案, 由 c# 寫成的 class 及 method - 會讀寫 server 3 的 mysql
而有參考 php 調用 .dll new COM 的做法
http://blog.csdn.net/vince6799/article/details/7348952
可惜這個方法只是 call 本地的 COM, 如 call 遠端的 COM 怎辦?
http://php.net/manual/en/class.com.php
這裏的 COM 有參數 server_name 可選,可是怎樣
(1) 將自家制的 .dll 放入遠端 server (是否也要 register) 而
(2) 可由 php call 出來使用 class / method?
各位大大有沒有其他詳細的教學可供小弟參考一下或可指點一下小弟....謝謝
(小弟沒有使用 COM 的經驗請各位見諒)
參考這個看看
或者更簡單
把php和COM放在同一台server就好
反正COM原本就可以連遠端的MySQL了
最近要開始做的東西剛好也是分三塊,(2)原本打算用WCF包成服務,感覺比較簡單明瞭,不過後來被要求做成Restful...
我是以為這年頭已經沒人自己寫COM/DCOM在用了...
XD
To : 海綿寶寶
謝謝你的回答
了解,事出必有因,我也沒有任何批評的意思...
至於這樣的架構
我猜測
原始設計者比較偏向「loosee coupled」
著重在系統整合的彈性
而performance並不是第一考量
當然了
performance也不會差到無法接受就是了
還是原來只有兩台server好好的
你這個新來的不想用C#
硬要寫PHP
而老闆只好另開新server給你自己去亂玩
不要動到我原來的系統就好
其實老闆搞 application 前已知我不搞 c#
但他老人家又要搞 公司內的 application 又要想將 application 在 internet 可以接軌用得到.... 我搞開 php 起初真搞不通為什麼一開始不用 php 而要使用 c# 那麼麻煩, 老闆說他想有些工序需要 server 在 backend 加速工作, 完成那些工序後才放回 mysql server, 其實真的需要這樣搞....?
php 除了 COM / DOTNET 之外還有沒有其他方法可用他給我的 class 嗎?
真搞不通為什麼一開始不用 php 而要使用 c# 那麼麻煩
搞不好你老闆覺得你才麻煩哩
言歸正傳
我能想到的
就是跟前面fillano大大提到的方式一樣
用WCF或是Restful
簡單說就是在C#那台架個HTTP Server
然後php用HTTP GET/POST去使用C#的功能
Good luck.
To : 海綿寶寶
COM remote 試驗失敗
(1) HelloWorld.dll 已正常 register 在 server 2
(HelloWorld 只是一個 printer hello world 字句的 class)
(2) XXXX : server name / IP
(3) com.allow_dcom=TRUE 已加 php.ini
(4) extension=php_com_dotnet.dll 已除分號 (應該 COM 是不是本地也能呼叫)
(5) server 2 的 DCOM 已經加有 administrator 可以使用 (準備可能要 account 才可使用)
Browser 只回一句
Fatal error: in C:\xampp\htdocs\HelloWorld.php on line 7
往後也開通了server 2 firewall TCP 135 , 也是不行,請教一下怎樣做才行
謝謝
這得要請教 fillano 大大了
我只會Google而已...
今天用 try {} catch {} error :
Caught exception: Failed to create COM object `HelloWorld.Hello': RPC 伺服器無法使用。
RPC service 已經在放 COM 的 server 啟動, 撤走了 Windows / Antivirus firewall .... 也是不行
請問這個各位有沒有頭緒? 謝謝
<?php
try {
$r=new Com("HelloWorld.Hello","\\192.168.1.21") or die();
$s=$r->Write();
echo $s;
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
?>
有用c#寫測試來測試遠端的com嗎?C#也不通的話,那就是架構設定的問題,如果C#可以,再來確認php這一段吧。