2013-03-10 81 views
0

我即將開始爲使用C#的組織開發項目。爲了獲得必要的數據,我必須從數據庫獲取數據,但是,即使創建應用程序,我也不會訪問數據庫。你可以認爲這會帶來一些挑戰。訪問PHP方法

在過去的項目中,我創建了一個PHP腳本,爲我訪問數據庫並以JSON格式返回數據。我也想這樣做,不幸的是,大約需要100-120個查詢,所以我需要爲每個查詢創建一個PHP腳本,這非常耗時。

是否有可能在PHP中創建一個接受字符串參數然後以某種方式將字符串從C#中傳遞給它的方法?如果是這樣,那我該怎麼做呢?如果我可以將一個字符串傳遞給腳本中的方法,那麼只需要3個方法(在PHP腳本中)就可以完成所有必要的查詢。

+2

你在這裏矛盾自己。您需要從您無權訪問的數據庫獲取數據。 C#在這裏出現在哪裏?請詳細解釋架構。 – Cheesebaron 2013-03-10 18:29:24

+0

我完全不矛盾自己。一旦我收到數據,我就使用C#來處理數據。 – tylerbhughes 2013-03-10 18:51:02

+0

*是否有可能在PHP中創建一個接受字符串參數,然後以某種方式將字符串從C#傳遞到它的方法?* - 如果您可以使其有意義,那麼我認爲我們可能會在某處。 – Dan 2013-03-10 18:53:02

回答

1

從C#應用程序/庫調用PHP方法將涉及使用WebRequestWebResponse類的幼稚例如:

HttpWebRequest request = (HttpWebRequest) 
    WebRequest.Create("http://server/script.php?method=my_method"); 

HttpWebResponse response = (HttpWebResponse) request.GetResponse(); 

Stream stream = response.GetResponseStream(); 

使用流,則可以通過解析或反序列化響應,如果它是例如一個JSON字符串。

該實現依賴於script.php使用method參數,並將該調用委託給該方法;如果你願意的話,僞路由。更多的參數可以通過查詢字符串傳遞,並被調用的方法使用。

這一點的另一個簡單的例子:

$r = new Repository(); 
$d = $r->{$_GET['method']}(); 
echo json_encode($d); 

然而,很多這可以使用現有的技術來實現。將PHP方法公開爲API是已經完成的事情,並且存在大量RESTful API框架來加速此類應用程序的開發。對於使用API​​的C#應用​​程序/庫也是如此,只要您使用某種客戶端實現。

對您的問題的回答「是否有可能......」;當然是的,但是這是一個非常高的要求,實施將完全依賴問題領域。


作爲一種改進方案(可能是太長時間評論)我目前工作的一個大規模檢修項目。以前的開發者決定推出自己的一切。這對我意味着什麼?我無法重用一盎司的代碼庫。他們推出了自己的安全策略。垃圾。

我就不多說了垃圾,因爲我可以寫更好我可能,但並不多),而是因爲我知道更好。

我喜歡成熟的技術,它們很好地融合在一起,並且擁有大量的社區和開發者支持。當我遇到問題時,在文檔和這裏之間,我通常可以很快找到解決方案。此外,組件的問題被記錄,修復,並且可以解決。

滾動你自己的不可或缺的組成部分(是他們的安全或其他)進行生產,尤其是當你知道你對待它就像一個學習的經驗,是不負責任的。

+0

需要這樣做的原因是數據庫中包含的數據是未成年人的個人信息。通過不授予對數據庫的權限,組織正試圖防止不必要的數據訪問。 是的,我覺得有API可用於這樣的事情。儘管如此,如果你總是依賴第三方API,你並沒有學到任何東西。我一直試圖自己做第一次,然後任何時候我都創建了自己的API,或者我使用了第三方API。 – tylerbhughes 2013-03-10 19:16:38

+0

@RandomlyKnighted如果您正在從事涉及未成年人個人身份信息的項目,那麼爲了學習,我甚至不會考慮自己動手做任何事情。保存個人項目;使用完善的技術爲這一個。 – Dan 2013-03-10 20:03:23