【问题标题】:Open data access开放数据访问
【发布时间】:2012-01-22 15:08:58
【问题描述】:

我正在为 C# 中的应用程序编写插件。该插件允许我完全访问应用程序的内部信息模型。

我想创建一种机制,允许外部应用程序能够连接到信息,以便他们可以报告信息等。

在过去,这曾经是通过 ODBC 链接实现的——现在仍然是这样。

我认为为此创建 ODBC 驱动程序是一项重要的任务,是否有任何更简单的建议或示例 C# 代码来创建驱动程序。


回想起来,我最初的问题并不是很清楚。要求是允许同一台 PC 上的两个应用程序共享数据。 “主机”应用程序使用专有存储格式,因此如果不使用“主机”应用程序就无法访问数据。 “主机”应用程序允许开发插件(使用 C#)并且插件可以访问应用程序中的所有数据。在此基础上,我正在探索插件是否可以因此向其他外部应用程序公开接口,从而可以充当“数据访问层”

我对 ODBC 的引用可能是一个“红鲱鱼” - 只是表明我在这个领域是多么的脱节。

【问题讨论】:

  • 您能否详细说明对内部信息模型的完全访问实际上意味着什么以及将连接到它以报告它的程序。 WCF 服务可以吗?还是有 ODBC 驱动程序出现在其中的原因?
  • 你的意思真的不是很清楚。 ODBC 用于访问数据库,而不是应用程序。

标签: c# odbc data-access-layer


【解决方案1】:

您可能正在寻找 Remoting 和\或 Web 服务和\或更现代的 WCF(Windows 通信基础)之类的东西。

您可以编写自己的服务并使用所需的每种语言访问该服务。 C# 对 WCF 和 Remoting 和 WebServices 的支持非常好,允许您以非常干净、面向对象和简单的方式编写服务器-客户端基础架构。

使用 HTTP:每个服务都在通过 HTTP 服务器(例如 IIS)以 XML 格式发送的序列化对象中进行处理。 客户端可以用任何你想要的语言编写,从 PHP 到 C# 到 C++ 到 JAVA 再到 wathever,它们只需要通过 HTTP 连接并解析\反序列化\序列化 XML。

您可以选择您的架构。如果客户端和服务器都是用 C# 编写的,那么对您来说一切都是透明的,那么 XML 的序列化和反序列化、远程过程调用和 IIS 集成都可供您使用。您只需要编写您的应用程序。

您可以像关系 DBMS 那样导出服务而不是表,这样您就可以将系统逻辑从数据层和表示层分开。 通过这种方式,您可以获得可扩展性、多平台和多系统支持。

一些阅读链接:

http://en.wikipedia.org/wiki/Windows_Communication_Foundation

http://www.codeproject.com/KB/webservices/myservice.aspx

http://msdn.microsoft.com/en-us/library/aa730857(v=vs.80).aspx

http://msdn.microsoft.com/en-us/library/kwdt6w2k(v=vs.71).aspx

http://blogs.microsoft.co.il/blogs/bursteg/archive/2008/02/10/how-to-build-an-n-tier-application-with-wcf-and-datasets-in-visual-studio-2008.aspx

http://msmvps.com/blogs/williamryan/archive/2008/05/16/doing-tiers-with-wcf.aspx

相反,例如,如果您在 Intranet 或单台计算机中并且只想共享 DB 服务,则可以只使用 SQLServer 或 MySql 或 PostgreSql 并通过 TCP/IP 连接到它。 但是在 Internet 或可能存在安全问题的 Intranet 上公开 DB 服务是不安全的。

另请注意,SQLServer Express 是免费的,如果您没有太多用户\连接或不大于 4gb 的数据库,它可能适合您。 MySql 和 PostgreSql 是免费和开源的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多