【问题标题】:Need a service to handle multiple connections to 1 database需要一项服务来处理与 1 个数据库的多个连接
【发布时间】:2012-03-13 16:20:42
【问题描述】:

我有一个 SQL Server 数据库,它为多个 ASP.NET Web 应用程序提供服务。他们每个人都有自己的SiteID来区分数据。

我最近意识到让多个应用程序直接访问一个数据库并不是一个好习惯,因此我决定实施一项服务来处理所有数据库连接。

所有 Web 应用程序和数据库都位于同一个 Windows 2008 服务器上。

我想知道哪种服务最适合此功能。 web服务还是windows服务?在之前的工作中,他们似乎有一个在服务器上运行的 Windows 服务,这与 Web 服务相比有什么优势?

【问题讨论】:

  • 由于它们是 Web 应用程序,因此 Web 服务比 Windows 服务更有意义。你知道,因为它们都有“网络”。
  • 需要讽刺吗?我之所以问,是因为我已经看到为此目的在 windows server 2008 上使用 windows 服务进行了非常成功的设置。
  • 你想完成什么?如果您只是将 Web 应用程序移动到另一台机器上,则不需要。
  • 您不需要服务来集成您的 Web 应用程序 - 只有当您需要为(移动)应用程序或类似的东西提供 API 时才有意义。
  • 窗口服务是如何工作的?是托管网络服务吗?

标签: asp.net wcf sql-server-2008 windows-services


【解决方案1】:

虽然让多个应用程序访问一个数据库当然没问题,但我认为您的意思是您试图避免在多个网站中重复所有数据访问和业务逻辑。换句话说,您希望有一个集中式服务,您可以在其中一次更新所有应用程序。

听起来您想要一个 WCF 服务,它可以让您在 IIS 下作为 Web 应用程序运行,或者作为自托管 Windows 服务运行。如果您从未使用过 WCF,则有一点学习曲线,但它非常值得学习。

在 IIS 下的 WCF,您将获得与运行任何网站相同的好处。应用程序生命周期管理、使用 IIS mms 插件进行维护、在特定池标识下运行等。

作为Windows Service,你通过Services mms进行管理,你必须手动多写一点代码(只是一点点)来处理服务的启动和关闭,当然你并没有得到应用生命周期管理你用 IIS 做的事情。

您选择哪一种可能取决于您对服务器拥有多少安全访问权限,以及允许您运行哪些工具。如果您对服务器具有完全访问权限,我更喜欢 IIS 方式,但这完全是主观的。

【讨论】:

    【解决方案2】:

    Windows 服务 vs Web 服务是苹果 vs 橘子……Windows 服务不会自行提供数据……

    所以这里有一些选项:

    传统代码中的数据访问

    听起来这就是你所拥有的。只要这是一个逻辑上独立的层,这可能还不错。

    服务

    使用服务有很多优点,例如真正的关注点/实现分离。您甚至可以使用与客户端应用程序不同的语言/平台来实现您的服务。缺点可能是性能。您可能必须对数据进行序列化/反序列化,并且以任何方式对数据进行切片都会占用 CPU 周期。

    接口驱动方法

    这很好,因为您可以在应用程序中针对接口编写数据访问。该接口可以通过“传统”ADO/ORM 代码实现。或者,您可以使用 Web 服务。这具有将 UI 与数据分离并使自动化单元测试更容易的明显优势。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-14
      • 1970-01-01
      • 2014-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多