Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is this list a correct understanding of Microsoft's current application deployment options?

I'm trying to get my head around the many application deployment options which Microsoft currently offers.

Doing a little research turned up dozens of confusing terms:

  • "WPF App"
  • "ClickOnce App"
  • "WPF ClickOnce App"
  • "MSI App"
  • "XBAP App"
  • "XBAP App deployed with ClickOnce"
  • "Installed ClickOnce App"
  • "WPF Web App"
  • "ASP.NET Web App"
  • "ASP.NET MVC Web App"
  • "Silverlight App"
  • "Full WPF App"
  • "ClickOnce with sync framework support"

I cleaned up my findings into seven separate approaches below. Would appreciate feedback:

  1. "WPF App deployed with MSI" (allows lots of installation options)

    • MSI runtime required on target computer
    • wizard with options
    • can specify per-user or per-machine
    • can modify files and registry on target computer, limited only by access permission set by administrator
    • can place shortcut on desktop
    • replacing system files, etc. makes it easy to get into DLL hell on the target computer
    • updating is a big negative: detecting available updates requires additional tools / custom programming, not built in
    • user does not have to be online to use application
  2. "WPF App deployed with ClickOnce": (good if you want automatic update but runs in sandbox)

    • requires two clicks (click hyperlink, click yes), no user input
    • only for current user, no per-machine installations
    • no shortcuts on desktop
    • appears in program list like normal applications
    • applications files are always copied to ../My Documents/My Applications
    • a shortcut to your application will be put in Start menu / your company name
    • cannot modify the target computer, isolated from operating system
    • automatically detects and updates a newer version
    • published simply by putting them on a webserver (where clients detect and get them)
    • requires .NET 2.0 or later
    • comparable to Java Web Start
    • solves four problems: (1) easy deployment, (2) easy updating, (3) low-impact on target computer, (4) no need for administrator permissions.
    • considered "low impact"
    • if two users have the same ClickOnce application installed on the same machine, they will not break each other
    • employs CAS for security
    • user does not have to be online to use application
    • standalone ClickOnce apps do not work on Firefox and Mac with Firefox now since it needs the .NET runtime
    • restricted to single-window apps since they run in the browser
    • building a ClickOnce manifest is much easier than Silverlight etc, since the IDE will do almost all of it for you; you just have to host the files somewhere (could be a web URL; could be a network UNC).
  3. "XBAP App": xcopy deployment of .xbap file, IE and Firefox display it instantly like a web page

    • the real goal of the XBAP model is to create a WPF equivalent to the traditional HTML-and-JavaScript website (or Flash applet)
    • the target computer simply runs the application without installation over the web in their web browser (IE or Firefox)
    • They're good for Intranet applications where you want really easy deployment, the complete .NET Framework (as opposed to Silverlight) and a browser's navigational model.
    • 99% WPF features (as opposed to Silverlight's subset of WPF features)
    • CAN be automatically deployed via ClickOnce as well but XCOPY is more common
    • YourApp.xbap is really a ClickOnce deployment manifest
    • run in sandbox
    • user must be online to use application
    • these must be "page-based" applications as opposed to "windows-based" applications
    • "An XBAP appears to run inside the brwoser simply because it displays all its content in the browser window. This is different from the model used by ActiveX controls (and Silverlight), which are loaded inside the browser process."
    • XBAPs offers a "prompt-free" experience, as long as .NET 3.5 is installed, it just shows up in the browser like a web page.s
    • XBAPs are not allowed to use WinForm controls via Interop
    • not allow to use windows drag and drop
    • most advanced WCF features are NOT allowed and XBAP can't communicate with any server other than the one where the XBAP is hosted
    • "if your application requires full trust, you should consider building a stand-alone WPF app and deploying it using ClickOnce" (Pro WPF in C# 2008)
    • trick: you can embed multiple xbap applications into multiple iframes on one HTML page.
  4. "Silverlight App": runs in client's browser and uses downloaded 4MB subset of .NET framework, i.e. no 3D)

    • cross browser (applications can be used by Opera and Safari as well)
    • updating application is as easy as with ClickOnce or XBAP
    • single window apps
    • application is in the sandbox of course
    • async only
  5. "ASP.NET MVC with JQuery/AJAX": a new development platform equal to development in WPF in terms of RAD and TDD

    • this approach is worth considering along with the WPF/Silverlight approaches
  6. "ASP.NET App": classic web application with ViewState, etc. probably will be used less and less as ASP.NET MVC gains acceptance

  7. "WinForm App": classic windows application, will be used less and less as WPF gains acceptance

I would particularly appreciate feedback on:

  • how reusable are controls (e.g. if we develop in Silverlight, can we reuse our code/controls in XBAP?)
  • what is the best approach to clients which are sometimes offline, sometimes online AND need access to WCF (probably clickOnce apps I would think)
like image 939
Edward Tanguay Avatar asked Jan 20 '09 12:01

Edward Tanguay


People also ask

What is deployment of Windows application?

App Installer allows Windows 10 apps to be installed by double-clicking the app package. This means that users don't need to use PowerShell or other developer tools to deploy Windows 10 apps. The App Installer can also install an app from the web, optional packages, and related sets.

What does it mean to deploy an application?

Application Deployment, also known as Software Deployment, is the process of installing, configuring, updating, and enabling one application or suite of applications that make a software system available for use, like facilitating a certain URL on a server.


1 Answers

Great Summary, Edward.

Much of the code in Silverlight can be directly used in WPF & WPF XBAP apps because Silverlight is a subset of WPF. For XAML, you will have to change the namespace URI and probably have to do some slight manual tweaking.
For XAML to Silverlight conversions, you will have to do change the namespace URI as well but refactoring might be necessary if WPF elements are used that are not in Silverlight. WPF and the Sync Framework are great options for online/offline applications. See the Syndicated Client Experience Starter Kit for an example of a WPF/Sync Framework app. Also Silverlight + Windows Live Mesh will provide online/offline capabilities.

like image 86
Michael S. Scherotter Avatar answered Oct 03 '22 22:10

Michael S. Scherotter