我正在编写一个软件套件,它基本上由两个使用WPF的C#.Net中的独立应用程序组成。虽然它们可能看起来有点不同,但它们基本上像精简版和同一软件包的完整版一样工作。完整版包含lite版本的所有功能。
我以前通过创建两个独立的应用程序来完成此操作,这些应用程序共享一个所有常用用户控件所在的类库。但我现在想知道这种架构是否有更好的设计。
我甚至考虑创建一个应用程序,并在运行时让它决定它将作为哪个版本。
任何有此类问题经验的人都可以指出我正确的方向。
答案 0 :(得分:0)
我的经验法则是尽可能保持解决方案。话虽如此,我会使用您正在使用的相同构图。
通常打破这样的项目:
应用逻辑: CompanyPrefix.ProjectPrefix.Core
,CompanyPrefix.ProjectPrefix.Data
...等。
应用:CompanyPrefix.ProjectPrefix.ApplicationType.App
,所以有些例子:
CompanyPrefix.ProjectPrefix.Web.App
CompanyPrefix.ProjectPrefix.Console.App
CompanyPrefix.ProjectPrefix.Wcf.App
由于您有两个Wcf应用程序可能想要执行类似
的操作CompanyPrefix.ProjectPrefix.Wcf.Lite.App
CompanyPrefix.ProjectPrefix.Wcf.App
因此,在此示例中,CompanyPrefix.ProjectPrefix.Wcf.App
和CompanyPrefix.ProjectPrefix.Wcf.Lite.App
都指向CompanyPrefix.ProjectPrefix.Core
或您的业务逻辑。
有一种方法可以在运行时动态加载库,但除非你正在处理一个独立组件的模块化系统,否则会建议不要这样做。
如果您的心脏被设置在MSDN上有很多资源,可能会启动here。关于将程序集加载到当前应用程序域的文章。
我觉得有用的一件事是提出一份清单,帮助我做出决定,以防我遇到困难。通常最终会像:
这不是我的详尽清单,但解释了这一点。当你有一群人因为个人原因而坚持选择而没有任何基础时,这也会有所帮助,以及当你遇到困难时使用的工具做出决定并坚持下去
过度复杂的“永远不需要再次重新编译整个应用程序”是我过去犯的错误。你仍然需要部署和编译一些东西。
处理应用程序更改的最重要的事情是