我正在努力摆脱微软目前提供的许多应用程序部署选项。

做一点研究发现了几十个混乱的词汇:

>“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开发平台的新开发平台

>这种方法值得考虑WPF / Silverlight方法

>“ASP.NET应用程序”:具有ViewState的经典Web应用程序等可能会随着ASP.NET MVC获得接受而越来越少地使用
>“WinForm应用程序”:经典的Windows应用程序,将随着WPF的使用越来越少的使用

我会特别感谢有关以下方面的反馈:

>可重复使用的控件(例如,如果我们在Silverlight中开发,我们可以在XBAP中重用我们的代码/控件吗?)
>什么是最好的方法有时候离线,有时在线的客户端,并需要访问WCF(可能clickOnce应用程序,我会想)

AppStart经验:

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没有变化。

wpf – 此列表是否正确了解Microsoft当前的应用程序部署选项?的更多相关文章

  1. HTML5 播放 RTSP 视频的实例代码

    目前大多数网络摄像头都是通过 RTSP 协议传输视频流的,但是 HTML 并不标准支持 RTSP 流。本文重点给大家介绍HTML5 播放 RTSP 视频的实例代码,需要的朋友参考下吧

  2. 利用Node实现HTML5离线存储的方法

    这篇文章主要介绍了利用Node实现HTML5离线存储的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. 详解如何通过H5(浏览器/WebView/其他)唤起本地app

    这篇文章主要介绍了详解如何通过H5(浏览器/WebView/其他)唤起本地app的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  4. H5混合开发app如何升级的方法

    本篇文章主要介绍了H5混合开发app如何升级的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  5. AmazeUI 折叠面板的实现代码

    这篇文章主要介绍了AmazeUI 折叠面板的实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  6. HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码

    这篇文章主要介绍了HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

  7. Html5 video标签视频的最佳实践

    这篇文章主要介绍了Html5 video标签视频的最佳实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  8. html5唤起app的方法

    这篇文章主要介绍了html5唤起app的方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  9. HTML5拍照和摄像机功能实战详解

    这篇文章主要介绍了HTML5拍照和摄像机功能实战详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

随机推荐

  1. static – 在页面之间共享数据的最佳实践

    我想知道在UWP的页面之间发送像’selectedItem’等变量的最佳做法是什么?创建一个每个页面都知道的静态全局变量类是一个好主意吗?

  2. .net – 为Windows窗体控件提供百分比宽度/高度

    WindowsForm开发的新手,但在Web开发方面经验丰富.有没有办法为Windows窗体控件指定百分比宽度/高度,以便在用户调整窗口大小时扩展/缩小?当窗口调整大小时,可以编写代码来改变控件的宽度/高度,但我希望有更好的方法,比如在HTML/CSS中.在那儿?

  3. 使用Windows Azure查询表存储数据

    我需要使用特定帐户吗?>将应用程序部署到Azure服务后,如何查询数据?GoogleAppEngine有一个数据查看器/查询工具,Azure有类似的东西吗?>您可以看到的sqlExpressintance仅在开发结构中,并且一旦您表示没有等效,所以请小心使用它.>您可以尝试使用Linqpad查询表格.看看JamieThomson的thispost.

  4. windows – SetupDiGetClassDevs是否与文档中的设备实例ID一起使用?

    有没有更好的方法可以使用DBT_DEVICEARRIVAL事件中的数据获取设备的更多信息?您似乎必须指定DIGCF_ALLCLASSES标志以查找与给定设备实例ID匹配的所有类,或者指定ClassGuid并使用DIGCF_DEFAULT标志.这对我有用:带输出:

  5. Windows Live ID是OpenID提供商吗?

    不,WindowsLiveID不是OpenID提供商.他们使用专有协议.自从他们的“测试版”期结束以来,他们从未宣布计划继续它.

  6. 如果我在代码中进行了更改,是否需要重新安装Windows服务?

    我写了一个Windows服务并安装它.现在我对代码进行了一些更改并重新构建了解决方案.我还应该重新安装服务吗?不,只需停止它,替换文件,然后重新启动它.

  7. 带有双引号的字符串回显使用Windows批处理输出文件

    我正在尝试使用Windows批处理文件重写配置文件.我循环遍历文件的行并查找我想要用指定的新行替换的行.我有一个’函数’将行写入文件问题是%Text%是一个嵌入双引号的字符串.然后失败了.可能还有其他角色也会导致失败.如何才能使用配置文件中的所有文本?尝试将所有“在文本中替换为^”.^是转义字符,因此“将被视为常规字符你可以尝试以下方法:其他可能导致错误的字符是:

  8. .net – 将控制台应用程序转换为服务?

    我正在寻找不同的优势/劣势,将我们长期使用的控制台应用程序转换为Windows服务.我们为ActiveMQ使用了一个叫做java服务包装器的东西,我相信人们告诉我你可以用它包装任何东西.这并不是说你应该用它包装任何东西;我们遇到了这个问题.控制台应用程序是一个.NET控制台应用程序,默认情况下会将大量信息记录到控制台,尽管这是可配置的.任何推荐?我们应该在VisualStudio中将其重建为服务吗?我使用“-install”/“-uninstall”开关执行此操作.例如,seehere.

  9. windows – 捕获外部程序的STDOUT和STDERR *同时*它正在执行(Ruby)

    哦,我在Windows上:-(实际上,它比我想象的要简单,这看起来很完美:…是的,它适用于Windows!

  10. windows – 当我试图批量打印变量时,为什么我得到“Echo is on”

    我想要执行一个简单的批处理文件脚本:当我在XP中运行时,它给了我预期的输出,但是当我在Vista或Windows7中运行它时,我在尝试打印值时得到“EchoisOn”.以下是程序的输出:摆脱集合表达式中的空格.等号(=)的两侧可以并且应该没有空格BTW:我通常在@echo关闭的情况下启动所有批处理文件,并以@echo结束它们,所以我可以避免将代码与批处理文件的输出混合.它只是使您的批处理文件输出更好,更清洁.

返回
顶部