I trying to built some application with metro-UI with C# for Window 8, due to Window 8 will be running on tablet soon, and now i knew my application required a lot of processing power, thus, ideas come into my mind, what if i could make the high performance process on server; either get another VPS or Azure to process the functions then send back the processed function results to the Window 8 Metro-UI application ?
The high performance functions i mentioning about ::
- face images recognition – recognize face on server then tell the result
- Generate Image – some user upload image will put watermark and regenerate a new image
- Crop Image – like facebook, crop the face part from big image
- Edit Image – in case of the crop is not so right or the alignment got problem
- Filter Data – big amount of data from user, need to filter then insert to server
- and others…
What come into my minds are, WCF ? but i never learn it in details before.. any keywords to research on this issues ?? Thank you for reply. =D
Basically any technology allowing for communication between your application and a server can do what you ask as long. If you implement both sides you can define any relevant aspect like protocol, security etc.
Regarding Azure and WCF:
Yes you can implement what you ask via WCF on Azure… Azure and WCF by itself do not know anything about images or similar things – it is up to you to implement whatever you want…
You can use WCF even without Azure… basically WCF has some support for loadbalancing/routing etc built-in so you can even go and setup some webfarm for the heavy lifting…
WCF can use different protocols – some are more portable regarding other platforms (like HTTP/SOAP which is usable with iOS or Android for example), others are more performant (like a binary TCP-based protocol…). Some are more firewall-friendly (like http) etc.
Which to choose depends really alot on what you need…
Regarding Metro:
Metro Apps can be implemented with C#, JavaScript etc. – depending on your situation it might be an option to implement this as a combination of HTML5/JavaScript client-side and WCF/C# server-side…
Regarding image editing etc.:
How to implement this depends on the functions you want to give the user… some things are achievable by using scaled-down version of the image client-side (like red-eye-correction) and some are rather complex (like high-end-color-correction) since they need several aspects (high resolution, color-management etc.).
There are several .NET based image processing libraries out there (free and commercial) which offer a wide variety of image-related function… some have cloud-specific interfaces (http and/or some UI-controls etc.). Be sure to check on licensing before using libraries in the cloud (Azure or similar)…
Edit image/Filter data is a wide field thus not specific enough… Compare image (in term of face) seems to imply that you want to do some recognition… this is a very complex and broad area but very well possible with .NET…
Since you don’t give details on the use cases/scenarios it is hard to give any specific advice… feel free to add more details so the answers can be more specific…
UPDATE – as per comments the OP wants to basically implement something similar to face recognition found on facebook:
Implemeting face recognition similar to facebook is a VERY BIG project IMHO… the algorithms for recognition are complex and the “good ones” are usually developed internally and not sold/licensed to others… so you will have to find some high-quality image-processing library and develop/implement your algorithm on top of that library. There are some good starting points for such algorithms but basically you will need to do a lot of work to enhance/refine them… for this you will need a lot of test data/images etc.
As for watermarks this is another complex area… some technologies are opensource, most are not robust enough depending on what you want to achieve… security of watermark varies alot… does it need to be robust enough for someone printing and scanning it back ? or for someone taking a photo off a screen ? or just for scaling ?
Another aspect is the legal side of this… several relevant aspects of such algorithms are patented which means you might need to acquire proper licenses… privacy is another legal aspect to keep in mind when implementing this sort of application…
UPDATE 2 – as per comments:
Some general search terms for implementing a process which calls functions on a server and gets the results back are “SOAP”, “WCF”, “WebService”, “JSON”.
You can find some general information: