- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我从来没有在WinRT中构建过一个应用程序(也没有一个HelloWorld),我对此非常怀疑。
我的问题是WinRT中是否存在WPF / Silverlight中不存在的功能(不包括因设计不同而实现的功能)?
这些方面对我来说是最重要的,也是我问题的核心,因此,决定是否开始使用WinRT还是等待其实现:
实体框架?
WCF RIA?
MVVM支持(Prism)???
各种工具包(Silverlight / WPF工具包)是否提供诸如DatePicker
等的其他控件?
我不清楚WinRT是否完全针对.NET或其工作方式。
此外,WinRT是仅客户端(例如WPF)应用程序还是可以坐在服务器上(例如Silverlight)在远程客户端上运行?
另一个问题:向后兼容性如何?如果我开发WinRT应用程序,它将能够在Win XP上运行吗?
无论如何,我还是不明白为什么MVVM没有被内联集成并且像MVC一样具有无缝的IDE支持。但这只是一个旁注。如果没有MVVM,我将无法使用XAML,使用MVVM可以轻松完成任何比hello world大一些的应用程序。
answer之后更新
正如我对答案所作的评论一样,我确实喜欢WinRT的设计,但是直到我了解上述特定技术(EF,WCF-RIA +验证,MVVM,SDK和工具包)之前,这个问题一直没有解决。显然,除非我至少具备上述技术,否则我不会开始销售WinRT应用或进行深入研究。
结束语,作为他的大部分工作是LOB应用程序,经过一番检查之后,HTML5 + JS远不是SL的替代品。因此,为了得出结论,我坚持使用SL并继续将其推荐给我的客户。 SL占用最少的开发时间,并且没有错误。
与C#相比,Javascript是一种肮脏的易于出错的语言,没有模式,也没有螺母。
WinRT完全支持EF + RIA + Prism + Toolkits之后,我将考虑采用LOB应用程序。
最佳答案
WinRT本质上是一些COM对象的集合,这些对象包装了一堆Win32 API(公开为CLI兼容程序集)。
微软修改了他们的C ++编译器以使用和生成ECMA 335(即CLI)元数据,而不是使用更传统的(主要是)仅C ++ / COM的MIDL或lib文件格式。微软还修改了其“ Chakra” JavaScript引擎,以使用和发出CLI元数据。
这意味着,当针对WinRT时,Javascript和C ++代码以及.NET语言当然可以使用CLI兼容的(即.NET)程序集,并且可以发出CLI兼容的(即.NET)程序集。
因此,人们可以用C ++,任何.NET语言(即C#,VB.NET,F#,Iron *等)和Javascript编写WinRT代码。
如果您曾经编写过任何.NET代码,则WinRT API将非常熟悉。 Windows团队在设计WinRT时实际上是在寻求.NET Framework设计团队的帮助和指导,因此,过去11年中指导整个.NET Framework团队和大多数.NET社区的相同设计准则已应用于WinRT API。
坦率地说,WinRT非常漂亮:)
WinRT的主要影响是它用类似的API替换了System.IO的文件,网络,流IO类,但仅支持异步IO。这意味着您将无法编写阻止线程的应用程序,因为它们等待通过网络对文件系统或外部系统的调用返回,除非您采取明确的步骤这样做。
这是一件好事。
幸运的是,C#v5和VB.NET v.next的新异步/等待功能以及对C ++的特定支持意味着您不必从根本上改变在新的异步世界中编写代码的方式-通常,您只需需要在调用异步API的方法签名中添加“异步”关键字,然后在每个异步API调用之前使用“ await”关键字。
我强烈建议您观看
我还建议您看一下我几周前写的
Async Made Simple in C# and VB图,这应该使事情更加清楚。
至于.NET本身,正如我在上面的文章中明确指出的那样,.NET并没有“消失”。尽管WinRT应用程序中将禁止使用某些.NET API(即阻止IO API),但您依赖的大多数API仍可保留并且可以完全访问。
关于Silverlight:Silverlight是浏览器插件。它是WPF的修改子集,并提供了一些非常强大和吸引人的功能。事实如此,Silverlight XAML引擎已移入Windows核心团队,并用于Windows8中的大多数Metro UI渲染-甚至是操作系统本身!
最终结果是,除了更改一些“使用”命名空间之外,几乎所有的Silverlight代码都可以在几乎没有任何修改的情况下正常运行。
BUILD
improved Win8/WinRT platform architecture中有大量针对XAML的会话。
关于向后兼容性,目标是:
尽可能将要在WinRT以及.NET桌面应用程序,Windows Phone等中使用的代码隔离到可移植的程序集中。
需要采用特定平台依赖项并考虑手动加载它们或使用IoC将模块组合在一起的抽象代码。
坦白说,我不认为为每种情况编写每个框架都不是微软的工作。各种各样的MVVP方法/框架从各种各样的人那里获得了各种利弊。如果找不到,请创建一个并将其粘贴在GITHub上并出名;)
但最重要的是,您几乎没有阻止您下载并尝试Win8 Consumer Preview&Dev11 Beta。去拿去试试看吧-我想你会发现它们非常清爽:)
HTH。
更新#1以回答对EF,WCF等的特定支持:
您可以找到
available to watch here。
WinRT API surface area enumerated here in some detail。
但是请注意,Microsoft强烈建议不要使用网络命令在同一台计算机上的Metro应用程序与其他Metro应用程序或桌面应用程序/服务之间进行通信。阅读
core WCF API's are enumerated here和Kate Gregory的答案-她链接到视频,其中详细讨论了这种情况。
如果要与现成的网络服务进行通信,则可以使用多种选择,包括WCF,套接字等。
关于RIA:Microsoft当前在说,如果您想要数据,则需要通过服务而不是直接从数据库获取数据。没有用于Metro的ADO.NET,建议通过OData,JSON,XML / HTTP等来显示数据。数据即服务在很大程度上是一种RIA方案,所以我希望Metro应用程序能够很好地支持RIA。
this SO question可能会显示更多信息。
只有您可以说出WinRT是否支持您的特定方案。我认为您最好的选择是下载这些资料并开始探索。
按照P&P更新的路线图和指南进行更新2:
P&P最近发布了新的
Here's a BUILD session on this very subject,用于构建Windows RT / Windows 8“商店” /“现代” LOB应用程序。
本指南包括
roadmap and guidance,还包括
updates to Prism/Kona。我鼓励对此空间感兴趣的任何人学习已出版的材料和参考应用程序-那里有很多很棒的东西:)
关于.net - WPF/银光VS WinRT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9935048/
有没有办法在另一个 WPF 窗口内托管 WPF 窗口。我有几个有点复杂的表格。但现在为了简化事情,我试图将其中一些合并为一个“仪表板”表单中的标签页。 请注意,我不是要托管 Windows 窗体,而是
WPF 特有的哪些方面和实践在非 WPF GUI 编程中最有用(并且并非难以实现)? 最佳答案 通过学习 WPF 命令,我了解了命令模式。它构成了 UI - 代码分离的基础,我认为应该在其他应用程序中
WinRT/Metro 正在获得一个新的 SemanticZoom控制,但我很难为 WPF 找到任何东西。 我不想为我的特定项目切换到 Metro,因为它不允许我制作窗口应用程序或跨多个显示器的多个实
我很难解决我的问题,我快要疯了。 想法是这样的:我有两个 ListView 元素,当一个元素从第一个列表掉落到第二个列表时,我需要打开一个对话,但我需要被掉落的元素的信息以及被添加以填充对话的元素。
如果我遵循TabControl,并且一切正常,当我切换到第二个Tabitem时,它显示就没有问题。 //datagrid //datagrid2 但是如果我有这个xaml,当我
在 Windows 窗体应用程序中,我们的数据 GridView 有很多事件,如行鼠标双击或行单击以及额外的...... 但是在 WPF 中我找不到这些事件。我如何将行鼠标双击添加到其中包含数据网格的
在这个项目中,代码 正确编译和执行 ;但是,我需要帮助解决两个问题: VS2012 WPF 设计器不适用于此 XAML 文件。它显示消息设计 View 对于 x64 和 ARM 目标平台不可用。 我收
目前我正在设计 WPF ScrollViewer,我发现了这个 Content="M 0 0 L 4 4 L 0 8 Z" 阅读 MSDN examples .现在我真的很想知道这意味着什么,但我无法
在 WPF 中,元素的可见性可以为“可见”,但实际上在屏幕上不可见,因为它的父元素(或父元素的父元素)具有折叠的可见性。 我希望能够知道一个元素是否实际呈现在屏幕上,而不必遍历可视化树检查父元素。 有
我应该使用 ApplicationCommands.Close用于关闭模式对话框还是该命令被认为是为关闭应用程序保留的?如果是后者,请大家创建Close每个命令 Dialog盒子或只是一个 Close
WPF 是否有任何可用的 piemenu 控件? 最佳答案 我在我的最爱中找到了这个,你可以看看: This 祝你今天过得愉快。 关于wpf - WPF 的菜单,我们在Stack Overflow上找
我正在尝试使用 WrapPanel 和两个 TextBlock 将星号 (*) 附加到某些文本的左侧,允许文本换行,并强制文本右对齐。通过创建一个 FlowDirection 设置为 RightToL
这里是场景(简化):我在Window上有一个控件(比如说一个Rectangle)。我迷上了MouseMove事件,以使其启动拖放操作。然后在MouseDown事件中进行动画处理,向右移动50个像素。但
我有一个 ListView ,它的项目来源是一个列表。我希望用户只选择一项。当我将 listview 的 SelectionMode 设置为 single 时,用户仍然可以选择多个项目,并且似乎 li
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
INotifyPropertyChanged 的目的是什么。我知道每当更改属性时都会触发此事件,但是 View /用户界面如何知道触发了此事件: 这是实现 INotifyPropertyChang
我正在查看工具箱中的 WPF 组件,但找不到 2005/2008 中存在的错误提供程序。 被移除了吗? 最佳答案 ErrorProvider是一个 Winforms 控件。 WPF 中没有等效项。但是
我试图在单击和双击 wpf Image 控件时有不同的行为。不幸的是,单击首先被触发,因此双击被忽略。 最佳答案 如果您改用 MouseDown 事件,则它在 EventArgs 中为 ClickCo
这可能吗? 我使用了一个框架控件并且:显示(例如:showwindow.xaml) 但是我得到这个错误: root element is not valid for navigation 最佳答案 确
我在蓝色背景的窗口上放置了一个扩展器,我想让扩展器的按钮与默认颜色不同(蓝色,它是从窗口接收的)。当我修改扩展器的背景属性时,它会将整个扩展器、标题和全部更改为新颜色。但是,我只想更改按钮本身。谁能指
我是一名优秀的程序员,十分优秀!