neo4j client doesn't support DNX 50 - neo4j

I'm moving my web application to ASP.NET 5, my application is using Neo4jClient to connect to neo4j database.
But, one thing I see that neo4j client 1.1.0.40-DT doesn't support DNX50.
I wonder if there are any alternatives or not.

Please look at the GitHub repo https://github.com/Readify/Neo4jClient/issues/135 at the bottom you'll find links which you can try. This is the only Core client for .net for neo4j, but I've had no feedback yet as to how it works.

Related

How to create a local SQLite database and publish together to IIS? (ASP.NET MVC)

I am new to SQLite database. What I know currently is SQLite is a small and lightweight standalone database file that we can use without the windows/SQL authentication (correct me if I'm wrong). I have done research on .mdf file which I don't know whether it belongs to the SQLite. And most of the SQLite tutorial online is only for ASP.NET Core, how about ASP.NET MVC? My ASP.NET MVC project is currently published to IIS, so I need the SQLite Database can be published along, and also no need to set up SQL Server or any related setup in IIS. Anyway, I have no idea how to start. Appreciate if someone can provide me some tutorial link? Or even the most simplest example. Thanks in advance.
I am new to SQLite database.
Hi
What I know currently is SQLite is a small and lightweight standalone database file that we can use without the windows/SQL authentication (correct me if I'm wrong).
You are correct - however not needing to worry about authentication is not the main reason people use SQLite.
I have done research on .mdf file which I don't know whether it belongs to the SQLite.
With respect, you haven't done enough research: .mdf files are specific to Microsoft SQL Server and not SQLite. SQLite does not have a defined file-extension but generally most people use .sqlite.
And most of the SQLite tutorial online is only for ASP.NET Core, how about ASP.NET MVC?
"ASP.NET MVC" is an ambiguous term. But I assume you mean ASP.NET MVC 4 or ASP.NET MVC 5 for the .NET Framework, not ASP.NET Core.
As it's 2021 now, you should only use ASP.NET Core and only follow resources and guides for ASP.NET Core. If you have an existing project on ASP.NET-for-.NET Framework then the good news is that it's very easy to update.
My ASP.NET MVC project is currently published to IIS, so I need the SQLite Database can be published along, and also no need to set up SQL Server or any related setup in IIS.
You don't need to use Microsoft SQL Server at all if you're using SQLite:
SQLite's database engine runs "in-process" (literally: inside the same OS process as your application code).
This means you won't have any external dependencies other than the SQLite library in your project.
Microsoft SQL Server is a dedicated server system that runs databases all the time and does nothing but run databases.
Microsoft SQL Server and SQLite have absolutely nothing in common besides both supporting ISO SQL.
As an aside, if anyone calls it "ANSI SQL" you should print out the ISO SQL specifications for the past 30+ years and dump them on their desks and make them read through it all: it hasn't been called "ANSI SQL" since the 1980s.
Anyway, I have no idea how to start. Appreciate if someone can provide me some tutorial link? Or even the most simplest example. Thanks in advance.
Recommending external resources is not something we do here on StackOverflow.

Use neo4j server instead of embedded mode

I'm working on a webapp running on Tomcat which using spring-data to connect to a neo4j graph in embedded mode.
I would like to use neo4j server instead of the embedded mode and I am looking for some help to be sure about how to do that.
Some of my application services are quite difficult and combine, in a single transaction, the result of several cypher requests in a dto sent back to the user.
First I thought that I have to create a server unmanaged extension and I think I should follow these following steps.
- Keep my webapp with springMVC and spring security to hold and secure users sessions.
- Regroup all my transactional services in a specific jar my-app.jar
- Use Jax-RS to add a REST access point on each of my service of my-app.jar
- use something like spring restTemplate from my spring controller to call services from my-app.jar
First question : is this way of doing things is the good way ?
Second question : I have many spring injection in my services layer. How can I keep them working (how can I add dependencies in the server extension ?
Then I discovered graphAware and I wonder if I should use it instead.
And finally I just read this post http://jexp.de/blog/2014/12/spring-data-neo4j-improving-remoting-performance/ and it seems that I should use
the SpringCypherRestGraphDatabase (as explain in the bold text at the end of the article).
Well, I'm a little bit lost and I would appreciate any help to use neo4j server instead the embedded mode for my application which contain some complexe transactions.
You have a number of options here and you are on the right track with your thinking.
Option 1:
If your use cases are business-logic-heavy, and your question suggests that they are, going the unmanaged extension route is one option.
Essentially, you can then combine the most performant Java API and Cypher (if you wish) to perform your use case. I wouldn't use SDN here by the way, so you have to do your mapping manually, but is there really any mapping? Maybe you just want to execute traversals / Cypher queries for each one of your use cases.
Each use case then exposes a simple REST API, which is consumed by your Spring-powered application running Spring MVC, Spring Security, and all that. You can use the RestTemplate from Spring in your app's Controllers.
To add a twist to all that, you can use the GraphAware Framework to develop the "unmanaged extension" using Spring MVC as well. That would be my preferred option, knowing nothing about your domain/app.
Option 2:
Use the new version of SDN (v4) as Michael suggests. This allows you to run your application with annotated domain objects, Spring MVC, Security, et al. Operations (CRUD and other) are automatically translated to Cypher and sent across the wire to Neo4j running in server mode (no extensions needed). Results are then marshalled back to Java objects.
We're about to release Milestone 1 of SDN v4. It shouldn't take more than a week. That said, it is still going to be a Milestone release, thus not ready for production. A GA release is expected in May (ish).
You can already try SDN v4 yourself. Clone this repo: https://github.com/spring-projects/spring-data-neo4j, make sure you're on the 4.0 branch, and do an mvn clean install on it. Here's a sample app, built using Angular JS and Spring Boot.
Please do get in touch with feedback / questions / problems (best by email info at graphaware dot com). Cheers!
I suggest you wait a bit until SDN4 Milestone 1 comes out (developed by GraphAware) this was written from scratch for Neo4j-Server.

Which server is affected when we use Neo4j traversal API?

Maybe a silly question :)
If we use separate physical servers for Application and Database, when using Traversal framework, which one of the servers should support the queries (DB or Application)?
Neo4j traversals run on the Neo4j database server, if you are using the server version of Neo4j.
Disclaimer: I'm building a similar system right now, so my view is probably biased.
My Node.js Application server provides an Angular app from the /public folder. The client application speaks only to the Application server.
Generally it works like this:
Client sends a message to Server.
Server returns a promise to client.
Server queries the DB, performs any necessary manipulation to the data.
Server resolves the promise.
Client interprets the response.
hope that's helpful.

AzureWorkerHost get the uri after startup for Neo4jClient

I am trying to create a ASP.Net with neo4jclient project to be hosted on the Azure and am kind of unable to grasp how to do the following:
get hold of an neo4j rest endpoint address once the worker role has started. I think I am seeing a different address each time the emulator spins up a instance of worker role. I believe that i'll need this to create an client somewhat like this
neo4jClient = new GraphClient(new Uri("http ://localhost:7474/db/data"));
so any thoughts on how to get hold of the uri after the neo4j is deployed by AzureWorkerHost.
Also how is the graph database persisted on the blob store, in the example its always deploying a new instance of pristine db in the zip and updating, which is probably not correct. I am unable to understand where to configure this.
BTW I am using the Neo4j 2.0 M06 and when it runs in emulator, I get an endpoint somewhat like this http://127.255.0.1:20000 in the emulator log but i am unable to access it from my base machine.
any clue what might be going on here?
Thanks,
Kiran
AzureWorkerHost was a proof of concept that hasn't been touched in a year.
The GitHub readme says:
Just past alpha. Some known deficiencies still. Not quite beta.
You likely don't want to use it.
The preferred way of hosting on Azure these days seems to be IaaS approach inside a VM. (There's a preconfigured one in VM Depot, but that's a little old now too.)
Or, you could use a hosted endpoint from somebody like GrapheneDB.
To answer you question generally though, Azure manages all the endpoints. The worker roles says "hey, I need an endpoint to bind to!" and Azure works that out for it.
Then, you query this from the Web role by interrogating Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.Roles.
You'll likely not want to use the AzureWorkerHost for a production scenario, as the instances in the deployed configuration will destroy your data when they are re-imaged.
Please review these slides that illustrate step-by-step deployment of a Windows Azure Virtual Machine image of Neo4j community edition.
http://de.slideshare.net/neo4j/neo4j-on-azure-step-by-step-22598695
A Neo4j 2.0 Community Virtual Machine image will be released with the official release build of Neo4j 2.0. If you plan to use more than 30GB of data storage, please be aware that the currently supported VM image in Windows Azure's image depot must be configured from console through remote SSH to Linux.
Continue with your development using http://localhost:7474/ and then setup the VM when you are ready for a staging or production build to be deployed.
Also you can use Heroku's free Neo4j database deployment but you must configure the basic authentication for your GraphClient connection in Neo4jClient.

Can Meteor run with a Microsoft back end (ie EF and ASP.net MVC)

Perhaps like some of you, I am inundated by the number of JavaScript MV* out there. When I thought I was going KO, I found Backbone, then Ember.
I recently saw some demos on Meteor and I am extremely impressed. But I know nothing of Mongo and I "think" Meteor requires it. (http://www.meteor.com/screencast)
I am too heavily invested in Entity Framework & ASP.net MVC to move away from them but Meteor looks like a terrific client side MV*.
Does anyone know if Meteor can work with a Microsoft back end (ie EF and ASP.net MVC)?
Thanks.
UPDATE:
Yes I see the NuGet package for MongoDb, but truth be told I am only interested in Meteor. Is it a both or nothing situation? Meteor looks like bleeding edge and I really would appreciate any links to documentation on its use with a MS backend.
For anyone still reading this in 2013 or later - it's now possible to run Node.js on Windows under IIS (just install the support with the Web Platform Installer).
There's also versions of Meteor and MongoDB for Windows and Meteor supports deploying a bundle that will run under "pure" node.js
As far as I know, You can't. it runs over Node.js, additionally there is a client implementation of a MongoDB like API that would be a pain to implement with a EF backend I think
Yes, sort of. Meteor runs server-side code using node.js, but also provides some very useful services on the client side like templates, routes, collections, session variables, and reactivity.
The way to use it with a .net back-end (or any other language) is to create an api that can be accessed with Meteor. You can create Meteor collections in the client code, which don't need a mongodb instance. Simply access the api to load the collections with the correct data, and then you can use Meteor as you would normally.
However, for most apps it would be much simpler to implement everything in Meteor.

Resources