看起来,Silverlight/WPF是使用.NET进行用户界面开发的长期未来。这很棒,因为我可以看到在客户端和Web开发方面重用XAML技能的优势。但是看着WPF/XAML/Silverlight,它们似乎是非常庞大的技术,那么从哪里开始最好呢?
我想听听那些对两者都有很好了解并且能够推荐哪个是更好的起点以及原因的人。
看起来,Silverlight/WPF是使用.NET进行用户界面开发的长期未来。这很棒,因为我可以看到在客户端和Web开发方面重用XAML技能的优势。但是看着WPF/XAML/Silverlight,它们似乎是非常庞大的技术,那么从哪里开始最好呢?
我想听听那些对两者都有很好了解并且能够推荐哪个是更好的起点以及原因的人。
您应该先学习ASP.NET还是Winforms?ASP还是MFC?HTML还是VB?C#还是VB?
暂且不管现在已成为高度复杂技术交织的逻辑进展,退一步想想以下问题:
接下来,也是最难的一步,是要接受任何给出的建议都很可能是错误的。给出的建议时间跨度越长,错误的概率越大。如果建议超过六到十二个月,那么建议极有可能是完全错误的。
我只能快速地告诉您我的故事。在2000年,我作为一个咨询顾问,在Windows应用程序中以C++盈利,并写有关ASP.NET和WinForms的文章。然后我看到了C#,世界翻转了。我再也没有回头。
两年前,我有了同样的领悟,只是更大、更强烈,并对Silverlight有更多的信念。是的,WPF很了不起,也许我对此一无所知,但我从内心深处相信Silverlight改变了一切。当时毫无疑问,今天仍然如此,Silverlight是自.NET以来(肯定)甚至可能是自转向C ++以来,微软最重要的开发平台。
简单来说,原因在于我不明白它的局限性在哪里。对于大多数平台,我都清楚:您可以这样做,但不能那样做。WPF是一个很好的例子,ASP.Net和WinForms也是如此,实际上直到现在的所有内容都是如此。
无论如何,目前来说,学习Silverlight非常有趣,Silverlight.net网站上有很多材料,而最好的学习Silverlight的事情是,如果您找不到所需内容,您可以联系我,我会确保您很快得到它。
享受,祝你好运,而肮脏的小秘密是,无论你选择哪个,你都会很好。这只是软件而已。
- 杰西·利伯蒂(Jesse Liberty) “Silverlight极客”
我建议先学习Silverlight!
我之前曾经用过WPF和Silverlight编程。
但由于Silverlight是WPF的一个子集,如果你深入了解WPF,然后尝试切换到编写Silverlight应用程序,你可能会为那些你在WPF中学会并且喜欢的"标记"而感到困惑,因为它们在Silverlight中不可用。
当你先掌握Silverlight的基本技能时,WPF中的额外机制/触发器/其他特性将简单地添加到你已经掌握的大部分内容中。
Silverlight和WPF之间的区别在功能级别上,而不仅仅是一些缺少控件或动画。例如,WPF触发器机制在Silverlight中无法完全使用。
因此,先学习较小的子集,您可以随后扩展该知识到完整的集合中,但如果您从完整的集合开始,并且对某些可用的好处上瘾,那么当有人要求您将基于WPF设计的应用程序移植到Silverlight时,您将面临麻烦。
我会违反潮流,建议先学习WPF。
我的理由如下:
有比Silverlight更多的资源可用,例如书籍、博客和msdn文档
您不必处理Beta版本或移动目标
您不必仅使用异步调用来处理工作
不受缺少功能的限制,例如Merged Dictionaries、Triggers、TileBrushes等
您不必担心因为SL中缺少功能而重新学习正确的操作方式
我建议先学习XAML,可以通过阅读一些教程并在XAMLPad上进行实践来掌握基础知识,这样在实际构建应用程序之前就能有所感悟。
我建议从WPF开始,做简单的控件熟悉样例。你的目标应该是学习XAML和绑定。所以,如果你只创建一些基本的WPF窗口应用程序,将会提高你的学习速度。最后你可以转向Silverlight。正如其他人在这里提到的,Silverlight是WPF的一个子集。
嗯,这取决于你将要做什么。如果你在做客户端/服务器,那么我会选择WPF。如果你在一个可以保证所有机器上都安装了.Net的环境中工作,那么我也会选择WPF,因为你可以使用所谓的XBAP,这是一个通过浏览器运行的WPF应用程序。
真的取决于你。但是,我要声明silverlight尚未RTM,而WPF已经完成了。有很多关于WPF的书籍,而没有关于silverlight的。通过阅读其中几本书,可能更容易理解WPF的整个基础,并深入研究你想玩的任何一款技术。
只需记住,silverlight具有WPF的子集控件,精简的.Net框架,并且不支持同步调用。只要你提前知道这些,你就可以开始学习整个基础并根据自己的实际体验选择最适合你的技术。