拥抱新的.Net开发框架,WPF开发者如何向.Net迁移

ArcGIS Runtime 10.2版本中,将WindowsPhone 、WindowsStore以及WPF三大SDK整合成了一个全新的SDK——ArcGISRuntime SDK for Microsoft .Net Framework,简称.Net SDK,同时现有的WPF SDK可以继续使用,但后续会停止更新。因此,Esri建议WPF开发者们向.Net阵营迁移。

顾名思义,新的.NetSDK面向微软的.Net框架,以前的WPF、Windows Phone以及Windows Store平台的开发者们无需再分别下载安装包,直接下载.Net SDK就可以搞定。如何入手新的SDK?WPF已有的开发经验在新的SDK中适用吗?WPF项目如何迁移?本博文将为你提供几个超级实用的tips。

开发者们第一个关心的问题可能是,我在WPF开发中积累的诸多经验和技能,是否能用在新的平台中?答案是很鼓舞人心的,那就是.Net SDK开发的技巧与WPF非常接近,你甚至可以将.Net SDK中的Windows Desktop API看成是对现有WPF API的升级,它们拥有许多相同的概念,甚至许多实际的类和类成员的名字都一样。不过,.Net SDK毕竟是基于最新的.NET框架,并加入了许多最新的或者流行的模型和实践在里面,比如MVVM模型和异步处理任务模型等,这意味着它们之间也有些小区别。

第二个可能关心的问题是,我需要将我现有的所有WPF项目都迁移到.Net平台上吗?答案也许是不用。迁移会导致一些问题,你必须单独考虑每个app,,评估它们是否要用到新平台中的一些新特性。那些无需使用新特性的app无需迁移,直接使用现有的WPF API即可,我们在未来一段时间仍会继续对现有的WPF SDK提供技术支持,帮助大家解决功能、性能及与ArcGIS的兼容性等问题。

如果app需要使用到新特性,那么最好的办法就是进行迁移。以下是一些实用的迁移方法,让大家可以更加方便的从10.2的WPF SDK迁移到.Net SDK下。

1、使用加速显示模式1)何为加速显示?

在现有的WPF SDK中,你可以选择使用GIS技术进行优化了的地图渲染引擎,来显示整个地图,或者只显示某个图层的特定子图层,这种渲染引擎被称为“加速显示”。尽管它也可以用来渲染其它的业务图层或者底图,但是用它来展示海量的graphic或者feature是再好不过的了。在所有的ArcGIS Runtime SDK中都有这个地图渲染引擎。在新的.Net版本中,地图被重新设计,使用了高性能的“加速显示”渲染模式来渲染整个地图。

2)我如何使用加速显示?

想采用“加速显示”来渲染整个地图需要用到Map类的UseAcceleratedDisplay属性,这是推荐的途径,相应的,可以使用AcceleratedDisplayLayers group layer实现对图层的特定子图层使用“加速显示”渲染,任何位于该grouplayer下的图层都将使用“加速显示”渲染技术,但是记住,你只能在map中添加一个AcceleratedDisplayLayers实例。

<esri:Map x:Name="MyMap" WrapAround="True">

<esri:ArcGISTiledMapServiceLayer ID="MyLayer"

Url=""/>

<esri:GraphicsLayer ID="MyGraphics" Renderer="{StaticResource MySimpleRenderer}"/>

</esri:Map>

使用了UseAcceleratedDisplay属性:

<esri:Map x:Name="MyMap" UseAcceleratedDisplay="True" WrapAround="True"> <esri:ArcGISTiledMapServiceLayer ID="MyLayer" Url=""/> <esri:GraphicsLayer ID="MyGraphics" Renderer="{StaticResource MySimpleRenderer}"/></esri:Map>

3)为何加速显示模式不是WPF SDK的默认渲染模式?

这是因为,在我们将ArcGISRuntime组件加入到WPF API,并将其发布成为ArcGIS Runtime SDK for WPF之前,WPF API已经是一个独立的产品了,已经不能很好的立即集成加速显示模式,因此我们在WPF中提供了两种渲染模式(WPF原有的普通模式和新的加速显示模式),并将加速显示模式设置为可选的而不是默认的。

4)WPF SDK中使用加速显示会有哪些问题?

)。而新的.Net SDK使用的是优化了的ArcGISRuntime地图渲染引擎,因此不支持自定义的XAML符号,还有其它的图层和子图层类型不支持加速显示渲染(具体请参见),不过大部分都是支持的。另外新的SDK中提供了CompositeSymbol复合符号类型,用户可以通过它来创建自定义的符号。

2、异步处理使用WPF SDK 10.2支持的任务模型1)什么是基于任务的异步处理模型?

编写高性能、响应快的应用程序需要使用基于任务的异步处理模型来应对耗时操作,或者是在单一线程里同时运行多个操作的情况也需要使用到它。管理多线程是件复杂的事情,因此,.Net 4.0中,微软引进了Task(任务)模型来简化多线程应用程序的处理,使得开发者可以使用.Net Task来异步执行代码而不需要去管到底是哪个线程在执行任务。Task同时也提供了许多极好的控制方式,来监听执行失败和执行成功的情况,使得它使用起来非常方便:你只要等待任务执行完成即可。当有多个Task需要执行时,需要明确它们的执行顺序,或者可以等待所有Task都执行完毕后再执行某段代码。C# 5.0版本中更是提供了“async”、“await”等关键词来简化Task的使用。有关async task的更多内容请参考AsynchronousProgramming with Async and Await。

2)在WPF API中这些Task都藏在了哪里?

表示

3)我如何使用新的异步处理方法?只有一条路不能拒绝——那就是成长的路。

拥抱新的.Net开发框架,WPF开发者如何向.Net迁移

相关文章:

你感兴趣的文章:

标签云: