WebGL requires you to write Javascript code, which is certainly a problem (I mean maintaining javascript code on a diversity of browser).
The solutions:
1) use a wrapper, like a java wrapper (as GWT is for 2D web interface development). There is a number of them for webGL, but I can't tell you one who will still exist for sure in one year time (?)
2) at least use a higher level API build on WebGL such as 3JS threejs.org
You might consider other questions too:
- Building 3D application often requires to create 3D content too, so how well the choice you will make fits your designer/graphic team tools ?
- Flashplayer is not available on all platforms/browsers, so your choice might be in fact WebGL (W3C open standard in almost all browsers) versus Adobe AIR (multi-platform -except Linux !- browser less solution, runtime to install) ?
WebGL is an standard that is overlooked by the Khronos group and you have free software that can run it (Firefox), and Chrome and Internet Explorer should also be able to show it. There are also ways to translate code from different languages to javascript (https://github.com/kripken/emscripten/wiki) which means if you don't want to learn javascript you could also work in another language.
With flash you are completely dependend on Adobe and the flash plug-in is notoriously known for its security flaws.
WebGL technology is very innovative in itself. The reason being, 3D scenes can be rendered even on a smart phone. Interactivity through this technology for architectural purpose really helps people who are involved in the real estate business and exhibitors.
WebGL would definitely be compatible with more platforms, but can be painful to write as pointed out by Cedric Dumas. Flash is basically a 2D technology, though modern extensions can go 3D.
Did you consider other solutions that run 3D in the browser such as Unity3D? They are much easier for content definition to the price of compatibility (I am not sure whether unity3D can run under linux).
WebGL is a very good solution to create 3D applications in HTML. But the code can quickly become very verbose. I recommend using APIs such as THREE.JS which greatly reduce the size of code to write, provides the tools to calculate directly the shadows and other classic effects and allow to focus on the specific content of the page. THREE.JS allows in particular to load Collada files exported from Blender or 3DS Max in order to quickly integrate 3D files in personal applications.
I would recommend WebGL for the 3D web application, specially if you have some experience in coding. For example you can add HTML controls and WEBGL features which surely enrich your 3D web app.
Well WebGL definitely, especially on the long run perspective. There are already several js libraries on top of WebGL: for architectural visualization I'd reccomend Three.js, Blend4web or OSG.js (all easy to use and to maintain)