【发布时间】:2016-10-16 08:41:35
【问题描述】:
我有一个 WPF 桌面应用程序。
我的想法是这样的:
我安装的应用程序启动并连接到我的服务器。
客户端应用然后将我的视图和 DLL 逻辑/资源加载到 RAM 中。
我就是这样做的:
var uri = "http://127.0.0.1/Dll/MyControls.Dll";
var data = new System.Net.WebClient().DownloadData(uri);
var ViewAssembly = System.Reflection.Assembly.Load(data);
foreach (Type type in ViewAssembly.GetExportedTypes())
{
if (type.FullName.IndexOf(".Plugin") > 0)
{
dynamic obj = Activator.CreateInstance(type);
UserControl wnd = obj.GetControl();
MainContent.Children.Add(wnd);
break;
}
}
uri = "http://127.0.0.1/Dll/Biz.Dll";
data = new System.Net.WebClient().DownloadData(uri);
var DLLAssembly = System.Reflection.Assembly.Load(data);
Type myType = DLLAssembly.GetType("Biz.Logic");
现在在我的“原始”应用程序中,我的视图将通过其引用从我的 Biz.Dll 调用逻辑。
但在这种情况下,DLL 被加载到 RAM 而不是用户硬盘中。 那么,我的视图(已加载到 RAM)是否可以调用 Biz.Dll 中的方法(也加载到 RAM)而不将 DLL 写入用户硬盘驱动器?
我采用这种方法的原因是我希望在任何用户的 PC 上都占用很小的物理空间并控制对代码的访问。因此,每当用户启动应用程序时,它总是会获得最新版本,我可以控制应用程序的注册。
我知道我可以将所有主要逻辑移动到我的服务器上,但我并没有试图保护我的代码,而且我希望即使用户无法获得良好的(即暂时中断的)互联网连接,该应用程序仍然可以运行。我从客户端“缓存”所有服务器更新,并在有连接时更新。
我可以重新设计我的代码以进行后期绑定调用,但我不知道这将如何与我的 xaml 中的绑定标记一起工作..
欢迎任何方法/想法。
谢谢
【问题讨论】: