做一点研究发现了几十个混乱的词汇:
>“WPF应用”
>“ClickOnce应用”
>“WPF ClickOnce应用”
>“MSI应用”
>“XBAP应用”
>“使用ClickOnce部署的XBAP应用程序”
>“已安装ClickOnce应用程序”
>“WPF Web App”
>“ASP.NET Web App”
>“ASP.NET MVC Web App”
>“Silverlight应用”
>“全WPF应用”
>“ClickOnce支持同步框架”
我将我的调查结果清理成以下七种不同的方法。感谢反馈:
>“使用MSI部署的WPF应用程序”(允许大量的安装选项)
>目标计算机上需要的MSI运行时
>向导与选项
>可以指定每个用户或每个机器
>可以修改目标计算机上的文件和注册表,仅受管理员设置的访问权限限制
>可以在桌面上放置快捷方式
>替换系统文件等,使得在目标计算机上容易进入DLL地狱
更新是一个很大的负面:检测可用的更新需要额外的工具/自定义编程,而不是内置
>用户不必在线使用应用程序
>“使用ClickOnce部署的WPF应用程序”:(如果要自动更新但在沙箱中运行)
>需要两次点击(点击超链接,点击是),没有用户输入
>仅适用于当前用户,无机器安装
>桌面上没有捷径
>像普通应用程序一样出现在程序列表中
>应用程序文件始终复制到../My Documents / My Applications
>您的应用程序的快捷方式将放在开始菜单/您的公司名称中
>无法修改目标计算机,与操作系统隔离
>自动检测并更新较新版本
>只需将它们放在网络服务器(客户端检测并获取它们)上即可发布
>需要.NET 2.0或更高版本
>与Java Web Start相当
>解决四个问题:(1)轻松部署,(2)轻松更新,(3)对目标计算机的影响不大,(4)无需管理员权限。
>认为“低影响”
>如果两个用户在同一台机器上安装了相同的ClickOnce应用程序,它们就不会相互破坏
>聘请CAS担保
>用户不必在线使用应用程序
>独立ClickOnce应用程序无法在Firefox和Mac上使用Firefox,因为它需要.NET运行时
>仅限于单窗口应用程序,因为它们在浏览器中运行
>构建一个ClickOnce清单比Silverlight等容易得多,因为IDE会为你做几乎所有的工作;你只需要在某个地方托管文件(可以是一个网址;可以是网络UNC)。
>“XBAP应用”:xcopy部署.xbap文件,IE和Firefox立即显示网页
> XBAP模型的真正目标是创建一个与传统的HTML和JavaScript网站(或Flash applet)相当的WPF,
>目标计算机只需在Web浏览器(IE或Firefox)中通过Web安装即可运行应用程序,
>它们适合Intranet应用程序,您希望真正轻松部署,完整的.NET Framework(而不是Silverlight)和浏览器的导航模型。
> 99%的WPF功能(与Silverlight的WPF功能子集相反)
>可以通过ClickOnce自动部署,但XCOPY更常见
> YourApp.xbap实际上是一个ClickOnce部署清单
>在沙箱中运行
>用户必须在线才能使用应用程序
>这些必须是“基于页面”的应用程序,而不是“基于Windows的”应用程序
>“XBAP似乎是在浏览器窗口中显示所有内容,因为它与浏览器进程中加载的ActiveX控件(和Silverlight)所使用的模型不同。
> XBAPs提供了一个“免提”的体验,只要安装了.NET 3.5,它就像网页一样在浏览器中显示。
> XBAP不允许通过Interop使用WinForm控件
>不允许使用windows拖放
>不允许使用最先进的WCF功能,XBAP无法与XBAP托管的服务器之外的任何服务器进行通信
>“如果您的应用程序需要完全信任,您应该考虑构建一个独立的WPF应用程序并使用ClickOnce进行部署”(Pro WPF in C# 2008)
技巧:您可以将多个xbap应用程序嵌入到一个HTML页面上的多个iframe中。
>“Silverlight应用程序”:运行在客户端的浏览器中,并使用已下载的4MB子系统的.NET框架,即没有3D)
>跨浏览器(Opera和Safari也可以使用应用程序)
>更新应用程序与ClickOnce或XBAP一样简单
>单窗口应用程序
>应用程序当然在沙箱中
>异步
>“具有JQuery / AJAX的ASP.NET MVC”:与RAD和TDD相关的WPF开发平台的新开发平台
>“ASP.NET应用程序”:具有ViewState的经典Web应用程序等可能会随着ASP.NET MVC获得接受而越来越少地使用
>“WinForm应用程序”:经典的Windows应用程序,将随着WPF的使用越来越少的使用
我会特别感谢有关以下方面的反馈:
>可重复使用的控件(例如,如果我们在Silverlight中开发,我们可以在XBAP中重用我们的代码/控件吗?)
>什么是最好的方法有时候离线,有时在线的客户端,并需要访问WCF(可能clickOnce应用程序,我会想)
MSI =
只有Windows。许多点击使用前安装适用于非常庞大和资源密集型应用程序。应用程序可以在DVD上分发。应用程序可以做一切没有技术限制。
ClickOnce =
只有Windows。可以从网页激活。下载一次保留关于它的来源(服务器)的信息,并可以自动更新。应用程式受到限制需要.NET
Silverlight =
运行Windows / Max / Linux(即将)和未来的手机(计划)。是网页还是可以嵌入到html中。代码在服务器上,永远不会被安装。需要Silverligth-Runtime。提供WPF的子集
XBAP =像silverlight但只适用于windows。没有人会需要这个。 Silverlight更好
编程技术:
Silverlight =
运行在客户端maschine。使用WPF *
ASP.NET =
在.NET中的服务器maschine上运行,而在客户端maschine上运行Javascript / html。
WinForms =旧技术
WCF =不适用于基于浏览器的应用程序。是分布式应用程序人们可以把所有的门都打开进客户端。使用WCF =需要MSI。
WCF为服务器提供了一个很好的框架。当您使用REST进行接口时,客户端将永远不需要WCF。客户端可以在ClickOnce和MSI安装的应用程序中连接/断开连接。您必须连接到silverlight和ASP中的appstart网页。
XAML可以重用于silverlight / wpf / xbap。 wpf / silverlight的轻微更改。我知道wpf / xbap没有变化。