6 ms·
Dotnet and java usually have similar libraries for most things, but sometimes it comes down to how different they are or what they support. Let's look at gener
by banashark 3y ago
Dotnet and java usually have similar libraries for most things, but sometimes it comes down to how different they are or what they support.
Let's look at general distributed messaging abstractions.
The most modern-featureful one for dotnet I know of is MassTransit: https://masstransit.io/documentation/concepts https://masstransit.io/documentation/concepts. You can see it supports a handful of queues and some interesting patterns.
Compare this to the list of features in Apache Camel: https://camel.apache.org/components/4.4.x/eips/enterprise-integration-patterns.html https://camel.apache.org/components/4.4.x/eips/enterprise-in...
Additionally, the _support_ of the libraries for common open-source (and closed-source infra) is usually vastly different:
- https://pulsar.apache.org/client-feature-matrix/ https://pulsar.apache.org/client-feature-matrix/
- Small features being first party like https://github.com/awslabs/amazon-sqs-java-extended-client-lib https://github.com/awslabs/amazon-sqs-java-extended-client-l... vs https://github.com/raol/amazon-sqs-net-extended-client-lib https://github.com/raol/amazon-sqs-net-extended-client-lib
- Missing features or those that lag behind: https://github.com/confluentinc/confluent-kafka-dotnet/issues?q=is%3Aopen+is%3Aissue+label%3Aenhancement https://github.com/confluentinc/confluent-kafka-dotnet/issue...
- Usually manually wired and configured vs the spring boot "starter" pattern of having libraries that automatically do some of the manual setup work for you: https://github.com/spring-projects/spring-boot/blob/main/spring-boot-project/spring-boot-starters/README.adoc https://github.com/spring-projects/spring-boot/blob/main/spr...
I wish more client library sets had the feature-matrix that the pulsar one does, because in practice most end up being the same: Java supports everything because it's either built in the same codebase or is the most used client and gets the most support, while the dotnet client codebase has many feature-requests or performance improvement issues, often leading to a "third-party client" being created.
- neonsunset 3y agoIsn't not having perfect support with Apache is, in a way, a criticism of any non-JVM language? Perhaps the problem is on the other end? We need a couple more Apache Struts and Log4J incidents for the public to realize there may be better technologies and ecosystems. Spring is very slow anyways. As for Pulsar, there is a nice and optimized client (written in F#!) https://github.com/fsprojects/pulsar-client-dotnet https://github.com/fsprojects/pulsar-client-dotnet
- pjmlp 3y agoWhich .NET Foundation was supposed to solve, yet we observe more and more FOSS projects not happy with it, and moving away from it. Avalonia being the most recent example.
- neonsunset 3y agoHow does that relate to Apache projects being somewhere between Java-centric and Java-exclusive depending on the feature? If anything, we need more decentralization, there are awesome products like NATS that offer rich and well-written client libraries in multitude of languages. More of that.
- pjmlp 3y agoOracle, IBM, Sun on its days, didn't set the tune of the music at Apache, as apparently Microsoft does at .NET Foundation, as per complaints of the projects that decided to withdraw from the Foundation.