2012-07-11 133 views
1

我有一個.net winform應用程序,我想讓用戶通過PHP連接。通過PHP與.net通信

我使用PHP的個人選擇,並幫助保持低成本。

快速概述:

人們可以連接到我的.NET應用程序,並開始一個新的線程,將繼續運行,即使他們關閉瀏覽器。然後,他們可以隨時登錄以查看其線程正在執行的狀態。

目前,我已經提出了兩種方法可以做到這一點:

理念1 - 插座:

當用戶連接的第一次,併產生一個GUID與他們關聯的線程「網絡「登錄細節。

下一次PHP通過套接字連接到應用程序PHP發送一個帶有GUID的「GET.UPDATE」命令,然後將其添加到給定GUID的MESSAGE IN QUEUE中。

在.NET應用程序產生的線程正在檢查的消息隊列中,當它看到了「GET.UPDATE」命令,然後將數據endcodes爲JSON並將其添加到下一次當消息出隊列

是來自該GUID的PHP套接字請求,它將其發送到MESSAGE OUT QUEUE中。

理念2 - 數據庫:

相同的想法如上但是從PHP命令在數據庫中保存放入數據庫

新的.NET應用程序線程檢查郵件中

如果它會得到一個GET.UPDATE命令它將json編碼的數據添加到數據庫中

下一次PHP連接它將檢查數據庫中的新消息並相應地報告數據。

我只是想知道上述兩個想法是最好的。隨着插座混淆可能會成爲一種痛苦。但我擔心數據庫的想法,如果我有1000的用戶,我們將有一個數據庫表,如果隊列中有很多消息,可能會開始減慢。

任何建議都會被處理。

回答

0

任何一種解決方案都是可以接受的,但是如果您正在查看較高的用戶負載,您可能需要重新考慮您的方法。如果您正在查看數千個請求,則WinForms解決方案不會像WCF解決方案那麼強大。我不建議僅將數據庫用於消息傳遞,除非您的進程的結果已存儲在數據庫中。如果是這樣,我不建議直接公開數據庫,而是通過暴露的API來訪問數據庫訪問。數據庫具有高度的可用性/可擴展性,所以除非您正在查看像SQLite這樣的低端數據庫,否則我不會擔心負載過重。

如果您正在查看公開公開數據庫並將其作爲消息服務出於任何原因使用,我可能會建議Postgresql's LISTEN/NOTIFY。 Npgsql對此有很好的支持,並且它很容易實現。Postgresql也可以免費獲得大型社區的支持。