florimondmanca / awesome-asgi

A curated list of awesome ASGI servers, frameworks, apps, libraries, and other resources
Creative Commons Zero v1.0 Universal
1.57k stars 98 forks source link

more frameworks and other stuff #82

Closed euri10 closed 2 years ago

euri10 commented 2 years ago

hi @florimondmanca , please find some stuff I came by when looking at the environnement for a new project. If I'm not making a mistake I didnt see them here yet:

frameworks: https://github.com/abersheeran/baize https://github.com/starlite-api/starlite https://github.com/adriangb/xpresso

di systems, not purely asgi related but those have integration with frameworks so worth mentionning imho: https://github.com/meadsteve/lagom https://github.com/adriangb/di

some goodies I'm using all the time, not sure where it fits in your classification: https://github.com/alex-oleshkevich/starsessions https://github.com/alex-oleshkevich/starception

florimondmanca commented 2 years ago

Thanks a lot @euri10!

I came across Xpresso just when the project began, happy to see it’s gained some attention.

Starlite looks so interesting. I’ve been using FastAPI on a project mainly for its auto Swagger features, but I noted several pitfalls which Starlite seems to address. I like the inspiration taken from NestJS controllers, which remind me of Django CBVs. Still sad the DI system is so integrated into the framework, contrary to Xpresso which keeps it usable outside the scope of an app - this is a strong requirement when adopting architecture patterns such as Clean Architecture that decouple the domain level (core business logic where stuff actually happens) from “infrastructure” level (eg exposing this logic via an API). There may be dependencies you need solely at the domain level and shouldn’t really access at higher levels.

I was a bit less convinced by Baizé. The use of Mypyc is interesting, but the overall approach seems similar to Starlette eventually. Back when I was working on Bocadillo I took a lot of inspiration and I learned a lot which was fine, but one thing that made me decide to stop the project was to realize it didn’t really add much compared to existing and more long-lived frameworks (Starlette and FastAPI at the time), though it did have the spirit of DI which I find now in Xpresso in a cleaner version.

I don’t really know about listing DI libraries here. As you said they’re more generic tools, and there’s a variety of them which would make it hard to be fair and not be tempted to include other libraries if we start with only a subset. Eg I’ve been using Punq which I like for its super simple and explicit approach — should that be listed here? I don’t really know.

Those two goodies look nice and focused.

Should we consider Starlite, Xpresso, starsessions and starception?

euri10 commented 2 years ago

Starlite looks so interesting. I’ve been using FastAPI on a project mainly for its auto Swagger features, but I noted several pitfalls which Starlite seems to address.

agreed with everything here, plus it seems way more active in the development which is always a plus

There may be dependencies you need solely at the domain level and shouldn’t really access at higher levels.

exactly why I was trying to find DI dependencies uncoupled from frameworks, not sure it answers definitely if yes/no it should be mentionned here but I guess that's partly a reason I think it could be, mostly because they're uncoupled but offer an easy integration, but you're right this is the beginning of some kind of rabbit hole.

Should we consider Starlite, Xpresso, starsessions and starception?

all your choice, this is your repo, it was just some suggestions, I see there is already a starlite PR (https://github.com/florimondmanca/awesome-asgi/pull/80) I should have checked before

florimondmanca commented 2 years ago

Ah thanks. There are conflicts on #68 which I can’t resolve right now as I’m on the go. I’d be happy to review PRs though!

I think there’s definitely some insights to share with the community on the concepts of clean architecture, with treating the framework as just a means of providing a web port onto a core domain implementation, all of which holds together thanks to an agnostic DI library. But maybe that should be blog post material instead of being featured in ASGI resource lists…

Le samedi 24 septembre 2022 à 09:50, euri10 @.***> a écrit :

Starlite looks so interesting. I’ve been using FastAPI on a project mainly for its auto Swagger features, but I noted several pitfalls which Starlite seems to address.

agreed with everything here, plus it seems way more active in the development which is always a plus

There may be dependencies you need solely at the domain level and shouldn’t really access at higher levels.

exactly why I was trying to find DI dependencies uncoupled from frameworks, not sure it answers definitely if yes/no it should be mentionned here but I guess that's partly a reason I think it could be, mostly because they're uncoupled but offer an easy integration, but you're right this is the beginning of some kind of rabbit hole.

Should we consider Starlite, Xpresso, starsessions and starception?

all your choice, this is your repo, it was just some suggestions, I see there is already a starlite PR (#80) I should have checked before

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

adriangb commented 2 years ago

Florimond at some point I need to pick your brain a bit more about what features you find interesting in a web framework 😄, I'm getting the itch to take Xpresso in some interesting direction but I'm not sure which one.

I have a couple experimental ASGI middlewares that are interesting at least from an academic standpoint/understanding how ASGI works. Should I make a PR to add them? Under what section?

euri10 commented 2 years ago

ok I added a PR for the 2 nice middleware I'm using, I let @adriangb do it for his framework and middlewares !!