【问题标题】:Advantages/disadvantages of using ServiceStack services vs ASP.NET MVC controllers?使用 ServiceStack 服务与 ASP.NET MVC 控制器的优缺点?
【发布时间】:2013-07-06 00:22:47
【问题描述】:

注意:这不是处理 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 属性,否则序列化会破坏堆栈。此外,有时反序列化会引发难以诊断的模糊“未设置对象引用”错误。

有人对这个困境有什么想法吗?

【问题讨论】:

    标签: asp.net-mvc servicestack


    【解决方案1】:

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

    这听起来不对,在使用 ServiceStack 时,您永远不需要进行任何不必要的编组/反序列化,即您可以调用 ServiceStack services directly from MVC Controllers,这只是一个 C# 方法调用。

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

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

    【讨论】:

    • 我误解了解释和示例,并认为ServiceStack使用与AppHost中指定的格式化程序对应的客户端调用服务。现在经过更多阅读,我发现我错了。
    猜你喜欢
    • 1970-01-01
    • 2013-12-05
    • 2012-01-10
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多