Windows Phone 7上Silverlight的十大难题是什么?

时间:2010-08-23 13:25:53

标签: silverlight windows-phone-7

我一直在使用Silverlight,我正在学习Windows Phone 7.

当然,这非常相似。

但是,需要注意的首要问题是什么?

5 个答案:

答案 0 :(得分:26)

1)它是Beta / Pre-Release。在运输过程中内容可能会发生变化。请注意,您正在开发的API等可能会在现在和发布日期之间进行一些更改。将会有更多的未来之路;要切合实际,耐心等待你的期望。

2)对于Silverlight开发,它是Silverlight 3 ++而不是Silverlight 4.了解并了解Silverlight的边界和行为,然后关注SL3和SL4之间的差异。

3)导航与“常规Silverlight”类似但不同 - 您“有时”可能希望在常规Silverlight中导航的想法已合并,并假设您确实想要在电话中的页面之间导航。 (见here

4)尽管Panorama和Pivot控件/体验是设计建议的一部分,但这些控件尚未作为开发工具的一部分提供(有在线操作方法等,可用于制作自己的。)(更多here...

5)当您与外部服务进行交互时,您的应用程序正在放弃对其他应用程序的控制。没有用于“获取联系人列表”的API ...您启动了联系人选择器,然后在选择联系人时,您的应用程序将被重新唤醒并返回值。 (More

6)仿真器是有限的(缺少?)...不希望能够与仿真器中的任何硬件服务(GPS,加速度计等)进行交互。如果你想这样做,至少现在你需要一个真实的设备。

7)缺少仿真器......软件服务尚未通过仿真器提供。如果您的应用需要与某些集线器或其他软件工具进行交互(例如选择联系人),则它们不可用(至少没有“未锁定”模拟器。)

8)了解墓碑。您的应用程序可能会在运行中途被取消(如果用户点击“开始”按钮等),并且您确实有机会保存和恢复状态,则您有责任保存和恢复状态。 (More

9)了解推送通知。 (更多here

10)它是1.0。将会有更多的未来之路;要切合实际,耐心等待你的期望。

答案 1 :(得分:5)

我不知道10个陷阱,但这里有一些让我:

1)表现。到目前为止,这对我来说是最大的一个。这取决于应用程序,但在某些应用程序(尤其是数据繁重的应用程序)上确实很难。在涉及枢轴和全景的地方,事情变得更糟。数据绑定和基于XAML的模板都具有在小型设备上放大的性能成本。我在这方面看到的最大问题是人们从桌面上带来了“技能”。对移动开发不熟悉的人经常犯下将企业设计模式和框架应用于设备编程的错误。对于臃肿的框架和崇高的设计模式非常厌倦,这些东西旨在解决大型应用程序的复杂性问题,并不一定对像这样的小项目有帮助。你不需要一个完整的框架来做MVVM。

2)设备不兼容。目前只有少数WP7设备,这还不是一个大问题,但有一个地方我遇到了问题 - 三星SuperAMOLED屏幕。这些屏幕确实显示出16位色深显示的局限性,远远超过标准屏幕。如果你不小心你的颜色和渐变,它会导致非常可怕的色彩条纹。我在博客上写了here(附例)。

3)墓碑。根据您的应用程序,这可能是轻而易举或真正的麻烦。不要错误地将它留到开发结束进行测试。尝试并提前考虑它。

4)市场。尽早注册。不幸的是,恕我直言,Windows Marketplace是微软目前开发者应用程序故事中最薄弱的部分。我参与的超过一半的开发人员在注册时遇到了问题(包括我自己)。这是非常复杂的,似乎很容易出错 - 特别是如果你住在美国以外的地方。尽早开始注册过程,因为在过程结束之前您将无法解锁设备 - 即使Microsoft在开始时就把钱拿走了。

答案 2 :(得分:4)

当通过模拟器运行时,请注意模拟器将以您的开发机器的CPU速度运行,而不是以可能慢得多的物理电话的速度运行。您将不得不在某个时刻在真实设备上测试您的代码,以确保它的运行速度不会太慢。

答案 3 :(得分:3)

我的清单(目前为止):

  1. Silverlight可以轻松构建漂亮的应用程序。它还可以轻松构建非常丑陋的应用程序。花时间了解外观和应用程序的应用程序感觉就像电话的其余部分(ala "Metro")。
  2. 如果您还没有真正的设备,请找一个在其上运行并测试您的应用的人。在Twitter上询问@ wp7dev,为您提供在您所在地区拥有设备的MS现场人员的姓名。它们都运行程序,使开发人员能够测试应用程序。
  3. 阅读the WP7 performance whitepaper
  4. 如果您想使用ProgressBar,请阅读this article

答案 4 :(得分:1)

没有插座是我想到的一件事。没有本地存储是另一个。

更新:我的立场得到了纠正:没有数据库存储,只存在隔离存储。