【问题标题】:Separating optimization algorithm from application将优化算法与应用程序分离
【发布时间】:2012-04-20 09:59:06
【问题描述】:

我刚刚开始做我的硕士论文。我的任务是创建一个优化公寓供暖的系统。公寓配有传感器,用于测量当前温度。

通过使用这些温度和其他一些措施,可以完成优化,并将信号发送回调节温度的公寓。优化将以循环方式 24/7 循环通过所有公寓进行。

因此,系统必须与传感器通信、进行优化并记录数据。此外,应为公寓提供基于 webb 的用户界面,以便他们可以查看当前的电力/水消耗量。

系统将使用 C#/.Net 编写。

我没有构建大型系统的必备经验,对 .Net 的经验也很有限。我最初的想法是建立一个 N 层架构,其中在最高级别提供两个接口。为用户提供一个 Web 界面,然后为传感器提供某种界面(在架构中具有以下优化算法)。

我想在架构中尽可能多地重用组件,但有一个限制,我想尽可能地将优化算法与其他部分分开。也就是说,算法中的崩溃不应影响系统的其余部分(可能传感器接口除外)。

所以,我的问题是。我应该以什么方式实现优化部分?我应该创建一个 Windows 服务还是让它在自己的线程中运行?

如果 Windows 服务是一个不错的选择,是否可以在层次结构中进一步使用组件?即数据库存储库、所有对象等。

架构的选择好不好。如果不是,为什么?

在设计/实施系统时我应该考虑什么特别的事情吗?

注意。目前尚不清楚传感器与系统之间的通信将如何进行。

祝你有美好的一天!

【问题讨论】:

    标签: c# windows architecture service n-tier-architecture


    【解决方案1】:

    首先,一些关于你的方法的cmets。我对您的建议是尽可能简单地构建系统。避免 n 层思维、服务和其他复杂的事物——直到你需要它。然后当你发现你需要它时,你可以创建它。

    在构建系统时关注增值。不要开始创建可重用的组件和算法(您后来发现它们不像您最初想象的那样可重用或可用)。相反,首先要为最终用户解决问题。用最简单的方法解决它。然后解决下一个问题。然后分析您的代码,看看您是否可以找到可以提取到可重用部分的通用部分。然后通过解决另一个问题重复。

    每次都尽量解决小问题。当您解决了 10 或 20 个问题时,您会发现您已经创建或可以创建某种分层或组件化。

    通过创建多个传感器来为传感器创建接口。当只有一个传感器时,您只能猜测界面应该是什么样子。有了更多的传感器,你就会知道。

    关于稳健性(调用传感器时不会崩溃),这取决于您想要它有多稳健。在传感器上调用方法并因此在同一进程中执行传感器代码时的包罗万象,将捕获大多数问题并成为最简单的解决方案。我肯定会从这个开始。除非您需要它(例如创建响应式 UI),否则我什至不会在不同的线程中执行它。

    将传感器移动到它自己的进程(服务)可以让操作系统处理诸如写入坏内存之类的问题。如果传感器是用 C# 编写的,您通常不会遇到此类问题。

    如果您选择将传感器代码放在服务中,则仍然可以重用代码。只需将公共代码放在两个进程都可以访问的程序集中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      • 1970-01-01
      • 2011-03-05
      • 2011-01-24
      • 2015-12-01
      • 2013-08-17
      • 1970-01-01
      相关资源
      最近更新 更多