【问题标题】:Send C# Assembly/DLL Over Network?通过网络发送 C# 程序集/DLL?
【发布时间】:2015-11-22 06:08:38
【问题描述】:

我的目标是让我的服务器在运行时通过网络发送客户端需要的某些类的程序集。这样,客户端 DLL 根本不需要更新。我想知道是否有更好的方法来做到这一点,然后只发送完整的 DLL 文件?我正在使用 TCP 连接。

对于担心这种选择的安全性的任何人,我们都在一个只有有线的本地网络上,没有人可以访问,但受信任的客户端。

【问题讨论】:

  • 但是要从服务中调用/下载程序集,您还需要至少一个程序集作为客户端,对吗?同意??如果是这样,那么我会说发布程序集的方式?使用 wcf / remoting 调用方法并通过网络获取结果
  • 我确实有一个后端 DLL,它几乎永远不会被更改,它负责发送/接收消息以及客户端/服务器启动。我对 WCF 了解不多,但我目前正在使用 protobufs 进行通信。我有一条初始消息,其中包含序列化程序集的 byte[]。主要问题是如何以最小最有效的形式序列化?
  • 我可以告诉你我曾经使用过什么方法。那是一个服务器(本地网络服务器),我将从那里获取更新的 dll。我有一个 web asmx 服务,首先我从中获取服务器上文件的版本。如果版本与客户端上的版本匹配。我继续运行 wpf 表单,但如果版本不同,我将 dll 从服务器下载到客户端并保存在客户端旧文件的相同位置,然后运行 ​​wpf 应用程序。希望它也可以在你的场景中工作
  • 我会调查的。我对某些细节有点怀疑,但感谢您的意见!
  • 哇,那肯定行得通,而且看起来也不难。

标签: c# .net tcp .net-assembly


【解决方案1】:

您所描述的问题是 ClickOnce 旨在解决的问题。来自ClickOnce Documentation

ClickOnce 是一种部署技术,使您能够创建自我更新的基于 Windows 的应用程序,这些应用程序可以通过最少的用户交互来安装和运行。如果您使用 Visual Basic 和 Visual C# 开发了项目,Visual Studio 将为发布和更新使用 ClickOnce 技术部署的应用程序提供全面支持。

其中一个最重要的方面是安全性。例如,如何验证程序集是否可以安全运行、程序集是否来自正确的来源等。构建自定义实现的主要好处是您使用的是行业标准和审查机制。 ClickOnce 使用证书。

【讨论】:

  • 感谢您的意见!自从我问起,我实际上让我的自定义工作正常了,但这可能是未来发展或其他任何想要做这种事情的人的最佳答案。
猜你喜欢
  • 2013-08-21
  • 1970-01-01
  • 2011-04-05
  • 1970-01-01
  • 2011-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多