【问题标题】:software architecture of .net application.net 应用程序的软件架构
【发布时间】:2014-05-23 20:28:48
【问题描述】:
模块、类、命名空间、项目、文件夹、文件在 c# 应用程序的软件架构中是如何关联的。
模块是一组类并且类似于命名空间。
还是模块本身就是项目?
例如,如果我们在谈论身份验证模块,我们实际上是在谈论命名空间还是只是一个文件夹或一个文件(因为一个文件可以包含登录所需的所有类)。
我发现很多人使用它的方式不同。
什么是正确的方法,我相信一定有一个明确的方法。
【问题讨论】:
标签:
.net
visual-studio
architecture
【解决方案1】:
正如您已经发现的那样,没有一个正确的答案。这取决于上下文。
通常,模块是特定关注点的组件。这给我们带来了组件是什么的问题。一种可能的定义是:
组件是一个包含内容、变化点和扩展点的容器,可在组合过程中进行调整。
所以实际上,这可以是任何东西——一个类、一组类、一个完整的软件系统(例如 Web 服务)……这真的取决于上下文。
命名空间只是构建类的一种方式。您可以(但不一定)在命名空间内对模块的内容进行分组。
一个项目可以是一个模块,但它也可以包含多个模块。此外,一个模块可以分布在多个项目中。
文件夹只是构建源文件的组织方案。它与软件架构无关。这同样适用于文件。
模块的基本点是关注点分离。在开发模块时,您将整个思考集中在一个(或几个)问题上,从其他问题中抽象出来。但是,您应该始终牢记整个系统。
在 VB.Net 中,模块是一个静态类。