[As community content, this post reflects the views and opinions of the particular author and does not necessarily reflect the official stance of Neo4j.]
Today is a great day for .NET developers who use Neo4j: The Neo4jClient is back in action!The Past
For those in the know – the main .NET client for Neo4j is Neo4jClient. It was developed by Tatham Oddie for the last few years and had reached a nice stable point. But recently, Tatham has had to take a more off-hand role – something called ‘LIFE’ has happened 🙂 – so I, Chris, (Hello!) have taken over the management of the Neo4jClient.The Now
The last Neo4jClient version prior to my taking over was 1.0.0.665 – which was stable and included a large amount of Cypher functionality, but was crucially missing Transaction support. As luck would have it the Transaction code (written by Arturo Sevilla) was sitting in a pull request. The first release since the 1.0.x releases was renumbered to 1.1.0.1, inside this – we had a bumper crop of additions.- Transaction support
- Use within a
TransactionScope
- Auth support
- You no longer need to use a custom HttpClientWrapper to do more complex operations; you can now pass in the details in the constructor.
- CollectAs updates
- No longer returning
Node
but just> IEnumerable
- Ability to specifiy the Parser Version as free text (rather than just as a version number)
- Put the full Query Text (Debug) into the OperationCompletedEventArgs
- OperationCompleted is now raised whenever an operation completes – including when an exception occurs.
- Any custom JsonSerializers are now passed properly in the Transactions
The Future
Pull requests are always checked out, and I’m working my way through them, at the moment there are two outstanding, but as one of those isn’t complete yet, there’s only one, and I’m waiting for feedback on it. In terms of an official roadmap, my general plan is to keep it in sync with Cypher, and look at how to fit the Bolt (the new Neo4j binary protocol) serializer into it, which I think will be no small task, but I’m certain we can get there. Ideally, I want people to connect as now, and say they want to useBolt
instead of REST
and have no code changes with regards to the Cypher
parts.
There are other things I’m hoping to bring in too. I’d like to get some good LINQ integration to give a similar footing to other databases (notably SQL Server via Entity Framework). It’d also be great to get more integration (better?!) with PowerShell, to allow the Windows world to interact with Neo4j in the way it’s used to.
Your Feedback
It’s great to getNeo4jClient
back on it’s feet and running again, and it’d be even greater to get feedback from you – the users – in terms of the current features, or even better new features. The more feedback, the better – good and bad – it all helps to get the client to be where it needs to be.
If you want to collaborate – just go for it! If you’ve got an idea but you don’t want to work on it unless you’re sure it’ll be considered, or you just want to ask a question – add it as an issue to the GitHub page or feel free to email/tweet me and I’ll help in any way I can.
To that end, I’d also like to have a good look at the whole environment for .NET development against Neo4j:
- How have you found it on Windows Azure?
- Does the Neo4jClient help/hinder?
- Are there things you just wish you could do?
References
- Source for the project can be found on GitHub
- Documentation which is being updated to match the current state
- The client is on Nuget, and you should ideally use the Package Manager to get the client.
- Stack Overflow is the best place for initial questions, response is usually within 24 hours, you can also use the Issues page on GitHub if you want.
- Official Neo4j page for .NET Development
- Example Project
- I blog about it on my own page
- You can follow me on Twitter – I try to keep releases on there