由图可见,XBAP与WPF的区别是“受限的”;Silverlight与XBAP的区别是,不需要.NET Framework。

上星期與以前的同事爭論著究竟使用XBAP來開發XX用戶端 (為筆者之前開發過的某家用戶端,以前採用.NET 1.1的Windows Form應用程式),還是使用Silverlight 來開發,XBAP是(XAML Browser Application) 的簡稱,中文名稱稱為 [瀏覽器應用程式] ,它其實也是一種先前微軟所提出的 WPF巡覽應用程式 的一種,只是它以瀏覽器為其執行的容器。

XBAP與Silverlight  同樣都是以WPF為基礎的技術,但是骨子裡運作可是大不相同,話說Silverlight只是WPF中的一個子集,可是如果就技術上而言XBAP與WPF其實沒什麼不同,只是它使用IE為其運作的容器。若與Silverlight比較的話,有下面幾 5 點不同:

  1. 執行XBAP的電腦必須有安裝.NET Framework 3.0以上才可以執行/Silverlight只要有Plug-In插件即可。
  2. XBAP較不適合在Internet中使用,比較適合在Intranet中使用/Silverlight 的設計即是在Internet中使用。
  3. XBAP對用戶端電腦運作環境要求較高,因為就是WPF/Silverlight 只提供RIA豐富應用所需之物件,相對對系統要求較低。
  4. XBAP預設採部分信任下執行,因此無法存取WCF,因為呼叫WCF必須完全信任才可以 (當然可以使用憑證)解決)/Silverlight 只要信任Plug-In就好,所以沒有此問題。
  5. 因此XBAP跨平台是個問題/Silverlight 早已提供MAC OS等其他平台的瀏覽器Plug-In,所以具備跨平台的條件。

上面的 5 點應該已經說明的非常清楚究竟有哪裡不同!XBAP 因為幾乎等同於WFP的應用程式 ,就像Windows Form程式,所以基於安全考量預設都是部分信任,想想看如果網際網路下載下來的應用程式就可以存取IO,任意的修改Windows 以及檔案系統,那是多麼恐怖的事。而Silverlight 預設就沒提供像是System.IO等這種不安全的組件,所以沒有這個問題。

其中第4點所提及的WCF,若您在XBAP預設的部分信任下呼叫WCF,會得到下面的錯誤訊息:

若您直接將[安全性] 改為[完全信任] ,在IDE工具中即可以正常執行:

可是當你佈署至IIS中,網際網路的使用者下載執行,呼叫WCF後,還是會得到錯誤訊息:

解法就是在用戶端安裝專案中幫您自動建立的憑證,可以參考筆者於2009/1/8的一篇WPF 與XBAP應用程式(2) 之 如何佈署XBAP應用程式的文章。

而筆者前面所提及的 [巡覽式應用程式] 與WPF的差別是在於,XBAP應用程式的XAML裡使用<NavagationWindow></NavagationWindow>為標籤,並使用<NavagationWindow.Content>標籤裝載容器物件,WPF則是<Page></Page>,而將容器物件裝在在<Grid>中,如下:

巡覽式應用程式:

	   1:  <NavigationWindow x:Class="WpfBrowserApplication1.Page1"
	   2:        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	   3:        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	   4:        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
	   5:        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
	   6:        mc:Ignorable="d" 
	   7:        d:DesignHeight="300" d:DesignWidth="300"
	   8:        Title="Page1">
	   9:      <NavigationWindow.Content>
	  10:          
	  11:      </NavigationWindow.Content>
	  12:  </NavigationWindow>

WPF則是如下:

	   1:  <Window x:Class="WpfApplication1.MainWindow"
	   2:          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	   3:          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	   4:          Title="MainWindow" Height="350" Width="525">
	   5:      <Grid>
	   6:          
	   7:      </Grid>
	   8:  </Window>

旋覽式應用程式繼承NavagationWindow類別:

	   1:      public partial class Page1 : NavigationWindow
	   2:      {
	   3:          public Page1()
	   4:          {
	   5:              InitializeComponent();
	   6:          }
	   7:      }

WPF則是繼承Window類別:

	   1:      public partial class MainWindow : Window
	   2:      {
	   3:          public MainWindow()
	   4:          {
	   5:              InitializeComponent();
	   6:          }
	   7:      }

转自:http://www.dotblogs.com.tw/gelis/archive/2011/01/10/20724.aspx

