-2

I am developing an app that calls for Windows, Mac, Linux (All will be browser plugins for IE, Chrome, Firefox, Opera, and Safari), iOS, and Android devices (native apps) to access a remote server/cloud/database to upload and download data.

They need to be able to connect to a database to send and retrieve data (multiple devices can be registered under the same account). The data will need to contain the user's username, and 40+ strings each containing web addresses up to 200 chars long.

I think what I need is an SQL server, but I'm not quite sure (I've done almost no work in the remote context, mostly local). And also I'm pretty sure that AJAX is involved.

So, what do I need, how do I get it, and how much should it cost (if it would cost anything at all)?

Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
KevinOrr
  • 1,663
  • 3
  • 13
  • 24
  • Are you doing a mobile web app (which I assume given the AJAX reference), or native apps? Are you asking about the database on your server or the database engine running in your respective mobile device platforms? – Rob Jul 22 '12 at 17:44
  • @RobertRyan Actually my question is incorrect. I'm developing browser plugins for the computers and native apps for the mobile devices. I'll update question + tags to match. As for your second question, I have no idea what that means. – KevinOrr Jul 22 '12 at 20:48
  • When you have a native app communicating with a remote server, there are obviously two possible databases that you could be talking about: On the centralized server or on the mobile device itself. If you're talking about the former (your server), then you just talk to whomever is hosting that and see what they're using. If you're talking about the latter (the mobile native app), then it probably differs from platform to platform, but they all have some form of persistent storage. In iOS you have plists, user defaults, sqlite (a SQL interface), Core Data, etc. – Rob Jul 22 '12 at 21:26
  • @RobertRyan I'm assuming that when you talk about databases on the actual device that the data won't be accessable to the other devices. Going off of that assumption, I need to communicate to a remote server, but I don't have one set up, and I don't know anyone who does. If it's cheap than that would be awesome, because I don't really have enough money to be wasting on a project that probably won't even become much, or if it does will just be swallowed up by some giant tech firm. – KevinOrr Jul 22 '12 at 23:56
  • 1
    Reach out to some ISP's and I think you'll see that it's not too bad. If you get some serious volume, you may be talking about something a little more expensive, but you'll presumably have an economic model that will justify it at that point. So just contact some ISP's and get some pricing. – Rob Jul 23 '12 at 00:24

1 Answers1

2

If I understand your question, you're looking for a way to get and store data on a database of some kind.

You're then taking this data, and then doing respective things with it on each device.

This reminds me of a talk given at Google IO this year (I'm an android guy). The google solution is called Google Cloud Endpoints.

Google Cloud Endpoints.

Google Cloud Endpoints lets you provide an API for all of your applications, hosted by Google App Engine.

You mention one of your limitations is cost; An API on App Engine would fit the bill. App Engine Users get a "Free Quota" that covers all use that a young application might get.

With Cloud Endpoints, Google makes it easy to automatically generate libraries for each type of device (a .jar file for Android, a javascript library for plugins/webapps, whatever iOS would use). This should be, in theory, easy to integrate with your application.

You can also use Google to handle authentication needs, using OAuth 2.0.

Cloud Endpoints is currently under selected developer trials, so maybe I'm just dangling food in front of the starving here, but it's worth keeping an eye on.

SQL Server

You can run an SQL server on your local machine, like any other program. I've used WAMPserver in the past, which gives you PHPmyAdmin without any trouble (allowing you to build your data tables and enter data without all of the commandline).

This is great for testing, but when you want to actually put it into production, you're going to want to look at a webhost of some sort. (As Ryan Roberts says)

The Free ways...

There are free ways of doing what you want, but they can be more trouble than they're worth.

You could host an API on app engine, and use the App Engine datastore. But then you have to learn how to write an App Engine API.

You could also use Amazon AWS; they will give you a free server instance that can run whatever you want it to. But then you have to learn how to do that, too.

I remember, in the past, I used one site that offered each user a free LAMP stack; granted, this was a long time ago, and it was terribly un-user-friendly, and I'm not even sure if it still exists.

In the end, you want the solution that lets you focus on your product; your time is worth money, too.

Final note

I know normally people have very specific ideas in mind when they talk about writing browser plugins; you want it to be available whenever people are browsing, and you're dealing with the pages that the user is browsing on.

If this is not the case, take a look at building a web app. A web app is coded in HTML, CSS, and javascript, and then issues calls to a server to get/set data, etc.

Best of all, a webapp can work for all platforms. Much better to build the logic once, build the interface twice (computers, and touch devices), than to build both 8 times (once for each of your target platforms), unless you have a compelling reason to do so.

Eagle
  • 2,046
  • 19
  • 25
  • +1 for the comprehensive answer – Rob Jul 23 '12 at 04:15
  • @eagle Thanks a lot! That was really helpful! I wish I could up vote your answer, but I don't have the Rep yet :( – KevinOrr Jul 23 '12 at 14:57
  • @eagle Only a couple more questions, though: Yes, I do want my app to be able to see the pages people are browsing on (but tuanks for the intro on web apps). I know that Google Chrome extensions are basically packaged web pages, but how do other browsers handle it? Also, if all the other major browsers handle extensions/plugins/add-ons the same way, it will basically behave the same way, right (build once for computers, then again for Android, then again for ios)? Thanks again! – KevinOrr Jul 23 '12 at 15:07
  • So, that's where it gets hard. Take a look here: http://stackoverflow.com/questions/5166144/how-to-design-a-browser-extension-add-on-compatible-with-multiple-browsers Extensions came before web apps were "a thing", so they always had special privileges. Now, with HTML5 and Co., that's starting to change, where a web page can get access to local storage, local cameras, etc. So, unlike with HTML5, which has wide-spread support, there's not a lot of working together in browser extension land. This is what i've found, during some quick searches and my experience. If i'm wrong, please share! – Eagle Jul 23 '12 at 18:20
  • a commenter on the linked thread mentioned Greasemonkey scripts can be very portable. Check it out? – Eagle Jul 23 '12 at 18:25
  • Found this too, comparing browser plugin frameworks. http://blog.nparashuram.com/2011/10/writing-browser-extensions-comparing.html – Eagle Jul 23 '12 at 18:36