4 ms·
Lots of good points, but one thing still keeps me off this particular train: .NET does not (yet?) have the same level of availability of high quality free libr
by matrix 9y ago
Lots of good points, but one thing still keeps me off this particular train:
.NET does not (yet?) have the same level of availability of high quality free libraries that other major platforms do. Things like image processing, database DSLs, etc. I think this is in part because Microsoft provides such a comprehensive stack that it kind of discourages the kind of diversity that leads to the proliferation of libraries.
- maxxxxx 9y agoI love C# but I would start new projects on Java exactly for that reason. As soon as you need something special it's most likely available on Java but often not on C#.
- Retric 9y agoThere are a lot of ways outside of the C# sandbox so you can always just call Java code if you need it.
- maxxxxx 9y agoHow?
- Retric 9y agoCall a Web service, call a console application, read/save a file to disk, use a database, SOAP, etc etc.
- maxxxxx 9y agoSure. Not sure if it's worth going through that effort though. Especially if you need a tight integration with the Java library.
- Retric 9y agoYea, if you need to heavily leverage library X then use whatever it's written for. However, if you simply need a way to generate a few simple PDF's or something then that's a different story. Personally, I prefer to use the most productive language for a project I can get away with because the largest risk is you are simply never going to finish it.
- manigandham 9y agoJNI bindings work and allow C#/.NET to call into Java libraries without a problem. It's a standardized interface for Java interop, a good example is how Apache Ignite runs in the .NET version which launches a JVM process and communicates with it from the CLR.
- justboxing 9y ago> As soon as you need something special it's most likely available on Java but often not on C# Like what? Care to elaborate?
- maxxxxx 9y agoI did a project where full text search was the main feature. At that time Lucene was the number one project for that. There was a C# version but totally outdated. It was a really difficult situation with no good choices: Port the Java code myself? Wrap in into some kind of server? Move to Java? My conclusion was that next time I'd be better off learning Java. C# seems better but there is a lot of cool stuff written in Java so it's probably not that bad. When I look at machine learning and AI it seems Python and Java also are the best options with everything else way behind.
- dep_b 9y agoSQL server has that, I think it was even the vanilla free version. And it was fast. Going from 10 second queries to instant again. Can't tell you how it compares to Lucene.
- maxxxxx 9y agoMy project was a little more involved than what SQL Server functionality provides. For most use cases SQL Server full text or SOLR would be sufficient but this was very researchy with writing custom analyzers and scorers (not sure if I get the terminology still right).
- justboxing 9y ago> At that time Lucene was the number one project for that Ha. I remember this. My co-worker was trying to do the same in .Net, but while he was looking the Lucene port to .net was well underway, so you were probably 6 months to a year ahead of him. I guess all I can say is that you are a pioneer. Most of the special things in Java eventually get ported to .Net.
- steferson 9y agoExcellent point, I have developed in asp.net mvc for quite a while, but I am currently doing a asp.net core project, and it is a nightmare, there is absolutely nothing but the most basic libraries ported to core, even entity framework itself doesn't have lazy loading yet, which is the most basic feature anyone would want from ef. My current dragon to slay is doing things with pdfs and reporting on asp.net core, there is nothing truly open source.
- manigandham 9y agoThe Full .NET Framework are fully supported and not going anywhere, why don't you just continue using them? Do you need a cross-platform runtime?
- steferson 9y agoWe tried actually, but the oddest thing happened to us, we could not connect to our database that way. I even created a brand new .net core app and changed to target 4.7 as soon as the change is made we lose connection to database
- scarface74 9y agoVS 2017 has a template that lets you create a ASP.Net Core project using the .Net 4.6 Framework. You get all of the goodness of .Net Core Asp.Net and the compatibility of .Net 4.6
- rightos 9y agoTheir NuGet ecosystem is extremely rich. For example, see https://www.nuget.org/packages?q=image+processing https://www.nuget.org/packages?q=image+processing My experience is that LINQ pretty much beats every other way of interacting with a database I've ever seen. Core is likely a more restrictive right now - EF Core for example is still in a very weak state, but things are improving and in a few versions I fully expect it to be a solid product.
- jrs95 9y agoEntity Framework is a pretty fantastic ORM. The only thing that's ever come close for me is SQLAlchemy.
- rightos 9y agoEF6, yes, it really is the best thing going. But EF Core right now has some major issues with lazy loading and not supporting group by on the DB-side last I checked. I believe those are both scheduled to be fixed.
- jrs95 9y agoYeah, I wasn't referring to Core -- last time I checked, it wasn't quite there yet. I don't think it ought to be much longer, though.
- ajryan 9y agoLINQ to SQL is pretty poor in my opinion, plus it's no longer maintained and bugs aren't fixed[0]. [0]: http://www.aidanjryan.com/blog/2012/08/25/sqlmetal-bug-with-multi-rowset-stored-procedures/ http://www.aidanjryan.com/blog/2012/08/25/sqlmetal-bug-with-...
- barake 9y agoEntity Framework replaced LINQ to SQL years ago - it’s had multiple major revisions, and two major revs of the .NET Core version. The initial version in 2008 was a total mess. It wasn’t until a few years later that the XML definition and code generation junk was removed and it became useable.
- manigandham 9y agoThere are many high-quality libraries that can do pretty much everything you need. Is there a specific example of something you're missing? Also you're right that the standard framework libraries are very comprehensive, which in fact lessens the need for 3rd party dependencies in the first place. Stuff like LINQ and await/async is incredibly productive and unmatched elsewhere. Why rely on various outside libraries when you already have what you need?
- ajryan 9y agoWhen was the last time you checked out the open-source lib situation in .NET? I haven't had an issue with this in a long time (check out https://www.nuget.org https://www.nuget.org). On your second point, isn't that a good thing?
- MrDosu 9y agoI would argue quite the opposite. .NET has the most comprehensive set of high quality paid libraries i have worked with so far. Yes they can be expensive, but you get long term support and professional documentation. For a commercial product this is worth a lot.