内容简介.NET Remoting和Web服务等技术在很大程度上都依赖串行化。本书专门向开发人员介绍串行化在.NET中的重要性,论述串行化的易用性、强大功能和可定制性。本书主要面向VB.NET开发人员,深入讨论.NET中的两个主要串行化机制—— 浅串行化和深串行化,阐述如何设计用于浅串行化和深串行化的类,并介绍了高级浅串行化和深串行化技术,最后简要介绍在使用.NET串行化机制时应重视的安全问题。本书适合于已经编写、编译和运行过VB.NET代码,熟悉自己选择的开发工具的中高级VB.NET开发人员,也适合于对串行化技术感兴趣的开发人员。EISBN:1-86100-800-7Visual Basic .NET Serialization HandbookAndy Olsen,Matjaz B. Juric et alCopyright© 2002 by Wrox Press Ltd.Authorized translation from the English language edition published by Wrox Press Ltd.All rights reserved.
前 言 串行化是.NET Framework的幕后英雄。虽然.NET Remoting和Web服务声名鹊起,但人们并未意识到这些技术实际上在很大程度上依赖于串行化机制。仔细研究一下ADO.NET,就会发现DataSet在广泛使用串行化,而COM Interop不能没有串行化,ASP.NET也使用串行化存储会话数据。 Wrox认为串行化为.NET所做的许多工作,以及它能为VB.NET开发人员做的工作一直未得到应有的重视。Wrox编写本书,专门向开发人员介绍串行化在整个.NET中的重要性,更重要的是,论述串行化的易用性、强大功能和可定制性。 如果读者要在应用程序的非运行期间保存VB.NET对象的状态,通常串行化是最佳的选择(也常常是惟一的选择)。因此本书希望帮助VB.NET开发人员更好地利用这个重要而有效的机制。 本书将讨论如何快速掌握.NET串行化技术。学习本书后,读者应很好地理解如何使用.NET的默认串行化机制来串行化类,如何设计类,优化它们自己的串行化过程,如何定制机制以获得自己希望的串行化结果。本书将介绍一些处理棘手情况的技巧和提示,例如反串行化单个对象。更妙的是,读者将学习到需要进行串行化的场合,在这种场合下,应使用哪种类型的串行化。这将占去本书的大量篇幅,让我们快速深入主题。 本书读者对象 VB.NET手册系列的所有书籍都是面向VB.NET开发人员的,他们需要学习更多的知识来完成某项特定的任务。这些开发人员已经编写、编译和运行过VB.NET代码,熟悉自己选择的开发工具。本书要完成的任务是介绍如何有效地控制和使用.NET的串行化机制。 本书主要内容 本书主要面向VB.NET开发人员,深入探讨了串行化机制,说明何时应使用串行化,如何定制串行化,以及为什么要使用串行化。我们将介绍一些好的经验,指导读者根据自己的需要作出正确的选择。 第1章:.NET串行化简介 首先讨论什么是串行化,为什么需要在VB.NET程序中使用串行化。接着讨论.NET中的两个主要串行化机制—— 浅串行化和深串行化,之后概述在默认情况下可以串行化的格式。最后介绍.NET中串行化的一般使用场合。 第2章:基本.NET串行化 第1章概述了.NET串行化,接着就要在本章开始使用.NET串行化技术了。本章将介绍如何把一个类浅串行化为XML格式,和如何把类深串行化为二进制或SOAP格式。然后比较这两个串行化格式,找出串行化对象的最佳方式。 第3章:设计用于浅串行化的类 第2章介绍了如何以一种简单、默认的方式使用.NET串行化,实际上在许多情况下这些默认的机制并不是很好。例如,如果需要串行化为与默认的XML、SOAP或二进制格式不同的格式,该怎么办?本章就介绍定制默认串行化机制的方式,讨论如何给可串行化的类添加控制浅串行化格式的属性。 第4章:设计用于深串行化的类 在讨论完在可串行化的类中定制浅串行化后,就开始论述如何定制深串行化。这么做的一个原因是可以确保不使用反串行化创建几个单一的实例。 第5章:高级浅串行化技术 有时需要定制串行化,但不能访问可串行化类的源代码,所以不能进行必要的修改。或者可以访问源代码,但不能修改它们,因为该类由其他应用程序使用。在这种情况下,就需要一种方式在类的外部控制和定制串行化,即在串行化代码中进行控制和定制。本章就讨论如何对浅串行化进行这种处理。 第6章:高级深串行化技术 本章接着介绍如何在可串行化类的外部对深串行化进行定制。讨论这种技术如何帮助我们把对象旧版本中的数据反串行化为新版本,或创建一个串行化格式化器,把数据串行化为一种与XML、SOAP或二进制格式完全不同的格式。 第7章:安全地使用串行化 本章介绍在使用.NET串行化机制时应理解的安全问题。这包括如何串行化和存储敏感的数据,如何加密已串行化的数据,以及如何阻止有恶意的用户误用串行化/反串行化代码。