简体   繁体   中英

Using web technologies to create desktop applications

Recently, the pace at which web browsers improved and implemented new technologies (eg HTML5) seemed to have accellerated considerably. At the same time, the tools for developing web applications, like eg jQuery, or the myriads of web frameworks have also made web development much easier.

Are we now at a point were it makes sense to develop a pure single-user desktop application using web technologies? Assuming we can just install the latest browser together with our application, we don't have to worry about compatibility with older browsers.

IMHO web based applications are the future. Currently there are applications that will take a very long time to get onto the web, like adobe products. The web will still need to advance a lot more before we get to that point.

Web browsers sill are behind the times and there is far too much browser share going to the browsers the don't support (or poorly support) such features as HTML5, CSS3, etc.

Cloud technologies are the way to go if you don't mind dealing with cross browser headaches. The best advantages to a client with cloud apps is that they can access it anywhere without downloading a thing.

But if you are referring to have a web based technology downloaded to the users desktop then you can use adobe air :)

I personally do everything with web technolgy that I prevously would have done in a desktop application. The javascript frameworks take a lot of pain out of browser differences. It definately the way to go for internal applications. The possible problem with outward facing applications is that you have to assume that people have not turned javascript off.

Edit:

If you're looking to actually develop desktop applications using web technology like javascript etc the adobe air might be the way to go

No. And that is not a point one can get to , as such. Web applications will always be more limited than desktop applications, for the reasons of security and privacy alone, not to mention cross-platform sensibility, implementation quality and straight up visual and design requirements.

As such, unless your application can deal with some pretty severe limitations (zero chance of elevated privileges, likely limited access to the file system, if at all, no document exchange, speed limitations, limitations in computing power used,…), it simply isn't a realistic approach.

Edit:

By means of clarification to the "visual and design requirements" bit: Users generally expect a certain look and feel with their desktop applications, conforming to this look and feel over multiple platforms is an absolute pain; because everything has different sizes no matter where you go. If your not planning on supporting multiple platforms anyway, then what is the point in the first place?

In other words, you end up in a situation where you can use 90% of development time maintaining style sheets that make it look sane on each platform; or make it ugly on all platforms (ref: Java )

Yes, we are now at that point where it can be done, except for the always problematic IE. This has been possible for quite some time in Firefox with XUL and Prism. I have seen a couple of applications showing the capabilities you speak of. They worked in all the modern browsers. Of course, none of them can work in IE. IE always holds back the web.

No - there are three specific experiences that you can offer the user, and there's reasons in many apps not to muddle them up

Lightweight - pure web, client just needs to be able to run a browser - this can be further broken down into mobile clients, clients running in challenged environments (low cpu, low bandwidth,etc)

Rich Internet Applications - Much heavier weight web applications - not so much traditional asp.net anymore (I hope) because the apps beat the hell out of the comms channel (viewstate) and the host server (often postbacks cause scads of code to run on the server just for 3 lines of 'real' functionality) - I'd propose jQuery for it's wide playing field, Silverlight for the more limited playground but the undeniably rich experience, and wonder when the promises of HTML 5 will really be in the market

Thick Client Applications - custom code, access to the file system, 3D rendering, all the bits that really need local code with access to local resources

Now that that is said, the positive spin on your question relates to factoring your applications well - pay attention to the separation between your tiers, especially with respect to the separation between your presentation tier and the logic tiers it talks to -

1) Use a global communications mechanism - errr, that means REST, cause anyone can speak it - all your clients can use it - SOAP isn't so globally usable

2) Don't be monolithic, be service oriented - break your functionality up so specific bits can be accessed directly - this means its easy for jQuery and rich clients to easily access the bits they need when they need them - you want to be in the position that you don't care who/what the client is (for lightweight you, for all else them) you create the service once and everybody uses it in more or less the same fashion

3) Make presentation unique for the different media/delivery types/ make services uniform - (that said, with rich clients it sometimes pays to offload service processing onto the client to spare your server and increase your scalability)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM