1

好的,所以我有一个前端 Silverlight GUI 和一个在服务器上运行的后端 Windows 服务。前端将请求放入 SQL Server DB 中,服务处理它们。大部分请求是我希望 Silverlight 序列化为 XML 字符串并放入数据库的对象。Windows 服务需要对其进行反序列化。

因此,我需要一个可以被 Silverlight 和普通 C# Windows 程序引用的类,并且至少可以由 Silverlight 序列化为字符串,并由 Windows 服务从字符串反序列化。

该对象本身没有任何特定于 Silverlight 的内容,但它必须位于 Silverlight dll 中,前端才能使用它。但这意味着我必须使用 Silverlight 方法对其进行反序列化,并且在从服务调用时它们不起作用。

我唯一能做的就是在类中使用 Silverlight 编写 Serialise 方法,并在 Windows 服务中使用普通 .Net 编写 Deserialise 方法。

有没有更好的办法?

--- 阿利斯泰尔。

4

2 回答 2

0

听起来您应该使用WCF RIA 服务项目。这允许您共享单个代码库,Visual Studio 编译该代码库以分离 Silverlight 和 .Net 程序集。

于 2013-05-03T20:51:30.710 回答
0

两种选择:

  • 将代码编写为可移植类库,选择您需要的框架;这为您提供了一个可供多个框架使用的 dll,但(显然)将您限制为您选择的框架可用的功能的共享子集(交集)
  • 在多个框架上分别编译相同的 DTO 代码;大多数标准 DTO 代码都可以很好地编译 Silverlight 和 Windows 目标——因为它们主要只是添加XmlSerializer属性等——没有什么非常特定于目标的。XmlSerializer两者都存在

请注意,xml 在语言、操作系统、硬件等之间工作得很好——让它在 Silverlight 和 Windows 之间工作是相当平凡的。

于 2013-05-03T22:12:05.927 回答