Web and standalone app? - windows

I need to create an application that is primarily going to be about numbers and graphs, as well as UI controls to select information and input choices, filter lists, etc.
The application needs to be available as:
a) A web application so that a user can use the application via their browser
b) Downloadable, so that the user can use it without internet or browser - windows being the most important platform, followed by Mac OSX if possible.
Are there any recommendations for this? Either Microsoft or open source solutions I am interested in considering.
I believe that the Unity 3d engine is capable of this, but I think that its focus on game development would get in the way too much for an application that is interested primarily in standard GUI controls.
Thanks!

Silverlight supports out of browser applications on Windows and on the Mac so it can run in a browser and out of a browser in Windows or on the Mac.
There are graph controls available freely from Microsoft and there are other third party controls.

Related

Cross Platform Desktop Application Development

I’d like to develop Windows 8 applications and have them hosted on Azure as if they were any other website, i.e. accessible to Macs, PCs, etc. I don’t want to be limited to people downloading Windows 8 applications to a Windows 8 PC or device. Can you explain how Azure achieves this?
I’d like to develop Windows 8 applications for desktops, but not be limited to running them on Windows 8 PCs and devices.
Thanks
Azure doesn't achieve this at all, other than providing a public endpoint for access to 'code'. What you have up in the cloud will depend on what you want to achieve and who you want to reach.
You mention web site and application, but those connote two very different architectures.
A web site will give you the most reach since you'll (presumably) be using standards like HTML5/JavaScript and CSS that are available on a multitude of platforms. As you can see by using applications like outlook.com, the user experience can be quite immersive. With a web site there's little to no client-side requirements other than a browser.
An application typically implies native installation on the target machine and provides the richest possible experience because you use techniques, frameworks, and APIs that are specific to a platform or a device. Applications also (arguably better than web sites) enable reach and monetization via marketplaces like Apple's App Store, Google Play, and the Window Store.
Technologies like Silverlight and Flash were part of the RIA wave (Rich Internet Application) that was a hybrid of both: use the web for reach, and a plug-in for richness. Those are still valid models, but the tide is shifting to HTML5 which is now much closer to reality and narrows the user experience gap that Silverlight and Flash filled. While Silverlight is definitely supported (in an out-of-browser mode as well), the choice of using a plug-in technology will limit your audience because of platforms supported and the need for an additional installation. That may or may not be acceptable given your target application.
What we are seeing now is a trend toward mobile application development paradigms - native still, of course, but also hybrid applications such as afforded by PhoneGap, AppMobi, Sencha, and other HTML5 frameworks and cross-platform options like Xamarin. Each of these allows you to develop in the language and constructs you know well for a given platform, but create applications which are partially or wholly 'native' and can run on multiple devices and platforms. Typically, you will reuse much of your 'back-end' and data integration layers across you targeted platforms, but rework the user interface to be in-line with the expectation for the device.
Windows Azure figures prominently in the development of such apps by providing infrastructure for data storage, services, identity management, push notifications, and other facilities that rely on centralization and scale.
And I suppose there's one other option in all this, virtualization, but that's a larger hurdle for end users and wouldn't recommend that as a general approach.
You can create Silverlight apps, it runs in browser. So it can be open Windows PC as well as in Mac. Do visit Microsoft Silverlight website. Here's few links regarding Azure with Silverlight.
Silverlight in the Azure cloud
Microsoft Silverlight 5 and Windows Azure Enterprise Integration
Windows Azure with Silverlight End To End Demo
More you google, more you will get results.

Web technologies in GUI apps

