Probably the first thing to be remarked when coming from any environment to .net is going to be the tightly integrated tooling.
When I used to do PHP in the late 90s early 00s, it was pretty much whatever text editor I could get my hands on. There were some non-free IDEs, but none that were easily obtained or as impressive as Visual Studio, which also wasn't free until around 2006.
Despite the differences though, Visual Studio has always been first class. When the same people making the languages are also making the tools, you can expect a lot of extra convenience. One thing that's kept my interest is that despite the tight coupling, most everything is still quite generalized, unlike 4GL environments like Delphi.
Contrast .net with PHP where all you get the language and are responsible for building your stack upwards from there. Not that our favourite friends LAMP and LEPP aren't just as mature. Things like PHPstorm have come along to give that first class feeling but it hasn't always been that way and not everyone in the PHP ecosystem affords themselves these conveniences.
So, that's the obvious tooling stuff out of the way. The next thing that I think I notice right away is the state of the basic ASP.net MVC 5 project structure and APIs. I know that ASP.net Core is coming and I'm excitedly staying up to date on everything to do with it. But when I look at the still current gen scenarios, it's obvious to me what prompted the changes.
Something they've got in Visual Studio that not everyone would necessarily have expected to see is fully integrated support for node package dependencies, gulpfiles and other equivalents. With Task Runner Explorer, you can even have Visual Studio hook certain build and project events all without having to get involved with MSBuild. This is a great way to introduce Microsoft developers to the sometimes bewildering but all the same amazing universe of npm and static front end build flows.
That brings me to some of the standards of expectations that .net and Java developers have compared to PHP and other FOSS languages. There are a lot of things about how front-end concerns are handled in .net projects that feel very circa 2010. I think this is one space where even despite not being a front end developer, I can see that the FOSS ecosystems are considerably more advanced. This is something I find odd because .net developers wrangle with some extremely complex designs sometimes and yet tooling outside of what ships with defaults is rarely explored!
Another thing - which thanks to Roslyn is changing - is how you have to compile your project prior to being able to run it. Out of everything, I'd say this has added a measurable amount of time to my development flow. It makes sense obviously, but it's just so foreign to have to explicitly tell my tooling to build my web site before I can go to the browser and refresh the page, or re-trigger the XHR. Looking forward to ASP.net Core which in so many ways will close the gap there.
Next up worth covering is the tight integration with the web serving environment IIS and database, SQL server. By default everything comes ready to run with both. You're always a quick configuration change away from telling your application to run in IIS. I also really like how there's a first-class IDE specifically made for SQL server.
Last but not least, it has to be said: Strong typing, generics, a proper collections library and LINQ. If I had to make a list of absolutely essential functionality in a language, these would rate quite high. I'd say if there's anything that's got me just loving the environment, it's these.
Anyway, that's it for this lighthearted entry. Like all my posts in this series, if something really interesting comes up, I'll come back and edit it into this post. At least up until a certain point!
When I used to do PHP in the late 90s early 00s, it was pretty much whatever text editor I could get my hands on. There were some non-free IDEs, but none that were easily obtained or as impressive as Visual Studio, which also wasn't free until around 2006.
Despite the differences though, Visual Studio has always been first class. When the same people making the languages are also making the tools, you can expect a lot of extra convenience. One thing that's kept my interest is that despite the tight coupling, most everything is still quite generalized, unlike 4GL environments like Delphi.
Contrast .net with PHP where all you get the language and are responsible for building your stack upwards from there. Not that our favourite friends LAMP and LEPP aren't just as mature. Things like PHPstorm have come along to give that first class feeling but it hasn't always been that way and not everyone in the PHP ecosystem affords themselves these conveniences.
So, that's the obvious tooling stuff out of the way. The next thing that I think I notice right away is the state of the basic ASP.net MVC 5 project structure and APIs. I know that ASP.net Core is coming and I'm excitedly staying up to date on everything to do with it. But when I look at the still current gen scenarios, it's obvious to me what prompted the changes.
Something they've got in Visual Studio that not everyone would necessarily have expected to see is fully integrated support for node package dependencies, gulpfiles and other equivalents. With Task Runner Explorer, you can even have Visual Studio hook certain build and project events all without having to get involved with MSBuild. This is a great way to introduce Microsoft developers to the sometimes bewildering but all the same amazing universe of npm and static front end build flows.
That brings me to some of the standards of expectations that .net and Java developers have compared to PHP and other FOSS languages. There are a lot of things about how front-end concerns are handled in .net projects that feel very circa 2010. I think this is one space where even despite not being a front end developer, I can see that the FOSS ecosystems are considerably more advanced. This is something I find odd because .net developers wrangle with some extremely complex designs sometimes and yet tooling outside of what ships with defaults is rarely explored!
Another thing - which thanks to Roslyn is changing - is how you have to compile your project prior to being able to run it. Out of everything, I'd say this has added a measurable amount of time to my development flow. It makes sense obviously, but it's just so foreign to have to explicitly tell my tooling to build my web site before I can go to the browser and refresh the page, or re-trigger the XHR. Looking forward to ASP.net Core which in so many ways will close the gap there.
Next up worth covering is the tight integration with the web serving environment IIS and database, SQL server. By default everything comes ready to run with both. You're always a quick configuration change away from telling your application to run in IIS. I also really like how there's a first-class IDE specifically made for SQL server.
Last but not least, it has to be said: Strong typing, generics, a proper collections library and LINQ. If I had to make a list of absolutely essential functionality in a language, these would rate quite high. I'd say if there's anything that's got me just loving the environment, it's these.
Anyway, that's it for this lighthearted entry. Like all my posts in this series, if something really interesting comes up, I'll come back and edit it into this post. At least up until a certain point!
Comments
Post a Comment