0

我有一个相当大的应用程序,它将大约 100 个不同的类序列化为 XML。由于在运行时创建 XML 序列化程序需要一些时间,因此我在加载应用程序时为最重要的类执行此操作。对于其他人,在需要时。

为了提高性能,我正在考虑以某种方式坚持创建的序列化程序。

当我在谷歌上搜索这个问题时,我找到了一种使用 Microsoft 工具“sgen.exe”的方法。它允许您创建一个程序集,据我所知,它将所有序列化程序保存到指定程序集中的类型。

在尝试为我的程序集执行此操作时,我认识到所有程序集(以及它使用的所有程序集)都需要签名。在我继续创建大量签名文件并开始为所有项目执行此操作之前,我只想确保我没有遗漏任何东西。

所以最后这是我的问题:如果我想在应用程序运行之前让我的 XML 序列化程序可用,那么这是要走的路吗?

我想将它们存储在 dll 中是“唯一的方法”,但它们的创建方式对我来说似乎非常复杂。我不能只是以某种方式二进制序列化让我们说我需要的所有类型的序列化器(列表)的列表,在启动时加载它们,最后告诉框架使用它们吗?

问候

4

1 回答 1

0

创建序列化程序确实很慢。这应该不足为奇:毕竟创建序列化程序意味着在运行时反映您的类型并生成 (IL) 代码。使用 sgen 是可行的方法:它做同样的事情,但在构建时执行,将该代码存储在磁盘上的程序集中,因此不必在运行时生成它。

您不能使用二进制序列化来序列化序列化程序的代码(可用于数据,而不是用于代码)。好吧,事实上,代码当然可以存储在磁盘上,在程序集中,而这正是 sgen 将为您做的事情。

对包含可序列化类型的程序集进行签名是个好主意,但这并不意味着您的所有程序集都需要签名。只需将可序列化类型放在一个单独的 dll 中,然后只签名那个。

于 2012-06-13T16:33:20.890 回答