通过PHP与.net进行通信

时间:2012-07-11 13:15:12

标签: c# php .net mysql sockets

我有一个.net winform应用程序,我希望允许用户通过PHP连接。

我在个人选择中使用PHP并帮助降低成本。

快速浏览:

人们可以连接到我的.net应用程序并启动一个新线程,即使在关闭浏览器后也会继续运行。然后,他们可以随时登录以查看其线程正在执行的操作的状态。

目前我已经提出了两种方法:

创意1 - 套接字:

当用户第一次连接并生成线程时,GUID与其“web”登录详细信息相关联。

下次PHP通过套接字连接到应用程序时,PHP会发送带有GUID的“GET.UPDATE”命令,然后将该命令添加到给定GUID的MESSAGE IN QUEUE中。

.net app衍生线程正在检查MESSAGE IN QUEUE,当它看到“GET.UPDATE”命令时,它将数据结束为json并将其添加到MESSAGE OUT QUEUE

下次有来自该GUID的PHP套接字请求时,它会发送MESSAGE OUT QUEUE中的数据。

创意2 - 数据库:

与上述相同的想法,但来自PHP的命令被放入数据库

<。> .net app线程检查数据库中的新IN MESSAGES

如果获得GET.UPDATE命令,则将json编码数据添加到数据库

下次PHP连接时,它会检查数据库中的新消息并相应地报告数据。

我只是想知道上述两个想法中最好的是什么。用插座搞乱可能会非常痛苦。但是我担心数据库的想法,如果我有1000个用户,我们将有一个数据库表,如果队列中有很多消息,它可能会开始减速

任何建议都会被批评。

1 个答案:

答案 0 :(得分:0)

任何一种解决方案都可以接受,但如果您正在考虑高用户负载,您可能需要重新考虑您的方法。如果您正在查看数千个请求,WinForms解决方案将不会像WCF解决方案那样强大。我不建议仅将数据库用于消息传递,除非您的进程的结果已存储在数据库中。如果是,我不建议直接公开数据库,而是通过公开的API来访问数据库访问。数据库具有高可用性/可扩展性,因此除非您正在查看像SQLite这样的低端数据库,否则我不会过分担心负载。

如果您正在考虑公开公开数据库并将其用作任何原因的消息服务,我可以建议Postgresql's LISTEN/NOTIFY。 Npgsql对此有很好的支持,并且很容易实现。 Postgresql也可以免费提供给大型社区以获得支持。