RPC ASP.NET API我设计的API,使远程客户端对远程服务器执行PowerShell脚本。设计模式:针对后端应用
为了有效地执行这些命令,应用程序需要以产生用于远程客户端的唯一运行空间(因此它可与合适的宿主初始化运行空间和命令该客户端中设置)。每当客户端发出请求时,API都需要确保请求在正确的运行空间内执行。
的(过度简化的)鉴于流动的可能是这样的:
- 客户端连接到网络API,用于后端应用程序发送凭证
- 的Web API,可以通过到后端应用程序将这些凭据传递,使用它们来对一个链接
session-runspace
ID
- 网页API或者创建唯一地为该客户端配置
- 网页API和应用程式运行空间“同意”通知
session-runspace
ID的客户端或其保持在存储器 - 客户提出要求:例如
"GET http://myapiserver/api/backup-status/"
- Web API将请求传递到后端应用程序函数
- 后端应用程序返回结果:例如, “JSON {这是备份用户/客户端x的当前状态}”
- 网页API通过向远程客户端通过这些结果
- 要么超时或注销请求端“会话”和运行空间设置
(在现实中,PowerShell的应用程序可能只是在Web API中的自定义控制器/模型,或者它可能是一个IIS管理单元或相似 - 我愿意在这里设计建议...)。
我担心的是,以创造独特的运行空间为每个远程客户端,我需要给该客户端的独特的“会话”的ID,这样的API可以通过对应用程序正确传递请求。这感觉就像我打破了无国籍的规则。
事实上,API仍然是无状态的,只是后端应用程序不是,但它确实需要为每个客户端创建一个会话(RunSpace),然后在超时/结束会话请求后处理RunSpace 。
质询
- 我应该攻入在ASP.NET MVC的验证机制来加速旋转运行空间?
- 我应该认输,只是砍了一个会话变量?
- 是否有更好的SOA,我应该考虑什么? (网络API感觉非常整洁的这虽然 - 特别是如果我想有网络,移动和什么具备的,你的客户)
谢谢 - 我很担心。 我需要身份验证才能为客户端创建唯一会话(他们可以访问特定的服务器/命令集)。我想知道在哪里最合理地启动RunSpace,身份验证处理程序或其他地方。 我还想知道web api是否是这项工作的最佳工具,或者是不同的服务设计模式更有意义。 – 2013-02-27 01:13:30