When ValueTask makes a big difference - DataStreamer in Ignite 3
ValueTask
may seem like a micro-optimization, but it is very important on hot paths, and easy to miss. Last week I’ve learned this the hard way.
Tech blog
ValueTask
may seem like a micro-optimization, but it is very important on hot paths, and easy to miss. Last week I’ve learned this the hard way.
Let’s say we want to convert int
to short
with a bounds check. Is there a difference between checked((short)x)
and Convert.ToInt16(x)
?
Dynamically building database queries can be necessary for some use cases, such as UI-defined filtering. This can get challenging with LINQ frameworks like EF Core and Ignite.NET.
.NET 7 introduces AOT (finally!), which allows easy interop with any language on any OS. To demonstrate the possibilities, let’s bring some Ignite APIs to Rust!
Apache Ignite 2.14 has been released. .NET updates include Service Interceptors and Thin Client Data Structures.
The recording of my DotNext 2022 Spring talk is now available.
Apache Ignite 2.13 has been released. Calcite-based SQL engine is the highlight of the release, but we are here to talk about .NET side of things, where thin client got some more improvements: retry policy, heartbeat messages, and more.
Apache Ignite Community Gathering virtual meetup happened yesterday. I was one of the speakers and talked about thin clients and .NET things in those releases.
Apache Ignite 3.0 alpha 3 has been released last week. This release introduces .NET and Java thin clients for the first time in 3.0. Let’s see how to get started with .NET thin client.
Apache Ignite 2.11 has been released. On .NET side there are new examples, thin client DataStreamer, .NET 5 support, and more.
I was honored to speak at DotNext conference this year, and the recording is now available.
Apache Ignite “thick” API provides a number of Distributed Data Structures, such as Queues and Atomics. Those APIs are not yet available in thin clients, but we can easily implement them on top of the Cache API.
Apache Ignite 2.10 has been released. Let’s see what’s new on .NET side of things.
.NET 5 was released on November 10. Preliminary testing shows that Ignite.NET works as expected with the new SDK and all tests pass, except single-file deployment on Linux (see below). Official support for .NET 5 is coming in Ignite 2.10.
Apache Ignite 2.9 has been released a few days ago. Let’s have a look at .NET-specific features and improvements.
Ignite.NET runs in-process JVM (in thick mode) and interacts with it using JNI. Since version 2.4, when Ignite.NET became cross-platform, we had a stealthy and mysterious bug: JVM thread count kept growing, consuming memory, even though actual OS thread count for the process was low.
Thin Client improvements, better cross-platform support, and more!
C# 8.0 introduces Asynchronous Streams, which combine lazy enumeration and async
/await
. The most obvious use case here are database queries, where every individual record is pulled asynchronously from a remote server. This applies to Apache Ignite too - SQL and Scan query APIs can be updated with async versions. This requires Ignite code modification and we can expect those things in future versions. However, there is one more query type that we can convert to async version right now - Continuous Query.
Cross-platform .NET is all the rage now. You can do console apps in C# and F#, web with ASP.NET Core, mobile with Xamarin. But can you do desktop UI apps?
Along with unit testing, continuous integration, and code review, static code analysis is invaluable for maintaining healthy code base.
Apache Ignite 2.1 has been released last week, introducing Ignite Persistent Store! Another huge step forward for the project: it becomes a complete database with unique feature set, check out the comparison table on ignite.apache.org frontpage. As usual, we’ll have a look at new features from .NET standpoint.
Apache Ignite.NET 2.0 introduced plugin system. Plugins can be .NET-only or .NET + Java. Let’s see how to implement the latter.
Implementing efficient Ignite.NET persistent store with ADO.NET and SQL Server: continue the story from Entity Framework Cache Store.
Apache Ignite 2.0 has been released last week. Changes on Java side are tremendous, but Ignite.NET has some cool things to offer as well.
Like most GitHub Pages websites, this one uses Jekyll to generate HTML content from Markdown files.
Ignite.NET offers a LINQ provider which translates C# expressions to SQL queries. LINQ has many benefits over SQL, but at what cost?
Apache Ignite 1.9 has been released last week. Let’s see what is new in the .NET part.
Apache Ignite 1.8 has been released yesterday. Let’s see what is new in the .NET part.
Implement Ignite.NET persistent store with Entity Framework and SQL Server.
How fast are different Ignite serialization modes? How do they compare to other popular serializers?
Speed up your ASP.NET web farm with a Apache Ignite distributed caching.
Ignite cluster can consist of nodes on any supported platform: Java, .NET and C++. Let’s see how to run .NET/Java cluster with NuGet and Maven.
LINQPad is a must-have tool for every .NET developer, and it is a great way to explore and try Ignite.NET APIs.
Apache Ignite 1.7 has been released last week. Let’s see what is new in the .NET part.
This part covers cache queries: Scan, SQL, LINQ, and Text.
This part covers basic cache operations and user object serialization.
This post opens a blog series about Apache Ignite.NET, distributed in-memory platform.