-
Notifications
You must be signed in to change notification settings - Fork 186
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HTTP model enhancements #1387
Comments
Is there a corresponding issue for the template change resulting from this nice improvement? I have some thoughts on the template I'd like to posit if there's an existing issue. |
Like this direction @fabiocav . Ideas:
|
Created #1465 to track. Let's discuss additional templates we want to consider there. |
In @fabiocav's response in #366 (1 month ago) there is an explicit acceptance that whilst the improvements proposed in this issue are great and we are all looking forward to them, there is a considerable number of people (including myself) who need a more immediate way to handle file uploads:
Can someone, please, provide an update on when can we expect those "quality-of-life improvements" addressed with the current model? |
Anyone from the team, please? ^^^ |
It has been almost 4 months since an apology about lack of updates was posted by this team (#366 (comment))
On that same post, there seemed to be an understanding that this issue could not wait until the "new model" was ready and that "quality-of-life improvements" would be done. It has been almost 2 months since my original question in #366 and over 3 weeks here. There has been a complete silence from this team. All I'm asking is for some update on what was offered. We need to make a decision on how to implement file uploads and are completely blocked by the lack of support in the code (which is understandable, as writing code takes time and effort), but also by the complete absence of updates from the team, which is less understandable and feels unprofessional and uncaring about your customers. |
@rodolfograve I'll continue providing updates on that thread. Updating here that the initial preview of the work tracked by this epic is now in preview: https://learn.microsoft.com/en-us/azure/azure-functions/dotnet-isolated-process-guide#aspnet-core-integration-preview |
@fabiocav Will the middleware pipeline be added? If not, why not? If so, will the builder models It would be very helpful to be able to use standard middlewares in an azure function pipeline. |
Would be nice if the samples in the repo would contain a sample for the enhanced HTTP model. |
Actively working on that! :) |
I'll stop reading your mind 😃 |
@davidpeden3 eventually, yes. We plan on exposing the ASP.NET Core pipeline for full customization, but the initial release is targeting parity with the in-proc experience, and once that is in place, we'll GA the feature so folks can confidently use it in production. The additional enhancements will come after, but not too far behind. |
This works great locally, but I'm having some trouble getting it to work when deployed to Azure. It never manages to get past this step It almost feels like the Any ideas? |
Seems to be working now 🤷 |
Glad to know. Did you make any changes from your side to make it work? Would you mind sharing? Thanks! |
I had to remove the Anyway |
Closing this as resolved now that we have the ASP.NET Core integration out and in GA state. If you run into any problems, please open a separate issue. Thank you! |
This epic tracks the issues/work items that are part of the out-of-proc (and more specifically, .NET Isolated) HTTP model enhancements that will bring support for more advanced HTTP scenarios, HTTP performance improvements and deeper integration with ASP.NET.
The current state: what we're solving
The HTTP model exposed by the host to out-of-proc workers relies on a representation of the HTTP request being passed over the worker gRPC channel as part of the function invocation. The HTTP response representation is returned to the host using the same channel in the invocation result.
This is the model all out-of-proc workers (Node, Java, Python, PowerShell and .NET) use, and some of its key limitations are:
The HTTP model supported by the .NET Isolated worker operates within those constraints, utilizing HTTP request and response representation types (
HttpRequestData
andHttpResposeData
) that expose APIs reflecting what the current HTTP model supports.We decided to take this approach, instead of providing implementations of
HttpRequest
andHttpResponse
on top of the existing ASP.NET model for two main reasons:Where we are headed: The new HTTP model
With the new HTTP model, the host will become an intermediary and and act as a reverse proxy, proxying the actual HTTP request to the worker for handling.
Workers supporting this new model will be enhanced to listen on an HTTP endpoint, in addition to the gRPC channel used for invocations, allowing them to maintain the existing support for input and output bindings, with the existing execution model, while exposing a parallel pipeline used for the HTTP request payload.
The following diagram illustrates, at a high level, the flow proposed with the new HTTP model:
With the flow above, the host will split the HTTP request and function invocation message, creating a correlation between the two. The HTTP request goes through the HTTP pipeline while the function invocation, with all associated input binding data and context, goes through the existing dispatching pipeline. Eventually, the pipelines merge, where the worker augments the
FunctionContext
with theHttpRequest
information coming from the HTTP pipeline and exposing that to the Function (both, in the context and/or in automatic parameter binding).With the new model, a simple HTTP triggered function would change from this:
To the following:
This model will also enable deeper integrations with web frameworks (e.g., ASP.NET), providing better control over the HTTP pipeline and enabling scenarios not currently supported in the in-proc experience, like the ability to register and manage ASP.NET middleware and better control over authentication/authorization.
Work items
This epic will be updated with references to the work items associated with the HTTP model enhancements, as those are defined.
Host Items
Host items can be found under this label.
Worker Items
Worker items will use the same label as this issue (feature:HTTP types).
The text was updated successfully, but these errors were encountered: