以前我的WPF应用程序大小为4096KB,作为单个.exe文件。
现在我将应用程序拆分为多个这样的
JIMS.exe Main Application-->103KB
JIMSDAL.dll Data Access Layer-->43KB
JIMS.Core.dll Core classes for MVVM-->110KB
JIMS.Commands.dll MVVM Commands-->11KB
JIMS.Controls.dll WPF UserControls-->25KB
JIMS.Resources.dll Fonts,icons and xaml resources.-->44KB
UtilityClasses.dll Other classes like Helper classes-->10KB
我还想通过将JIMS.exe中的视图模型删除到JIMS.ViewModel.dll来添加两个dll。
现在我的问题是,这是将单个EXE吐入多个dll的好方法吗,
请告诉我这有什么优缺点。
我有一些意见,如果有更多的dll,JIMS.exe将很难使用该应用程序联系许多dll。因为对于每个调用,它必须读取相应的dll。
提前致谢。
答案 0 :(得分:4)
我还没有看到它提到过,所以我会参与其中。
根据我的经验,在C#中使用这种方法的主要原因是exchangeability
- 可以轻松地替换系统的部分内容。
举个例子,我们在当前的项目中使用这种方法。每个GUI组件(或UserControl
)都是它自己的dll,并在启动时动态导入。这允许我们为GUI实现插件架构,并允许我们的GUI开发人员在单独的项目中工作,而不必加载所有逻辑/等。
我不能告诉你它是“好”还是“坏” - 这是你为了特定目的所需要的。我可以告诉你的是,它不是“错误的”。
答案 1 :(得分:0)
如果您打算在其他项目中独立使用这些dll,那么确定您可以拆分它们,否则有什么好处?我不确定您的应用程序,但如果您正在编写控件,供其他开发人员使用或将应用程序集成到其他应用程序中,则单独管理dll可能会成为一项艰巨的任务。我不太确定你的最后意见。我希望看到社区对此的投入
答案 2 :(得分:0)
它有很多好处:
- 如果您正在做一个小更新,您的用户不必下载完整的exe,他们只需要下载一些dll,这些dll很小 - 如果您正在编写另一个正在使用该程序的程序,您的用户可以节省内存 - 如果你的程序变得庞大并且你有几分钟的构建时间,你不必重建所有,如果你正在进行更改,你可以再次构建更改后的dll
但它有一些消极的观点: - 你的用户可以删除dll(如果他们真的很愚蠢),然后想知道为什么程序不再工作 - 没有dll,您的用户可以快速构建便携版本
如果您的项目很大(听起来像是因为4MB exe),我会分割程序,但如果它是一个小程序,我就不会分割程序。
答案 3 :(得分:0)
我在我正在开发的应用程序中遵循类似的方法,但对我来说,主要原因是启用应用程序的控制台版本的开发。这样我就可以使用XAML GUI在应用程序中提供简单的一次性操作,然后使用控制台版本安排更长时间运行/维护操作。它们都使用相同的模型和视图模型层,但显然是不同的“视图”。
对我而言,感觉就像MVVM的巨大优势之一,特别是如果您将组件分解为单独的项目/库。
答案 4 :(得分:0)
我们目前正致力于针对特定利基市场的大规模应用,但我们的许多客户需要小型定制应用,这些应用虽然根据他们的需求量身定制,但他们经常使用产品的许多不同功能。数据库。因此,我们将Wpf应用程序拆分为许多不同的程序集,这是能够执行此操作的唯一真正方法。在许多方面,它几乎使这些额外的工具,我们创建了一个新的开发和部分集成现有的开发,使这些新的应用程序很快与大多数测试的代码放在一起。
答案 5 :(得分:-1)
将应用程序拆分为多个dll很好。这使得项目更易于管理,更容易添加/删除功能,并且更容易使用现有的dll编写完整的新应用程序。 我认为动态链接更适合应用程序.....
关于动态CALL的好事
关于动态CALL的坏事
有关详细信息,请参阅Here