N层架构和冗余数据库访问

时间:2012-05-02 12:32:56

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

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

我考虑过使用NHibernate,但我有些疑惑,主要原因是: 我在软件开发方面没有太多经验。
会话处理看起来相当复杂,特别是如果必须有一个业务层为web接口和传感器接口提供功能。由于延迟加载,我需要在这些接口处激活会话,但是表示层知道不希望的数据访问层。

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

4 个答案:

答案 0 :(得分:0)

使用repository,会包装会话并提升图层的内聚力,您可以查看question

如果您认为NHibernate有点复杂,可以使用EntityFramework 4.3

答案 1 :(得分:0)

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

如果您花一些时间考虑如何对这些部分进行分区,允许您在两者之间定义干净的界面,整个项目的复杂性至少应该减少一些。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

Web开发中的当前正统是MVC;在Microsoft土地上,这意味着ASP.Net MVC。 MS站点有一个很棒的教程,描述了将表示业务域的“模型”类与数据库集成的方式。

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