Need advice about which tool to choose?Ask the StackShare community!
.NET vs Scala: What are the differences?
What is .NET? A free, cross-platform, open source developer platform for building many different types of applications. .NET is a general purpose development platform. With .NET, you can use multiple languages, editors, and libraries to build native applications for web, mobile, desktop, gaming, and IoT for Windows, macOS, Linux, Android, and more.
What is Scala? A pure-bred object-oriented language that runs on the JVM. Scala is an acronym for “Scalable Language”. This means that Scala grows with you. You can play with it by typing one-line expressions and observing the results. But you can also rely on it for large mission critical systems, as many companies, including Twitter, LinkedIn, or Intel do. To some, Scala feels like a scripting language. Its syntax is concise and low ceremony; its types get out of the way because the compiler can infer them.
.NET belongs to "Frameworks (Full Stack)" category of the tech stack, while Scala can be primarily classified under "Languages".
"Tight integration with visual studio", "Stable code" and "Great community" are the key factors why developers consider .NET; whereas "Static typing", "Jvm" and "Pattern-matching" are the primary reasons why Scala is favored.
.NET and Scala are both open source tools. Scala with 11.8K GitHub stars and 2.75K forks on GitHub appears to be more popular than .NET with 11.2K GitHub stars and 2.41K GitHub forks.
According to the StackShare community, .NET has a broader approval, being mentioned in 1566 company stacks & 239 developers stacks; compared to Scala, which is listed in 437 company stacks and 324 developer stacks.
I have to write an application for a Windows Server that either runs on a scheduled task or can run on a Windows server and triggered by a webhook. What other .NET project types or methods within a project can I do this with?
I know I could probably host an API on IIS on the Windows server and do it that way, but all my APIs are in Azure App service, and this has to integrate with the Windows desktop application.
What you mean integrate on "all my APIs are in Azure App service and this has to integrate with Windows desktop application.". Try to explain a little bit what's your requirements.
If you want to Read/Write a SQL DB on premises, you can use a Azure Gateway without deploy anything in your server, another choice with SQL Server is to move the DB to Azure (if supported). You can use the triggers on Azure Functions to write/read something on Azure Storage, from your Server you can read the storage and perform some tasks. As you can see there are multiple choice without writing much code on premises, try to clarify your requirements.
It all depends on your use case. You mentioning "scheduled task" appears you want to use a Worker Service
If you want to trigger your actions you can host a webapi, too.
Bottomline: Both use cases suffice your needs so your course depends on where you want to "control" your app ( set delay, maybe sometimes start the action manually ). WorkerService -> Config file on the host Api -> Configure from client
Finding the best server-side tool for building a personal information organizer that focuses on performance, simplicity, and scalability.
performance and scalability get a prototype going fast by keeping codebase simple find hosting that is affordable and scales well (Java/Scala-based ones might not be affordable)
I've picked Node.js here but honestly it's a toss up between that and Go around this. It really depends on your background and skillset around "get something going fast" for one of these languages. Based on not knowing that I've suggested Node because it can be easier to prototype quickly and built right is performant enough. The scaffolding provided around Node.js services (Koa, Restify, NestJS) means you can get up and running pretty easily. It's important to note that the tooling surrounding this is good also, such as tracing, metrics et al (important when you're building production ready services).
You'll get more scalability and perf from go, but balancing them out I would say that you'll get pretty far with a well built Node.JS service (our entire site with over 1.5k requests/m scales easily and holds it's own with 4 pods in production.
Without knowing the scale you are building for and the systems you are using around it it's hard to say for certain this is the right route.
I was considering focusing on learning RoR and looking for a work that uses those techs.
After some investigation, I decided to stay with C# .NET:
It is more requested on job positions (7 to 1 in my personal searches average).
It's been around for longer.
it has better documentation and community.
One of Ruby advantages (its amazing community gems, that allows to quickly build parts of your systems by merely putting together third party components) gets quite complicated to use and maintain in huge applications, where building and reusing your own components may become a better approach.
Rail's front end support is starting to waver.
C# .NET code is far easier to understand, debug and maintain. Although certainly not easier to learn from scratch.
Though Rails has an excellent programming speed, C# tends to get the upper hand in long term projects.
I would avise to stick to rails when building small projects, and switching to C# for more long term ones.
Opinions are welcome!
Decided to change all my stack to microsoft technologies for they behave just great together. It is very easy to set up and deploy projects using visual studio and azure. Visual studio is also an amazing IDE, if not the best, when used for C#, it allows you to work in every aspect of your software.
Visual studio templates for ASP.NET MVC are the best I've found compared to django, rails, laravel, and others.
We needed to incorporate Big Data Framework for data stream analysis, specifically Apache Spark / Apache Storm. The three options of languages were most suitable for the job - Python, Java, Scala.
The winner was Python for the top of the class, high-performance data analysis libraries (NumPy, Pandas) written in C, quick learning curve, quick prototyping allowance, and a great connection with other future tools for machine learning as Tensorflow.
The whole code was shorter & more readable which made it easier to develop and maintain.
Pros of .NET
- Tight integration with visual studio271
- Stable code261
- Great community188
- Reliable and strongly typed server side language.181
- Microsoft140
- Fantastic documentation119
- Great 3rd party libraries89
- Speedy79
- Great azure integration71
- Great support63
- Highly productive33
- C#33
- Linq33
- High Performance30
- Great programming languages (C#, VB)28
- Open source24
- Powerful Web application framework (ASP.NET MVC)19
- Clean markup with razor16
- Fast16
- Powerful ORM (EntityFramework)15
- Dependency injection13
- Constantly improving to keep up with new trends10
- Visual studio + Resharper = <310
- High-Performance9
- TFS8
- Security8
- Job opportunities7
- Integrated and Reliable7
- Huge ecosystem and communities7
- Lovely6
- Light-weight6
- Asynchrony5
- Variations5
- {get; set;}5
- Scaffolding4
- Useful IoC4
- Concurrent4
- Entity framework4
- Support and SImplicity4
- Default Debuging tools4
- Blazor3
- F♯2
- F#2
- Nuget package manager2
Pros of Scala
- Static typing186
- Pattern-matching179
- Jvm177
- Scala is fun172
- Types138
- Concurrency95
- Actor library88
- Solve functional problems86
- Open source83
- Solve concurrency in a safer way80
- Functional44
- Fast24
- Generics23
- It makes me a better engineer18
- Syntactic sugar17
- Scalable13
- First-class functions10
- Type safety10
- Interactive REPL9
- Expressive8
- SBT7
- Implicit parameters6
- Case classes6
- Used by Twitter4
- JVM, OOP and Functional programming, and static typing4
- Rapid and Safe Development using Functional Programming4
- Object-oriented4
- Functional Proframming3
- Spark2
- Beautiful Code2
- Safety2
- Growing Community2
- DSL1
- Rich Static Types System and great Concurrency support1
- Naturally enforce high code quality1
- Akka Streams1
- Akka1
- Reactive Streams1
- Easy embedded DSLs1
- Mill build tool1
- Freedom to choose the right tools for a job0
Sign up to add or upvote prosMake informed product decisions
Cons of .NET
- C#13
- Too expensive to deploy and maintain11
- Microsoft dependable systems7
- Microsoft itself7
- Hard learning curve5
- Tight integration with visual studio3
- Not have a full fledged visual studio for linux2
Cons of Scala
- Slow compilation time11
- Multiple ropes and styles to hang your self7
- Too few developers available6
- Complicated subtyping4
- My coworkers using scala are racist against other stuff2