【问题标题】:N-Tier architecture and redundant database accessesN 层架构和冗余数据库访问
【发布时间】:2012-05-02 12:32:56
【问题描述】:

作为我硕士论文的一部分,我将开发一个用于公寓热优化的软件。该软件将是中等规模的,将有一个面向客户的基于 Web 的界面和一个面向传感器的界面(放置在公寓中)。我正在考虑多层架构。系统中的许多对象都会有自己的数据库表。这意味着用于保存和检索对象的大量代码和 SQL 语句(以及时间)。这仍然是开发软件的标准方式吗?

我曾考虑过使用 NHibernate,但我有一些疑问,主要原因是: 我在软件开发方面没有太多经验。
会话处理似乎相当复杂,特别是如果必须有一个业务层为 Web 接口和传感器接口提供功能。由于延迟加载,我需要让会话在这些接口处处于活动状态,但表示层会意识到数据访问层是不可取的。

那么,还有其他选择吗?我正在使用 MySql 5.5 和 C#。

【问题讨论】:

  • 有多少公寓?每间公寓有多少个传感器?
  • 尚不清楚。在测试阶段可能有大约 100 个,但系统必须能够扩展到更大的规模。每间公寓的每个房间都至少有一个传感器。

标签: c# sql nhibernate architecture n-tier-architecture


【解决方案1】:

目前web开发中的正统是MVC;在微软领域,这意味着ASP.Net MVC。 MS 站点有一个很棒的教程,描述了您将代表您的业务领域的“模型”类与数据库集成的方式。

ASP.Net MVC 还提供了一种构建 Web API 的方法 - 这应该允许您的传感器使用相同的底层模型类与应用程序进行通信。

【讨论】:

  • 问题在于该应用程序主要不是 Web 应用程序。它将包含一个繁重的优化算法。 Web 部件仅用于向客户显示信息,例如他们的公寓温度日志。这就是我考虑使用 n 层架构的原因。这样无论是网络、优化算法(业务逻辑的一部分)还是与传感器的通信都可以使用相同的底层逻辑和数据库(以减少代码量并增加系统的可维护性)。
  • 这就是 MVC 的重点——通过抽象“模型”层,您可以将业务逻辑集中到域模型中,并通过添加特定视图和/或控制器来以多种方式与之交互.
【解决方案2】:

在我看来,您有一个固有的逻辑分区,应该将传感器-数据库通信抽象为一层,并将客户-数据库通信抽象为另一层。传感器端可以提供一组只读接口,以便(根据需要)向客户端提供信息,而热量优化工作的核心功能可以基本上位于中间。

如果您花一些时间考虑应该如何划分这些部分,允许您在两者之间定义干净的接口,那么整个项目的复杂性至少应该会减少一些。

【讨论】:

    【解决方案3】:

    如果您“我在软件开发方面没有太多经验”,我会仔细考虑 NHibernate。虽然它是一个了不起的工具并且非常强大 - 学习曲线可能很陡峭,并且取决于您想要投入多少时间来学习它。不过话虽如此,我真的很高兴。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-17
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 2013-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多