Replies: 1 comment 7 replies
-
Dapr is a abstraction layer that promises to abstract your application's sdk dependencies using their sidecar. When using the dapr integration with aspire, aspire plays the role of coordinator and configurator (is that a word?), booting up side cars, hooking up dapr sidecar's telemetry and connecting dapr components to aspire resources (db, redis, etc), and configuring dapr deployments on ACA. Aspire client integrations are not abstractions, they are glue, they let application code talk directly to the underlying service/db/cache etc. In that sense, the approaches are intentionally different and users can choose based on what kinds of tradeoffs they want to make in their applications.
I'm not sure what you're asking. Aspire uses client libraries that .NET developers use today. Want to use postgres + EF, look at the integration docs for it https://learn.microsoft.com/en-us/dotnet/aspire/database/postgresql-entity-framework-integration?tabs=dotnet-cli.
We're talking to the Dapr .NET client maintainers to consider including the aspire integration in their scope, so that it can evolve side by side with the Dapr .NET client. These discussions are still fresh, so there's no conclusion yet. That said there's no plan to make it more first class than it is right now. Dapr will remain an optional integration that aspire users can choose to use. That said, I do believe that the dapr integration could use a lot more love with respect to dapr components wiring up to aspire resources. There could even be dapr + aspire templates that shipped as part of that integration experience. The core aspire team does not plan to build this though. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
My understanding right now is that while Aspire helps with setting up dapr sidecars, after that point, it ultimately treats dapr like an orthogonal concern.
This has been enough to let me get up and running locally and to start playing around with both. But, I end up with confusion or concerns around what the longer term implications of having both in a single project are.
Aspire and dapr both have opinions on things like service to service invocation/resolution, observability, and likely more that I'm just not fully mindful of yet.
When I configure my
Program.cs
, I'm going between two different sets of getting started guides. The first is for Aspire, which revolves mainly aroundServiceDefaults
. The second is from dapr, which is telling me to either configure their extensions on top of standard MS abstractions, or bind theirApiClient
and target it from all my code.Neither of these are necessarily problems in and of themselves, both are offering amazing functionality. But say I'm making a CLI utility for my project and it needs to both connect to my database and interact with dapr state stores. Once I've configured all the various application bootstraps for both Aspire and dapr in its
Program.cs
, what do I even type into the console to start that app? 😅I know what dapr is going to want -- it's going to want a sidecar to wrap the program. But for Aspire, what would I be on the hook for to ensure that the database resource is fed in correctly?
Are there any thoughts around possibly elevating dapr to something more fist class in Aspires own DSL so that once dapr is enabled, Aspire prefers dapr for the things they have in common?
(@davidfowl, forgive the ping, but I'm curious to hear how you and the rest of the team are thinking about these things and how they could be simplified from a dev experience perspective.)
Beta Was this translation helpful? Give feedback.
All reactions