带有 API for WPF 和 javascript 的 Azure

Azure with API for WPF and javascript

我想创建以下项目:

  1. 托管在 Azure 上的服务器应用程序 - 它通过 Entity framework 连接到数据库并为任何想要连接的人提供 API(但帐户存储在 SQL 数据库中)
  2. WPF 应用程序 - 它使用服务器方法、对象等。
  3. Web 应用程序 (php & javascript) - 还使用服务器方法和对象等

重要:我只有 azure 学生的订阅,我想坚持下去 - 购买任何其他东西都是不可能的,除非它有强有力的论据。

我认为要做到这一点我必须创建 REST Web API 因为除了通过 HTTPWebRequest 连接到服务器我别无选择(因为我想为 WPF 使用相同的 API nad 网络应用程序)。

我的问题是:是否存在更好的解决方案?

我想我可以为桌面客户端创建不同于 Web 应用程序的 API,但我不知道该怎么做。谁能好心告诉我其他方法?

为什么我不想拥有这个解决方案? 原因很简单。对于大型数据库和缓慢的互联网连接,在几秒钟内下载整个数据需要很长时间。据我所知,REST 中没有延迟加载,因此我的 WPF 应用程序负责下载数据库的线程会冻结很长一段时间。

如果我的问题太宽泛,请在举旗之前发表评论。 此外,非常感谢有关我的项目设计的任何提示。

桌面和 Web 的不同 API:这很容易完成。假设您有一个 class 库来包含您的业务逻辑(域内容)。创建一个使用它的 web api 项目,然后单独创建另一个也使用核心模型的 web api 项目。部署时,将每个单独部署到不同的 domain/subdomain(我不确定您是否为此需要更多 Azure 资源,但考虑 api.desktop.myapp.comapi.web.myapp.com... 没有真正的技术你不能那样做的原因,尽管出于架构原因我会避免它(它真的接近如果不是绝对是代码重复)。

相同 API 桌面版和网络版:您说过您认为必须对桌面版和网络版采取不同的做法,特别是因为资源服务器上的使用情况。我不同意这里,并认为你应该在你的 API 中实施一些标准化的速率限制。通常这是通过在一次调用中只允许返回 X 数量的资源来完成的。如果初始请求要求超过 X 限制,offset/nextID 将由 API 返回,并且客户端提交一个新请求并注明 offset/nextID。这意味着您有来自客户端的后续调用以获取它需要的一切,但让您的服务器有机会以较小的块处理它(例如,检查速率限制、节流、负载平衡等)。请参阅 漏桶算法 以获得我自己更喜欢的实现:https://en.wikipedia.org/wiki/Leaky_bucket)