我正在评估ASP.NET Core应用程序的各种托管选项.
在ASP.NET的新编程模型中,您使用一组中间件(旧的IHttpModule和IHttpHandler的混合)处理请求.
您可以拥有一个中间件,它可以负责身份验证,处理静态文件或在发送之前压缩响应(只是为了命名一些).
这就是混乱.
在责任的背景下,在服务器和应用程序之间设置边界的位置?
哪一方应负责压缩响应?使用IIS,它由服务器处理并在web.config中配置. Kestrel不提供此功能AFAIK,因此您需要在应用程序中实现自定义中间件,以便为您处理此问题.哪一个更合适?
身份验证怎么样? IIS提供身份验证设置(匿名,模拟,表单身份验证).相反,在ASP.NET Core中,我们还可以编写一个可以为我们处理这个问题的应用程序中间件.
好的,SSL由服务器处理,因为它位于协议层的下方,而app仅在HTTP(S)上运行.
服务器应该承担什么责任?应用程序应该承担哪些责任?
最佳答案 服务器负责实现基本HTTP协议,管理连接等.它也可以选择提供其他功能(例如
windows auth),但我们建议不要使用它,除非它可以提供超过中间件实现的明显优势.例如.
Windows身份验证可以在中间件中实现,但由于某些连接管理限制,它会更加困难.压缩可以在中间件中实现,就像在服务器中一样容易.