Symfony vs ASP.NET Core feature comparison

Intro

In the other post I have rapid tested 10 frameworks and settled on 2: Symfony and ASP.Net Core.

I will check the features of each and see how it compares to the other one. If documentation is not approachable to feature discovery I will probably not include it. I also won’t go into detailed features. Routing is a feature. Named routes is details. I will exclude the ones I am not interested in. Ok, let’s go.

Command line tool

Simfony

Symfony has excellent command line tool. I cannot even describe what it has. Check the docs. List of commands is so big that php bin/console list took like 10 seconds to list them all. Debug, Doctrine, mailer, generators you name it. +

Asp.net core

Command line tool is called dotnet. It’s more of a all around tool more than specifically designed for web development. We can install extra tools, but it’s not in your face like Symfony’s console and probably need to search for them, but who wants to do that? I am not paid to do it so I’d rather not.

Symfony 1 : Asp 0

Template engine

Symfony

It uses Twig. This is stringly template engine and don’t have much to say about it.

Asp

It uses Razor templates. It’s statically typed and allows to use C#. I like that. +

Symfony 1 : Asp 1

ORM

Symfony

Uses Doctrine ORM. Looks like lots of string to me. It is integrated into Symfony. I don’t know much about it. Bulk upsert didn’t provide obvious result in google search.

Asp

Uses Entity Framework Core. It’s not as integrated in framework, no automatic fetching. We can use LINQ for querying which is a killer feature. Bulk upsert provides obvious result. +

Symfony 1 : Asp 2

Forms

Symfony

Has full on forms component. I’ve heard that’s the biggest components and just the documentation for forms is bigger than the whole Laravel documentation. It can be reusable to use in many views. It has form events. +

Asp

No form component. There is automatic model binding via tag helpers.

Symfony 2: Asp 2

Errors/ Debugging

Symfony

Has nicer error pages. Debug toolbar. +

Asp

Ugly error pages. No debug toolbar

Symfony 3 : Asp 2

Mailer

Symfony

It has mailer component. It can use templates for email. +

Asp

GPT says there is not native mailer component. Tutorials are using MailKit.

Symfony 4 : Asp 2

Validation

Symfony

It has validation based on JSR303 Bean Validation specification. Lot of validation, even for Doctrine. It has more validation constraints than Asp out of the box. +

Asp

Also has validation. Less constraints than Symfony. People use library FluentValidation. It has remote validation. Action parameters validation. +

Symfony 5 : Asp 3

Messaging

Symfony

It has messenger component +

Asp

Doesn’t have

Symfony 6 : Asp 3

Scheduling

Symfony

It has scheduler +

Asp

Doesn’t have scheduler. Use Hangfire or Quarts.NET

Symfony 7 : Asp 3

Notifications

Symfony

Notifications +

Asp

No

Symfony 8 : Asp 3

Storage

Symfony

No -

Asp

No -

If you don’t have something essential like managing file uploads you both deserve a minus Symfony 6 : Asp 2

Documentation and Learning Resources

Symfony

Start page. Documentation Book Symfonycast Everything is designed to lead to to the learning path. Me personally documentation, I’ve enjoyed the most. +

Asp

Start Page Documentation. This documentation is for Asp.Net Core MVC. General documentation for Asp.Net Core is here. It’s mixed with Razor Pages, Blazor etc. And then there is general part which applies to all of Asp.Net Core. This is the Microsoft Learning Centre. After some clicking we can find Asp.Net Core Learning Path. It’s obvious Microsoft has a lot of products and Asp.Net Core is not their sole focus. It’s .NET framework and then whatever they build on top of it.

Symfony 7 : Asp 3

Final word

Symfony seems much more oriented around web development. Asp.Net Core is more of a web development addition to the .NET framework. It gives great foundation to build everything you need, but you have to build it. As a hobby developer I’d rather have ready made solutions even if they are opinionated, although for long term project non opinionated might be good. Symfony seems flexible enough, on the first look, to provide opinionated start and enough flexibility to change things down the road.

Asp.Net Core does have another framework built on top of it called ABP Framework which I tried to use, but it couldn’t create a project or I didn’t know how. It seems very opinionated and definitely oriented towards big serious companies. I am not the one, at the moment.

Symfony it is.