我有一个C#Windows服务,它侦听HTTP端口并在收到HTTP GET请求时触发操作。该操作通常是执行驻留在同一台计算机上的应用程序(运行Windows XP Professional或更高版本)。
我现在要求C#Windows服务从JDBC客户端侦听传入的SQL查询,并再次触发执行应用程序的操作。我正在寻找一些帮助来实现一个简单的“监听器”来从JDBC客户端接收SQL查询并在将响应返回给JDBC客户端后触发操作。我可以参考哪些资源/示例代码?我没有选择在目标机器上安装任何数据库服务器(SQL Express,MySQL等)。
XML配置需要看起来像 -
<XmlConfiguration>
<SQLListenerPort>18781</SQLListenerPort>
<HttpRootUrl>http://127.0.0.1:8731/</HttpRootUrl>
<HttpsRootUrl>https://127.0.0.1:8732/</HttpsRootUrl>
<ServeHttpsRequests>true</ServeHttpsRequests>
<Triggers>
<!-- Sample triggers for testing, please update for production deployment -->
<Trigger>
<URL>http://127.0.0.1:8731/CustomerID</URL>
<Action>MyExecutable.exe CustomerID</Action>
</Trigger>
<Trigger>
<SQL>SELECT * FROM A/SQL>
<Action>MyExecutable.exe A</Action>
</Trigger>
<Trigger>
<SQL>SELECT * FROM B</SQL>
<Action>MyExecutable.exe B</Action>
</Trigger>
<Trigger>
<URL>https://127.0.0.1:8732/CASE1/CustomerID/MachineID</URL>
<Action>TEST.exe CustomerID MachineID</Action>
</Trigger>
</Triggers>
</XmlConfiguration>
行为 -
C#Windows服务接收SQL查询“SELECT * FROM A”,查找触发器映射并使用参数(即“A”)触发可执行文件。
感谢您的时间。
indyfromoz
答案 0 :(得分:0)
JDBC是一种API,它统一了通用管理器下的各种数据库API,并使用单个API进行交互。没有JDBC protcol,JDBC加载的每个特定驱动程序都将使用自己的本机协议来与数据库进行intercat。因此,你不能在服务中监听'JDBC'调用,因为没有'JDBC调用'这样的东西。如果要接收SQL请求并返回结果集,则必须实现JDBC驱动程序的其中一个协议,例如TDS,例如SQL Server驱动程序。实现TDS“服务”意味着你必须编写一个TDS网关,这是一个完全无用的练习,因为你可以通过简单地暴露服务器本身的TDS监听端口来实现这一点(忽略安全细节......)。
您可以研究的是接收普通的HTTP Web服务调用(SOAP或REST)并将它们作为普通的Web服务请求进行处理,将结果作为SOAP响应或RESTful HTTP响应返回。或者您可以简单地公开OData服务,可以创建straight from an EF project。但客户端必须像任何WWW服务一样与此服务进行交互,没有JDBC或其他数据库技术堆栈涉及到客户端。
答案 1 :(得分:0)