C#中的SQL消息监听器

时间:2010-07-05 22:21:26

标签: c# sql sql-server

我有一个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

2 个答案:

答案 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)

您正在寻找的是MS SQL Service Broker。 Here是其主页。

以下是一些启动者/示例: