Shi*_*mmy 17 .net silverlight wpf windows-runtime
我从未在WinRT中实际构建过应用程序(也不是HelloWorld),而且我非常怀疑.
我的问题是,WPF/Silverlight中是否存在WinRT中不存在的功能(不包括按设计实现的功能不同)?
这些方面对我来说是最重要的,也是我问题的核心,在结果中,决定是开始使用WinRT还是等待它们实现:
DatePicker等? 我不清楚WinRT是否完全针对.NET或它是如何工作的.
此外,WinRT是仅客户端(如WPF)应用程序还是可以在服务器(如Silverlight)上运行在远程客户端上?
另一个:如果我开发WinRT应用程序,向后兼容性如何,它是否能够在Win XP上运行?
我无论如何都无法理解为什么MVVM没有集成内联,并且像MVC一样具有无缝的IDE支持.但这只是一个侧面说明.我不能在没有MVVM的情况下使用XAML,任何比hello世界更大的应用程序都更容易使用MVVM.
正如我对答案的评论,我确实喜欢WinRT的设计,但在我了解上述特定技术(EF,WCF-RIA +验证,MVVM,SDK和工具包)之前,问题仍然没有解决.显然,我不会开始销售WinRT应用程序或深入研究它,直到我拥有上述技术.
结论,作为他的大部分工作是LOB应用程序的人,经过一番检查后,HTML5 + JS远不是SL的替代品.总而言之,我坚持使用SL并继续向我的客户推荐它.SL占用最少的开发时间,并且没有bug.与C#相比,Javascript是一种容易出错的错误语言,没有模式,也没有坚果.
一旦WinRT完全支持EF + RIA + Prism + Toolkits,我将考虑将我的LOB应用程序用于城域网.
Ric*_*ner 32
WinRT基本上是包含一堆Win32 API的COM对象的集合,公开为CLI兼容的程序集.
Microsoft修改了他们的C++编译器以使用和生成ECMA 335(即CLI)元数据,而不是更传统的(主要)C++/COM-only 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将非常熟悉.在设计WinRT时,Windows团队实际上寻求.NET Framework设计团队的帮助和指导,因此在过去11年中引导整个.NET框架团队和大多数.NET社区的相同设计指南已应用于WinRT API.
坦率地说,WinRT很漂亮:)
WinRT的主要影响是它用类似的API取代了System.IO的文件,网络,流IO类,但它们只支持异步IO.这意味着,除非您采取明确的步骤,否则在等待通过网络调用文件系统或外部系统时,您将无法编写阻止线程的应用程序.
这是一个好东西.
幸运的是,新的异步/等待C#V5和VB.NET v.next的功能,具有对C的具体支持沿++意味着你不必去从根本上改变你如何在这个新的世界异步写代码 - 通常你只是需要为调用异步API的方法签名添加"async"关键字,然后使用'await'关键字为每个异步API调用添加前缀.
我强烈建议你观看Anders Hejlsberg的会议,这会使整个事情变得非常清楚.当你在那里,我也鼓励您观看几个其他// BUILD会议上,尤其是哈利皮尔森的使用WinRT中使用C#和VB.NET的谈话和的Mads'的会议在C#和VB异步变得简单.
我还建议您看一下几周前我写博客的改进的Win8/WinRT平台架构图,这应该会让事情变得更加清晰.
至于.NET本身,正如我在上面的帖子中阐述的那样,.NET并没有"消失".虽然WinRT应用程序中将禁止使用一些.NET API(即阻止IO API),但您依赖的大多数API仍然是完全可访问的.
关于Silverlight:Silverlight是一个浏览器插件.它是WPF的修改子集,并提供了一些非常强大和有吸引力的功能.事实上,Silverlight XAML引擎已经转移到核心Windows团队中,并且用于Windows8中的大部分Metro UI渲染 - 甚至是操作系统本身!
最终的结果是,除了更改一些"使用"命名空间之外,大多数Silverlight代码都可以运行得很好而几乎没有任何修改.
有很多来自BUILD的XAML聚焦会议可供观看.
关于向后兼容性,旨在:
坦率地说,我不认为微软的工作就是为每个场景编写每个框架.有各种各样的pro和con的人在野外有几种MVVP方法/框架.如果你没有找到一个然后创建一个并将其粘贴在GITHub上并成名;)
不过,最重要的是,你几乎没有停止下载和试用Win8 Consumer Preview和Dev11 Beta.去拿他们试一试 - 我想你会发现它们非常清爽:)
HTH.
更新#1以回答对EF,WCF等的特定支持:
您可以在此处找到详细列出的WinRT API表面区域.该核心WCF API的都列举在这里.
但请注意,Microsoft强烈建议不要使用网络通讯在Metro应用程序与同一台计算机上的其他城域应用程序或桌面应用程序/服务之间进行通信.阅读这个问题和凯特格雷戈里的答案 - 她链接到一个视频,详细讨论了这个场景.
如果您想与远程网络服务进行通信,那么您有多种选择,包括WCF,套接字等.
关于RIA:微软目前表示,如果你想要数据,你需要通过服务而不是直接从数据库获取数据.Metro没有ADO.NET,建议通过OData,JSON,XML/HTTP等来表示数据.数据即服务是一个非常RIA的场景,所以我希望RIA能够得到Metro应用的良好支持.这是关于这个主题的BUILD会议,可能会有更多的亮点.
只有您可以判断WinRT是否支持您的特定方案.我认为你最好的选择是下载比特并开始探索.
P&P更新后的路线图和指南更新2:P&P最近发布了一个新的路线图和指南,用于构建Windows RT/Windows 8"商店"/"现代"LOB应用程序.
本指南包括对Prism/Kona的更新,还包括EntLib6和Unity3(IoC).我鼓励任何对这个领域感兴趣的人研究出版的材料和参考应用程序 - 那里有一些很棒的东西:)
| 归档时间: |
|
| 查看次数: |
8705 次 |
| 最近记录: |