在C#中创建两个非常相似的软件包有哪些不同的方法

时间:2016-03-29 13:18:31

标签: c# wpf architecture

我正在编写一个软件套件,它基本上由两个使用WPF的C#.Net中的独立应用程序组成。虽然它们可能看起来有点不同,但它们基本上像精简版和同一软件包的完整版一样工作。完整版包含lite版本的所有功能。

我以前通过创建两个独立的应用程序来完成此操作,这些应用程序共享一个所有常用用户控件所在的类库。但我现在想知道这种架构是否有更好的设计。

我甚至考虑创建一个应用程序,并在运行时让它决定它将作为哪个版本。

任何有此类问题经验的人都可以指出我正确的方向。

1 个答案:

答案 0 :(得分:0)

保持简单

我的经验法则是尽可能保持解决方案。话虽如此,我会使用您正在使用的相同构图。

通常打破这样的项目:

应用逻辑: CompanyPrefix.ProjectPrefix.CoreCompanyPrefix.ProjectPrefix.Data ...等。

应用CompanyPrefix.ProjectPrefix.ApplicationType.App,所以有些例子:

  1. CompanyPrefix.ProjectPrefix.Web.App
  2. CompanyPrefix.ProjectPrefix.Console.App
  3. CompanyPrefix.ProjectPrefix.Wcf.App
  4. 由于您有两个Wcf应用程序可能想要执行类似

    的操作
    1. CompanyPrefix.ProjectPrefix.Wcf.Lite.App
    2. CompanyPrefix.ProjectPrefix.Wcf.App
    3. 因此,在此示例中,CompanyPrefix.ProjectPrefix.Wcf.AppCompanyPrefix.ProjectPrefix.Wcf.Lite.App都指向CompanyPrefix.ProjectPrefix.Core或您的业务逻辑。

      关于动态加载程序集

      有一种方法可以在运行时动态加载库,但除非你正在处理一个独立组件的模块化系统,否则会建议不要这样做。

      如果您的心脏被设置在MSDN上有很多资源,可能会启动here。关于将程序集加载到当前应用程序域的文章。

      提出核对清单

      我觉得有用的一件事是提出一份清单,帮助我做出决定,以防我遇到困难。通常最终会像:

      1. 这是否具有商业价值
      2. 这会使调试更难吗?
      3. 与我过去这样做的方式相比,以新的方式做什么是优点和缺点
      4. 这不是我的详尽清单,但解释了这一点。当你有一群人因为个人原因而坚持选择而没有任何基础时,这也会有所帮助,以及当你遇到困难时使用的工具做出决定并坚持下去

        处理应用程序逻辑更改(写清洁代码)

        过度复杂的“永远不需要再次重新编译整个应用程序”是我过去犯的错误。你仍然需要部署和编译一些东西。

        处理应用程序更改的最重要的事情是

        1. 源代码管理代码(最重要)
        2. 写清洁代码
        3. 撰写测试
        4. 写文档(我知道没有人喜欢这样做)
        5. 再写一些测试
        6. 在处理应用程序更改消耗大部分时间 调试,以便专注于减少您的时间花费调试而不是花费大量时间编译和部署

          对于部署设置持续集成

          如果您能够设置CI 消除更改应用程序的99%的麻烦。你第一次失去了一两天的设置,但这是值得的。

          结帐TeamCityTravis CI