Photo Sharing Cloud - Azure - android

I need to build a photo sharing application that is web based and also has mobile application for android, Windows Phone and iOS (I don't need to build all these apps, it should be supported seamlessly for these). The Photo Sharing Project will be my assignment in order to learn the varios aspects involved in the photo sharing process (efficient storage, reliability and UI Presentaion will be my key aspects).
I was planning to use Windows Azure, IIS, SQL Server and maybe some silverlight ? Is this the most cost effitive and a recomended way for me to start ?
If any1 could share the current trending technologies used by some of the popular photo sharing sites.
Thank You

Ok so if you want your application to support WP, iOS, Android, ... you'll have to look at some technology that allows you to build an API that can easily be used by any of these platforms. In that case you might want to look at the new ASP.NET Web API which allows you to build an API that supports content negotiation.
Besides that you'll also want to look at how you can store data in Windows Azure using Blob Storage. This allows you to give all your files an URI and have Blob Storage serve these files to your users instead of your application having to do this. This will drastically decrease the load on your front-end. You can even combine this with the CDN to make your images available over multiple edge servers to serve the content from a location closest to your users.
Since you're working with images I'm assuming you'll be working with those images, like creating thumbnails, applying filters, ... These tasks could use lots of resources and you wouldn't want to put all that load on your front-end (Web Role / Web Site). That's why it's a common practice to off-load this work to your back-end (Worker Role) using queues. Here is a complete example coming from the training kit that creates thumbnails using a Worker Role and a queue: http://msdn.microsoft.com/en-us/vs2010trainingcourse_introtowindowsazurelabvs2010_topic3.aspx
As for the Silverlight part, personally, I wouldn't use Silverlight since you'll be limiting yourself to desktops only. Using ASP.NET MVC + jQuery / (any other JS framework) will allow mobile/tablet users to also work with your site even if there isn't a native application available.

You can host the Web application in Azure.
Store the photos in the Azure private blob.I am not sure about the Silverlight part I think it is not supported in some mobile platforms.

Related

How to integrate Android app and website?

I have no idea how does applications like Amazon, Flipkart etc work. They have both android application and website. How does data between both web and Android synchronise?
Do we write separate codes for building android app and website? If yes then in what language we build the website so that it's compatible with the android application.
And how to build the database for the same.
If answer is no to the above question, then how exactly do we proceed to build such Android and web application.
I am new to this and want to learn how to build it.
In general, web sites are built with web technologies such as JavaScript, HTML, and CSS, but there a many different frameworks and libraries in other languages (such as Angular, which is written in TypeScript) that can also handle the creation of web apps. In comparison, mobile applications for Android and iOS are written it Java/Kotlin or C#/Swift, respectively. There isn't really a clean, native way to create a single app for web and mobile platforms. But, the data that backs both of the platforms is the same.
How does this work? The data is hosted on what is called a backend, a server that has the information that you want to display to your users. Typically, the client app can get this information with an HTTP request to the backend, and the response will be the data formatted in a JSON string. Data is stored in the backend in a database. There are many databases in use today, but some more popular ones are MySQL, MongoDB, and SQLite, and each of them have their advantages and disadvantages. As you get further along in your development cycle, you will need to choose the tools that work for you.
Websites (and relative applications) like Amazon have very complicated systems behind what you see on the screen. Of course they have different code for either application and website. Usually, in small projects, you can create the mobile android app with languages like Java or Kotlin and websites with html, css and Javascript. But when it comes to get together data between an app and a website, you will need to write backend software, which is not so easy, for example in php and then create a database to store the data (with mySQL for example). Then you can access your data from either app and website and decide what to do with it. I suggest you to learn one of these technologies at a time. Trying to learn them all together will only create misunderstandings.
Hope I've been useful.

Embedded web server with REST API framework for Android

I am using Backbone.js to build a 'hybrid' web app, which will be served as a native app using Phonegap. One thing I need is offline support for a large amount of data, and so we are considering using native code to synchronise the offline data with the server, and just transfer the bits of data we need to the web app when necessary. (An alternative approach we considered was using the Phonegap storage plugin but this is backed by WebSQL which seems to have a 5MB quota, which is too small for what we need).
As the app is based on Backbone.js, which expects a RESTful API as its backend, we are toying with the idea of embedding a RoutingHTTPServer into the native layer - essentially this allows us to embed a local web server in the app, so that the web layer can request data using standard RESTful calls to the local server. The beauty here is that the Backbone app doesn't know any different - the workflow is entirely the same as requesting data from a remote server.
I was wondering if there is an equivalent of RoutingHTTPServer for Android? I have seen projects like iJetty, but ideally I would like something which gives the REST-API bit out of the box too (like RoutingHTTPServer does). Would something like Spark work on Android?
Try MiniWeb Java Embedded Webserver. It is built for Android, super easy to setup JSON REST requests and open source.

Phone Gap or native Android wrapper?

I want to develop an application which works both in a regular browser and as an Android app. Both seem suitable but would I be right in saying if I went with Phone Gap, deploying the same html content as a regular, server hosted website is not trivial and would require modification? Also, are multi page applications not desirable in a Phone Gap wrapper?
Are there any alternatives I should consider? I'm surprised someone hasn't already written an Android wrapper with all the hardware access wiring done already. Or have they?
There are few things you should know,
If you are going to publish your app also on iOS, you can't use server hosted website for your app.
All of your basic functionality must stand on your app assets, is one of the iOS guidelines, and its also make-sense for best ui performance (both iOS & Android).
Use server-side wisely, when you want to fetch data which have to be up-to-date.
there are some new mobile browser features which will be available in the future, that allow your website to use the device hardware functions:
Device API on W3C
Good luck dude ;)
You can try with jquery mobile framework:
http://www.jquerymobile.com
It is jquery based framework for developing web apps that works on standard web and on multiple mobile devices (with cordova)

