我正在Windows Mobile上开发一个C#应用程序,就像我的大多数WM应用程序一样,每当我决定使用序列化策略时,我总是陷入困境。在桌面世界中,我并不太担心,因为我已经开发了一个非常强大的自定义xml序列化程序 - 但是,在WM世界中,我不想使用它,因为反射性能损失。
所以我根据数据访问对象(DAO)接口开发了所有内容,因此我可以轻松地将不同的实现交换为xml,registry,sqlce等。在开始开发时,我通常实现一个非持久性的 - 内存DAO(使用Dictionary<>),当我想要保存数据时接着是XmlSerializer DAO,然后当一切都完成后,转移到一个完整的sqlce DAO。
但是,在我的最新应用程序中,我无法使用XmlSerializer DAO,因为它(不)处理接口属性有多么糟糕。 IE,我有一个Foo对象,其中包含一个List< IBar> Bars属性,XmlSerializer无法序列化它(虽然我很容易开发自己的自定义xml序列化程序,可以 - 去图)。
所有这些问题:您发现了哪些DAO策略可以帮助您开发WM的应用程序?您是否计划在不同的应用程序成熟度级别提供几个不同的DAO?你是从完整的sqlce DAO开始的吗?当XmlSerializer无法使用时,您建议使用快速简便的持久序列化DAO?
答案 0 :(得分:1)
嗯,它不一定适用于您的情况(因为它,如XmlSerializer
,想要具体类型),但protobuf-net是一个二进制序列化引擎,适用于所有.NET变体,包括CF 2.0和CF 3.5;这将允许您存储数据,并与您的全脂3.5服务器(或实际上,与java,perl,php,etc)交换。
这当然快速而简单,如果您想在WM中使用便携式数据,那么绝对值得一看。