C# 优化算法与应用的分离

C# 优化算法与应用的分离,c#,windows,architecture,service,n-tier-architecture,C#,Windows,Architecture,Service,N Tier Architecture,我刚开始写硕士论文。我的任务是创建一个优化公寓供暖的系统。公寓里有测量当前温度的传感器 通过使用这些温度和其他一些措施进行优化,并将信号发送回调节温度的公寓。优化将以一种循环的方式在所有公寓中进行24/7 因此,系统必须与传感器通信,进行优化,并记录数据。此外,应为公寓提供基于WEB的用户界面,以便他们能够查看当前的电力/水消耗 该系统将用C#/.Net编写 我在构建大型系统方面没有必要的经验,在.Net方面的经验也有限。我最初的想法是使用一个N层架构,其中在最高级别提供两个接口。为用户提供一个

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

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

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

该系统将用C#/.Net编写

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

我希望在体系结构中尽可能地重用更多的组件,但限制是我希望尽可能地将优化算法与其他组件分离。也就是说,算法中的崩溃不应影响系统的其余部分(可能除了传感器接口)

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

如果windows服务是一个很好的选择,那么是否可以使用层次结构中更底层的组件?即数据库存储库、所有对象等

建筑的选择好吗。若否,原因为何

在设计/实施系统时,我是否应该考虑一些特殊的问题

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


祝你今天愉快

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

当你建立你的系统时,专注于增加价值的事情。不要开始创建可重用的组件和算法(您后来发现这些组件和算法不像您最初认为的那样可重用或可用)。相反,从为最终用户解决问题开始。用最简单的方法解决它。然后解决下一个问题。然后分析代码,看看是否可以找到可以提取到可重用部件中的通用部件。然后通过解决另一个问题来重复

每次都尽量解决小问题。当你解决了10到20个问题时,你会发现你已经或者能够以某种方式创建某种层次或组件化

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

关于健壮性(调用传感器时不会崩溃),这取决于您希望它的健壮程度。当在传感器上调用一个方法,从而在同一个过程中执行传感器代码时,一个包罗万象的方法将捕获大多数问题,并且是最简单的解决方案。我肯定会从这个开始。我甚至不会在不同的线程中执行它,除非您需要它(比如创建一个响应的UI)

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

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