#Neo4jClient - It's Back!
###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. Tatham has had to take a more off-hand role - something called 'LIFE' has happened :) So, I (Charlotte - 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 crucially was 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
- use within a
-
Auth support
- You no longer need to use a custom HttpClientWrapper to do more complex operations - but can now pass in the details in the constructor.
-
CollectAs updates
- No longer returning
Node<IEnumerable<T>>
but justIEnumerable<T>
- No longer returning
The next release 1.1.0.2 added:
- Ability to specifiy the Parser Version as free text (rather than just as a version number)
Next up - 1.1.0.3:
- Put the full Query Text (Debug) into the OperationCompletedEventArgs
Followed closely by 1.1.0.4:
- OperationCompleted is now raised whenever an operation completes - including when an exception occurs.
aaand - 1.1.0.5:
- 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 2 outstanding, but as one of those isn't complete yet, there's only 1, 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 use Bolt
instead of REST
and have no code changes with regards to the Cypher
parts.
There are other things I'm hoping to bring in, 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 get Neo4jClient
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 indeed 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 client help/hinder, are there things you just wish you could do? Just let me know and I'm sure we can work it out!
###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.
- StackOverflow 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.
- 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.
I definitely would like to see better F# support. As of now I'm struggling querying the db with F# and serializing to the return types. For F# it would be nice to have something like: https://github.com/jtmueller/Neo4j.FSharp