gpt4 book ai didi

rest - 如何在自托管的 o​​win 服务器中动态创建 Web API(REST api)?

转载 作者:行者123 更新时间:2023-12-02 01:20:29 26 4
gpt4 key购买 nike

我正在寻找一种动态生成 W​​eb API 并在运行时添加它们的方法(在初始化自托管服务器之后)。

基本上这个想法是: 1. 创建一个 selfhost owin 服务器服务于静态/已经定义的 Controller (web api)->这部分没问题

  1. 稍后,我想动态生成一个新 Controller 并以某种方式将其添加到服务器,以便客户端可以向其发送请求。 -> 有没有办法做到这一点?我知道我可以动态构建一个 Controller 并将其添加到服务器,然后再将其初始化为服务于现有的 Web API(使用 CustomAssemblyResolver)。

  2. 现在可能需要更新现有的 Controller 。我想重新生成一个现有的 Controller 并更新服务器以使用新定义(可能更改参数、更改 api 名称等)有什么办法吗?我们可以在不停止所有 Controller 的情况下回收 Controller 吗?如果可以某种方式支持这是否意味着该服务将在一段时间内不可用(直到更新完成)。

  3. 理想情况下,它会像托管在 IIS 中的 Web 服务一样工作。如果 Web 服务定义在 2 个请求之间发生变化。第一个请求转到旧定义,第二个请求透明地指向新定义。没有服务中断。

有什么想法吗?

提前致谢

最佳答案

找到了解决方案。如果其他人正在寻找这个,我需要覆盖 DefaultHttpControllerSelector。这是一篇关于该主题的非常好的文章:link所以基本上对于我上面提到的用例,我需要创建一个新的 AppDomain,在其中启动我的服务,并在运行时动态加载我的程序集。我最终需要覆盖 DefaultHttpControllerSelector 来捕获请求。当请求到达时,它就可以控制我要使用哪个 Controller 。在那里我可以通过加载新程序集等动态更新 Controller 。主要要注意的是,这是针对每个请求执行的,因此很容易影响性能和内存。所以我将实现我自己的 Controller 缓存。

关于rest - 如何在自托管的 o​​win 服务器中动态创建 Web API(REST api)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40522242/

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