我正在开始一个新项目,它将使用 HTML5 画布呈现复杂的图形。
目前,我们有一个 Windows 窗体实现,我们希望将其迁移到 Web。因此,布局、绘图对象和所有绘图元数据都是在 C# 中生成的。我们只需要实现绘图,我们将使用 HTML5 画布。
服务器端将是 ASP MVC。它将计算绘图模型,并将其发送给客户端。然后客户端将使用画布来表示数据。
问题是绘图模型有时可能很大。也许 10Mb-50Mb 的元数据。将所有绘图数据从服务器发送到客户端的最佳方式是什么?
将模型用于在 JavaScript 中创建绘图对象的页面中的脚本
这将是标准方式。我将使用 C# 中的绘图对象生成一个模型,然后将这些对象转换为 JavaScript。
- 优点:易于实施
- 缺点:页面会很重。
从返回绘图数据的控制器返回 JsonResult
例如,我可以使用 jQuery 来获取它。此选项失败,因为我达到了 maxJsonLength 属性。我知道它可以在 web.config 中更改,但这似乎不是一个好主意。3.
- 优点:易于实现,可以使用 ajax 从服务器加载绘图对象并向用户报告进度。
- 缺点:更改 Web.config 中的 maxJsonLength 属性似乎不是一个好主意。
使用服务器中的绘图数据生成临时脚本文件并将其包含在客户端页面中
服务器会生成一个JS脚本文件中的绘图数据。然后服务器会将这个页面作为 JavaScript 包含在客户端页面中,因此绘图数据将被加载到客户端中。这种加载也可以使用 ajax 来完成。
- 优点:就像下载一个文件,如果它很大,那不会有问题。
- 缺点:更难实施。需要管理临时文件,我们需要知道文件何时传输,然后将其删除。
其他选择
任何其他选项都将受到欢迎,因为我不是 HTML 编程专家。