0

会有一个应用程序可以做 3 件主要的事情。A,BC. 这将是一个 C# winforms 应用程序。

我们的 CEO 希望将此应用程序分为 6 种不同的产品。

  • 只是一个(简单)
  • A + B(高级)
  • A + B + C(终极)

所有这一切都适用于一个用户或多个用户(许可)。因此,我们现在有 6 个项目!

如果我们假设三大部分确实是分开的,可以单独工作,我们怎么能维持一个项目而卖6个呢?

目前,我想到了三种方法来实现这一点:

A:有一个基本的骨干,并将 A、B、C 中的每一个构建为一个模块。这样我们只需要处理 -one/many users- 问题。

B:创建一个可靠的产品并使用预处理器指令在编译时设置功能。这真的很困难,并且使代码变得丑陋。此外,可能会破坏项目。

C:创建一个版本控制机制,该机制将设置为允许应用程序的某些功能。这是最简单的方法,但有两个缺点。它很容易破解,我们为简单用户提供终极版,这很糟糕。

与此类似的是 Windows 版本问题(Home、Basic、Pro、Ultimate)

我们应该如何设计这个项目?

4

1 回答 1

1

1)模块化- A 和 B 方法之间的决定是困难的。首先,重要的是区分应用程序如何在 UI 中向用户呈现自己的模块化和应用程序底层架构中的模块化。(业务逻辑、数据层等),同时承认第二个反映了第一个。AFAIK WinForms 没有提供非常严格的表示层和业务层分离,您需要做出一些额外的努力来更好地分离这些层,以便在 UI 中具有灵活性,而无需重写大量代码。这意味着如果您将业务层设计为严格反映“UI 模块”..您将被卡住,然后根据销售情况转换模块可能更容易。但如果你想在未来保持灵活性,

2)最终产品与生产- 您可能会有不同的最终产品或包含 A 或 A+B、1 个用户或多个用户等的构建,这并不意味着您需要以这种方式划分代码和工作。 Visual Studio 允许您确保为不同的“发布”版本创建模板,这些模板将包含或不包含这个或那个模块或功能。

于 2012-04-13T14:35:26.493 回答