gpt4 book ai didi

c# - AngularJS 与 Web 服务交互最佳实践

转载 作者:太空狗 更新时间:2023-10-29 23:45:29 29 4
gpt4 key购买 nike

我有一个用 AngularJS、C# 和 Entity Framework 实现的小型网站。整个网站是一个单页应用程序,它的所有数据都来自一个 C# 网络服务。

enter image description here

我的问题涉及 C# Web 服务应该公开的接口(interface)。这一次,该服务可以以 RESTful 方式提供实体,直接提供它们或作为 DTO。另一种方法是 Web 服务只为一个用例返回一个对象,这样 AngularJS Controller 只需要调用一次 Web 服务,就可以直接使用响应的模型。

为了澄清,请考虑以下两个片段:

  // The service returns DTOs, but has to be invoked multiple 
// times from the AngularJS controller
public Order GetOrder(int orderId);
public List<Ticket> GetTickets(int orderId);

  // The service returns the model directly
public OrderOverview GetOrderAndTickets(int orderId);

虽然第一个示例公开了一个 RESTful 接口(interface)并使用资源隐喻,但它具有仅返回部分数据的巨大缺点。第二个示例返回一个根据 MVC Controller 的需要定制的对象,但很可能只能在一个 MVC Controller 中使用。另外,第二种场景中公共(public)字段需要做大量的映射。

我发现我时不时地在我的网络服务中做这两件事,并且想得到一些关于它的反馈。我不太关心性能,尽管多个请求当然是有问题的,一旦它们使应用程序减慢太多,它们就需要重构。设计 Web 服务界面的最佳方式是什么?

最佳答案

我建议采用 REST 方法、通用 API 设计,而不是单一用途远程过程调用 (RPC) 方法。虽然在项目开始时 RPC 会非常快,但端点的数量通常会成为维护代码时的负担。现在,如果您只会收到少于 20 种类型的服务器调用,我会说您可以坚持使用这种方法而不会被咬得太厉害。但是,如果您的项目将持续一年以上,您最终可能会得到比 20 个多得多的终点。

使用基于休息的服务,您始终可以添加一个可选参数来描述所述资源包含的子记录,并为特定调用返回它们。

关于c# - AngularJS 与 Web 服务交互最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25450229/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com