What's your experience in using web technologies (HTML, XML, CSS, JavaScript) to implement part of the functionality of a GUI application? Pros and cons, please.
No servers, relational databases, AJAX, or cookies for session management, nor an existing webapp either, but rather a GUI app that uses web widgets (like Qt WebKit) to render and handle substantial parts of the UI, while taking advantage of a GUI framework to achieve an even richer interaction and better desktop integration.
I've already validated that the approach is possible using PyQt. Content can be rendered from the file system or from strings, and URL requests (images or clicks) can be captured and served by the form's event handlers. CSS and JavaScript are supported, perhaps with some limitations.
# ...
self.webView.page().setLinkDelegationPolicy(
QtWebKit.QWebPage.DelegateExternalLinks
)
#...
class TotiMainWindow(QtGui.QMainWindow):
def linkClicked(self, url):
pass # events arrive here
Note: This question is different from this one and this one made before, among other things because there is no requirement to use web technologies on the GUI, but there is the requirement that the application should work without a network connection available, and should integrate well with the default desktop over different platforms, without previous infrastructure requirements (no .NET, Java, browsers, or database servers).
Note: I posted a different version of this question on PMS but found very little experience with this approach there.
Closing Note
I just found most of the information I was looking for in a series of blog posts by André Pareis.
I think the largest advantage to using web markup like HTML/CSS and other web technologies is that desktop apps may very well have their days numbered.
As we speak, Google engineers are working on the Chromium OS, which essentially consists of a single GUI application... the browser...
Now, while nothing may never actually come of it, there is clearly a rising trend in the number of applications accessible through a web browser, accessible anywhere. It seems to me that this is the future of application development.
By using these technologies, this becomes one less headache you have to deal with when or if you determine that your app should be available as a web application.
Update: A few years ago, we developed an Agent Desktop for our call center that is essentially a local application that opens sockets to integrate with the phone system. The user interface the agents use is built with HTML, CSS, and JavaScript, and the experience is stunning. When we released our latest update in 2010 with a professional CSS redesign, our agents were all very impressed with not only how easy it was to interact but also how easy it was to use.
In the future we will port this 100% to the browser, but for now it needs to be a local application because of the COM integration with the phone system.
We did exactly this for a project back when Windows XP was new.
This gave my team several benefits:
A good-looking UI with relatively little effort
Easily change the style of the UI in a consistent manner using CSS
Relatively simple integration with C++ (invoking functions from the ui and vice versa)
The drawbacks we saw were:
Some not-so-good firewalls considered accessing internal resources (ie other html pages in the ui) to be a web request
Adding and accessing the needed resources could in some cases be a bit cumbersome
It was possible set properties in Internet Explorer that would prevent JS from running in the application
Note that some of Windows XP:s programs are using this approach.
This probably works best with small, more Wizard-like parts of the ui (which our ui consisted almost entirely of).
I have since then not really been involved in ui projects, so I cannot really tell you whether this approach is still valid... I know that MFC-based applications will let you use HTML-based dialogs though.
In a similar situation in 2005 I created a stand-alone webapp using XForms, CSS, JavaScript, XML and XML Schema for offline data retrieval and verification. With a good XForms -> HTML + JS transformer (Chiba) it did the job with no bug fixes after the initial release. It was used for 6-12 months (IIRC) by about a dozen engineers for a project gathering test data in the tunnel of the Large Hadron Collider. The biggest surprise of that project was just how much you get for free when going for a web platform, even for offline use. Highly recommended.
The major problem is that it reduces your development speed, or the quality of your user interface. A lot. Unless you're using Seaside, it is much faster to develop a desktop app.
There is quite some number of applications built on top of Mozilla platform. It isn't 100% web technology, as instead of HTML you use XML based XUL, but the rest is indeed web stack (JavaScript, CSS). The most successful of these it the OpenKomodo and it's commercial big brother Komodo IDE.
On the other hand, as far as Qt goes, the newest version 4.7 you can build GUI using QML language. Don't let the name mislead you, it's not markup, it acctually JavaScript with app-specific extensions.

Non-dev-tools Windows Phone 7 emulation

In developing a number of WP7 apps, I have a need to show clients how the app will be when deployed. The clients are a) not in the same location as I am, b) not technical at all, and c) may not even be using a PC. The purpose is to demo, get feedback and make any needed changes.
I'm not finding any realistic options to just simply show them what it would look, feel and run on a Windows Phone 7 (using the ApplicationBar, etc.). I found this link - http://www.redmondpie.com/standalone-windows-phone-7-series-emulator-9140536/ - but it's rather hacky for me to ask someone to do to set up an emulator on their machine without also installing VS Express, etc.
Does anyone know of any links to an official emulator that can be run on a PC, has a simple install and can load WP7 apps?
Have you considered using a product such as Citrix GoTo. Clients do not need to be particularly technical to join such a meeting, you can then take them through a demo. This will cost you though.
A free alternative would be to set aside a PC running the emulator with your software loaded. Create a VPN for you clients to connect to and let them use Remote Desktop Connection to connect to the PC. They can then play around with it remotely.
Have you considered using SketchFlow? Although by default the UI is "sketchy" (sorry), you can apply styles to the controls you drop on your pages, including the very same styles that are used by Windows Phone controls.
If you use a Silverlight SketchFlow project, you can deploy the content to a web server and provide a link that can be consumed on any machine that will render Silverlight content...they can go through the navigation, provide feedback, etc.
Christian Schormann has a writeup on what is required to use it in the pre-release tools... http://electricbeach.org/?p=573
You should take a look at this: http://justinangel.net/WindowsPhone7EmulatorAutomation. I believe it will answer your question exactly.

Advantages/disadvantages of browser-based interface vs. graphics

I'm in the design phase for a desktop-based application. Because of the nature of this particular application, I believe it would benefit greatly from a web-based approach (i.e., allowing a user to interface with the application through a browser running in kiosk mode) in order to leverage the simplicity of HTML/CSS/JS and the availability of many great JS interface plugins. Does taking this approach (rather than coding in a native or cross-platform graphics library) come with any gotchas?
Well, your access to the OS and other domains are going to be limited.
What about using something like Adobe AIR that lets you use HTML/CSS/JS and compile it into a proper desktop app?
Please look at http://www.terrainformatica.com/htmlayout/ - the library which was designed to create desktop GUI using html and css.
The main "gotcha" to doing a web GUI is that you are going to need to set up a web server of some kind. A gui app can be just a single executable. You allso (probably) will need some GCI coding to get information back from the user to your program. In general, it is liable to be a whole lot more work.
Balancing against that is the fact that any user networked to your webserver anywhere in the world using the OS and browser of their choice should be able to operate your program.

Best way to access client side devices from a web application

I need to provide support for various scanners and printers to an Intranet web application. Basically the user needs to be able to take pictures using his webcam or camera, scan using his scanner and print through his printer. Because this is an Intranet application, compatibility is not an issue. I can ensure the user has all drivers installed. But the client insists that the application should be embedded inside the browser and not run in a native window. All client machines are Windows PC, but the client is flexible with browser choice.
I am thinking about writing an ActiveX control. But then I am not sure if I am using some 90s technology when better technologies might be available. Therefore, is there anything else I can look at? If I have to write ActiveX, can you point me to a good sample app to start with? I am very comfortable with C.
You could use .htc extensions on Html files. This puts the website in a different sandbox which allows for more access on client side functions (eg. execute commandline software which connects to a printer or scanner...)

Resources