Server Side API for Mobile Applications

I am an iphone developer. I create many mobile applications. Some of them need a server side backend to store data and then my iphone applications access them.
Usually, I need to create a backend web application myself using PHP or RoR. However, they are very straight forward web application with some cruds (create, update, delete, edit, ..etc)
There are some troubles with this work:
I need to create very simple application and deploy it myself to the
server
If I am only iphone developer and don't know PHP or RoR, I
ask for some other web developer help.
Is there any existing web application that enables me to build my database schema and just give me API access to my data?
I'd like to recommend Appacitive - Its an awesome tool with many innovative features. One of the biggest advantage it has is that you can create your data model diagrammatically, and all the corresponding APIs are automatically generated for you.
They have relationship managers both in diagrammatic designer and via code. You can also filter data by using their visual tools. Test drive the APIs via their Test Harness tool.
Other great features include a data explorer, inbuilt Social Integration and Geo Location. Have a look at their features.
Try out their free package, they have all sorts of SDKs for Javascript, Android, iOS etc.
You should take a look at parse.com, it provides you the facility to add back-end to your mobile applications in minutes. Here is a tour of their services and android guide.
Look at QuickBlox. There is Custom Objects module, it allows to to build any data structure you want. There are a lot of iOS samples

Architecture Best Practice: Rails and Mobile/Web App

I am having a browser-oriented web app build on Rails (3.1). I want to make some features of the web app available on mobile devices, too.
Besides...
1.) Building native apps for each vendor of devices and interacting with my rails web app using JSON/XML, ...
I am thinking about reusing as much as business logic already implemented in my rails app by reusing controllers/models and add some new views targeted to mobile devices (in terms of screen size and the like...).
With this approach, I see two alternatives:
2.) Let the end user access the part of the rails app targeted to mobile devices in the mobile browser.
3.) Set up a native mobile app wrapper, e.g. using PhoneGap, and refer to the same part of the rails app used for 2.).
The advantage of 3.) is that I can reuse business logic of my rails web app and having a "phantom" native app for mobile devices at the same time. (I used the term "phantom" because besides the wrapper, it's not really native, this approach actually just mimics a native app.)
Question 1: Are there any other alternatives besides 1.) to 3.) ?
Regarding 3.)
Question 2: Does Apple accept this kind of apps (which fetch large portions remotely) to be uploaded to the app store?
-> I would be surprised if it is so, because it would allow one to change large parts of the app without the notice of Apple.
Question 3: From an architectural/technical point of view, is it recommended to remotely fetch prerenderd html/js to be executed in a "phantom" native mobile app build on top of e.g. PhoneGap?
-> Wouldn't it be better to set up an independent client app within the native mobile app (maybe using backbone.js), keeping all html, css, js locally within the mobile app, and communicate with the backend using JSON/XML or whatever?
I think this is a good question and I've recently come across similar difficulties. I've ended up using (Q3) vaadin with touchkit. Fine if you're doing free but a bit expensive if you're doing commercial (although then you can probably afford it). I realise this doesn't relate to rails but still, I'm assuming the main point of the question was should I build native apps which use web services / middleware or go for pure web apps.
RE (Q2), during my trawl of this current technology, I did read a few articles suggesting that apple are not allowing the web app style. As in, app which simply masks browser window loading remote web app. Essentially, I think where apple are concerned, you'd need to have the functionality tied down to what they agreed to. This doesn't really affect web apps though as you can surely just access them directly from the browser.
RE (Q1), the only alternatives I can see would be different middleware (e.g. MQ, SOAP etc).

Categories

Resources