3

注意:这不是处理 ServiceStack 和 WebAPI 之间选择的几个问题的重复。

我正在尝试确定在 ASP.NET Web 应用程序中使用 ServiceStack 的程度:

选项 A:通过放弃 MVC 控制器并用基于 ServiceStack 的服务和 Razor 视图替换它们来全面使用 ServiceStack。

选项 B:使用支持 ServiceStack 的 MVC 控制器以获得更好的性能和可扩展性。

A 的明显优势是它在构建我的观点时为我提供了额外的灵活性。但是,我担心两件事:

  1. 与 MVC 控制器处理的纯 C# 对象相比,ServiceStack 执行的与 Json 或 Xml 之间的请求/响应 DTO 的所有序列化/反序列化必然会以性能为代价。

  2. 在处理复杂的对象图时,序列化可能有点不稳定。例如,在涉及循环引用的情况下,Parent.Child <-> Child.Parent必须使用 IgnoreDataMember 属性,否则序列化将破坏堆栈。此外,有时反序列化会引发难以诊断的晦涩的“未设置对象引用”错误。

有人对这个困境有任何想法吗?

4

1 回答 1

9

与 MVC 控制器处理的纯 C# 对象相比,ServiceStack 执行的与 Json 或 Xml 之间的请求/响应 DTO 的所有序列化/反序列化必然会以性能为代价。

这听起来不对,在使用 ServiceStack 时,您永远不需要进行任何不必要的编组/反序列化,即您可以直接从 MVC 控制器调用 ServiceStack 服务,这只是一个 C# 方法调用。

在处理复杂的对象图时,序列化可能有点不稳定。例如在涉及循环引用的情况下......

那是因为您应该只在线发送干净的、自我描述的 DTO,而不是转储具有周期性依赖关系的 db 模型。

于 2013-07-08T16:12:12.870 回答