WPF, WPF Browser Application(XBAP) 和 Silverlight 的区别的更多相关文章

  1. 使用IE9、FireFox与Chrome浏览WPF Browser Application(.XBAP)的方式

    最近开始写一些WPF的小Sample和文章,但是毕竟WPF应用程式不像Silverlight那么方便的只要装个Plugin就可以透过浏览器来看执行结果,因此把脑筋动到了改用WPF Browser Ap ...

  2. How to update WPF browser application manifest and xbap file with ‘mage.exe’

    老外参考文章1 老外参考文章2 I created a WPF browser application MyApp then published it by ClickOnce in VS2008. ...

  3. WPF中的Application类。

    原文:WPF中的Application类. Application对象用的名称空间是system.windows 1.手动创建Application对象步骤. 1.1).把项目中的App.Xaml文件 ...

  4. [原创] Delphi Create(Application) 和 Create(nil) 的区别

    Delphi Create(Application) 和 Create(nil) 的区别: 例如: Form1:=TForm1.Create(Application); Form1:=TForm1.C ...

  5. 转载---WCF、WPF、Silverlight和区别

    转自--http://hi.baidu.com/wl5026442/item/6ce62b4d19ff64e61381da9c SilverLight可以看作是WPF的一个简化版本,或者一个轻量版本. ...

  6. WPF与winform与silverlight的区别

    收到了一封学生的邮件: =========================== 金老师您好: 最近在学C#.NET,基本语法学习的差不多了,接下来准备学习图形界面设计部分.但是我目前对于.NET的Wi ...

  7. [WPF]WPF Data Virtualization和UI Virtualization

    这篇博客将介绍WPF中的虚拟化技术. 1. Data Virtualization 通常情况下我们说数据虚拟化是指数据源没有完全加载,仅加载当前需要显示的数据呈现给用户.这种场景会让我们想到数据分页显 ...

  8. 学习WPF——WPF布局——了解布局容器

    WPF布局工作内部原理 WPF渲染布局时主要执行了两个工作:测量和排列 测量阶段,容器遍历所有子元素,并询问子元素所期望的尺寸 排列阶段,容器在合适的位置放置子元素,并设置元素的最终尺寸 这是一个递归 ...

  9. 学习WPF——WPF布局——初识布局容器

    StackPanel堆叠布局 StackPanel是简单布局方式之一,可以很方便的进行纵向布局和横向布局 StackPanel默认是纵向布局的 <Window x:Class="Wpf ...

随机推荐

  1. [ python ] 各种推导式

    各种推导式,主要使用示例演示用法 列表生成式 示例1:求0-9每个数的平方 li = [x*x for x in range(10)] print(li) # 执行结果: # [0, 1, 4, 9, ...

  2. initialization 与 finalization 执行顺序 研究

    看GIF: 第二个GIF: DEMO下载:http://files.cnblogs.com/files/del88/InitOrderDemo.zip

  3. csu 1552(米勒拉宾素数测试+二分图匹配)

    1552: Friends Time Limit: 3 Sec  Memory Limit: 256 MBSubmit: 723  Solved: 198[Submit][Status][Web Bo ...

  4. promise应用于ajax

    promise应用于ajax,可以在本页打开控制台,复制代码试验 var url = 'https://www.cnblogs.com/mvc/blog/news.aspx?blogApp=dkplu ...

  5. JS中firstChild,lastChild,nodeValue属性

    childNodes 在JavaScript中,使用childNodes属性可以返回一个数组,这个数组包含给定元素节点的全体子节点. firstChild firstChild 这句代码等价于 目标元 ...

  6. 开始学习MaxCompute

    https://help.aliyun.com/document_detail/34615.html?spm=a2c4g.11186623.6.688.jVxTMW

  7. html学习-css

    1.css初识 css 中文解释:层叠样式表,把html比作骨骼的话,css就是衣服,他的外在都能通过css来修饰,js则是肌肉,能使html动起来.产生用户交互... 1.1css样式表类型 css ...

  8. 什么是VC、PE、LP、GP?

    天使基金主要关注原创项目构思和小型初创项目,投资规模大多在300万元以下:风险投资关注初创时期企业长期投资,规模在1000万元以下:私募股权投资主要关注3年内可以上市的成熟型企业. VC即ventur ...

  9. mysql 5.7 表名大小写不敏感

    修改 my.cnf 添加 [mysqld] lower_case_table_names=1 重启MySQL service mysqld restart

  10. numpy中min函数

    numpy提供的数组功能比较常用,NumPy中维数被称为轴,轴数称为秩. import numpy as np 比如a = np.array([[1, 5, 3], [4, 2, 6]]) a.min ...