views:

485

answers:

5

we're considering migrating our UI to XBAP. we've chosen XBAP despite knowing the clients must have .net pre-installed, since we're not targeting the masses but rather IT professionals in the corporate environment, and it's a way to preserve our investment (in a WPF based UI in a client-server architecture) and enjoy web deployment. however, we are concerned about the maturity of the platform/architecture and it's adoption.

do you know of any commercial applications out there using XBAP, and do you have any experience using it? can you elaborate on that experience?

also, as @Murph suggested, can you think of strong reasons to prefer clickOnce over XBAP (or the other way around)?

+1  A: 

We've had much success with ClickOnce, including production rollout to external, non-technical customers. It was easy to use, including being easy to integrate into our automated build process. Our experience is at least one more datapoint for you to consider in weighing the risks of the 2 alternatives.

You're right that adoption for XBAP is, indeed, very low. I think that's primarily because Silverlight makes so much more sense for most people who want the benefits of WPF/DotNet in a browser (since their apps can be cross platform with Silverlight).

Clay Fowler
Yonatan Karni
Yes, it's very easy to rollout updates - that is a core part of ClickOnce. So you post the new build of your tool to the HTTP server where they installed from and the next time they run it will automatically upgrade. You can control how draconian it should be: force update, prompt for update, etc.
Clay Fowler
You're quite right about Silverlight in your case. I only mentioned it as a possible explanation for the low adoption of XBAP, not as a recommendation for you to use on this problem.
Clay Fowler
+1  A: 

I could be wrong, but IIRC XBAP uses ClickOnce as it's underlying deployment method. [Cant find where I read this, so take that with a grain of salt.]

That said, I've had great success running a WPF application via ClickOnce deployment. As was stated before, you deploy all the files to your web server. As you release updates you simply copy them to your web server, as clients run the app they get prompted to update to the newest verison, you can require update, or allow them to deferr.

Its very user friendly and doesn't require the overhead of a browser to run your application.

Nate Bross
+2  A: 

I've been doing an XBAP tool, also for internal corporate needs. It's pretty easy to rollout updates -- just update the server app version and the clients will be updated next time they connect. So, in this aspect its not very different from ClickOnce.

The main problem for us was the "partial trust" mode, that you have to obey. And it goes wrong in some very unexpected situations, like for example, some of our third-party WPF failed because they used WPF bitmap effects, which in turn used GPU shaders, which was considered as a security violation by the system and blocked. I'm not sure if that kind of problem is solved in ClickOnce. The rumors are the XBAP trust mode will be less paranoid in .NET 4.

Otherwise, I don't see any difference. At least the development of XBAP vs stand-alone WPF is all the same. (Note: Silverlight is different, it uses only a subset of .NET framework, which is separately installed and available for several platforms. XBAP requires Windows platform and .NET Framework 3+).

Yacoder
in partial trust, how difficult/easy is it to use modal dialogues/open new windows, etc? I've read that opening a new window will dispatch the pop-up blocker, is there a way to have it work out of the box without further local configurations?
Yonatan Karni
In general, you are not allowed to open new windows or use your own dialogs (http://msdn.microsoft.com/en-us/library/aa970910.aspx). You can call some standard dialogs, like File Open, and you can create Popup instances. Not sure if they will be blocked or not, but you'll also have to implement the "modality" on your own (http://social.msdn.microsoft.com/forums/en-US/wpf/thread/ef66f6a7-eb9d-42f6-86ba-7fbefb72fa95/)...
Yacoder
another question - my client calls a web service, with WCF configured via app.config. when I played around with XBAP I couldn't find a way to deploy it, and anyway app.config isn't available since the process runs in the context of PresentationHost. did you have any experience with an alternative to app.config (especially in the context of web services)? (deploy another file and manually load? use hard-coded configuration?)
Yonatan Karni
AFAIK, we use App.config to connect to a WCF-service and it works, no special treatment needed...
Yacoder
+1  A: 

We develop an application that has both a desktop and a web implementation. Because the functionality is almost the same we want a single source solution. The application is a project and drawing management tool for a CAD application. Most important reason to have it run in a browser is that the application will be used as a collaboration tool to exchange project data and drawings.

The problem with browser hosted applications is that they run in the browser and are thus limited to the rules that apply (as mentioned in another reply eg. new windows and trust limitations).

Because our application is mainly used in controlled intranets and extranets we think we can manage with our solution. Our application runs in full trust and is signed with our own certificate which makes life a little easier.

The benefits are of course the click once installation (and update maintenance) and the ability to let users install the application 'anywhere' (or course you need .NET and the certificate on our case) via a web site.

The biggest problems we faced were related to trust, navigation and dialogs which we could solve. Another problem is that our application uses web services to access data. The binding between a client and the web service is quite hard by default (embedded) but we also found ways to overcome this.

We can also run our application outside the browser (but install it via the browser). But our product owner currently wants the browser experience as this makes more sense to users. If you install via a web site but run the application outside the browser then the limitations that the browser demands are less.

Rob
A: 

Here's a fun fact. In .NET 4.0, they have added the ability for XBAP applications deployed via ClickOnce to run in full trust. No more partial trust required. That should give you some options!

RobinDotNet