考虑到所有应用程序都将与使用云端或 Web 服务的 Web 项目进行交互...
有没有办法在应用程序之间共享我的类模型?
如果有,最好的方法是什么?
关于从 Web 服务发送/接收数据,序列化和反序列化,如何简单地完成此操作而不必手动填充对象?
有关这些应用程序的任何信息都将非常有帮助!
考虑到所有应用程序都将与使用云端或 Web 服务的 Web 项目进行交互...
有没有办法在应用程序之间共享我的类模型?
如果有,最好的方法是什么?
关于从 Web 服务发送/接收数据,序列化和反序列化,如何简单地完成此操作而不必手动填充对象?
有关这些应用程序的任何信息都将非常有帮助!
要在多个应用程序之间共享领域模型,请看Microsoft的可移植类库Visual Studio扩展。它包含了创建可以在WPF、Silverlight和Windows Phone上运行的库的模板。生成的编译后的.dll可在所有三个平台上使用。
我曾经使用这种项目类型在WCF服务和其Silverlight消费者之间共享常见的DTO,等等。
要在您的领域模型和DTO之间进行转换,请参考AutoMapper。
我知道有几个选项。
在您的 Web 服务中定义模型,当您的应用程序添加对服务的引用时,您还将获得模型定义。
使用文件链接,将您的域文件链接到每个项目(我们目前使用一些魔法来处理客户端和完整 .net 之间的差异(使用自动映射器或反射来填充本地对象)
将您的域模型放在一个单独的项目中,并由每个项目引用
我建议创建一个非常精简的Domain项目,它可以完成大部分繁重的工作,但仍然为您的项目类型(WPF、ASP.Net等)提供一个公共层。
由于Domain旨在与所有不同类型的项目一起使用,因此它不能包含在所有所需项目类型中都不可用的命名空间,这将很困难。
为了解决这个问题,我建议创建一个Services项目,通过编译器指令或Services可以是每种项目类型的不同项目的命名空间,来提供您的Domain项目的扩展功能。(这样当只发布Silverlight时,您将发布Services.Silverlight以及Domain和您的Silverlight项目。)这将减少编译器指令的数量。
在拥有上述项目之后,您可以开始为所有其他项目创建前端和应用程序特定逻辑。然后,您可以使用自动映射程序或其他工具将您的(可能的)视图模型映射到Domain中的模型。
拥有Domain和Services成为所有核心逻辑的一层将帮助您以后扩展到其他项目类型(如果需要)。