none
silverlight框架选择 RRS feed

  • 问题

  • SILVERIGHT 4 的企业开发时,用什么框架呢??

    Prism吗?不知道有什么好处,缺点

    那MVVM呢???

    2011年1月15日 6:54

答案

  • Prism与MVVM并不是谁替代谁的关系,它们本来就是组合在一起用的(prism 版本4)。prism的目的是构建wpf/silverlight composite app(组合程序)。把一个程序分解成一个个独立的模块(Module),各个模块可以独立开发,独立测试。然后动态组装。就像一部汽车的各个零部件可以委托给其他不同厂商制造后拿过来组装一样。Modularity(模块化)是prism的核心。

    MVVM的核心是View的抽象。 也就是本来应用程序可以看作有两个部分:一个是数据(Model),另一个是展现这个数据的视图(View),那么MVVM(Model-View-ViewModel)在数据和视图之外又多个东西:ViewModel. 以我个人的感受是对待这个ViewModel要经常提醒自己它是视图的抽象。刚学MVVM时总是能看到很多示例是VM提供ObservableCollection<T>,ICommand供视图绑定,这样很容易忘记VM本质是视图的抽象这么一个感觉,向View提供数据,提供Command绑定是重要,但视图的抽象才是本质和目的。

    Prism的缺点我个人觉得就是你可能真的要花些时间才能好好应用。这可能因人而异吧,基础好的可能快些。

    有一点可能也是因人而异,学习Prism碰到的第一个障碍可能就是DI(Dependency Injection),就是依赖注入。Prism应用了大量的依赖注入。默认提供了二种DI Container: Unity和MEF. 就这种DI Container本身也是不小的学习量。就比如MEF,当你对MEF有了比较全面的了解后,比如对Recomposition, DeploymentCatalog等有了解后,对Prism的一些运作方式的理解会有帮助。

    再有可能碰到的困难就是怎样与时下流行的Silverlight + WCF RIA Services + Entity Framework的开发方式结合的问题。这种方式下怎样应用MVVM是个问题,再进一步怎样与Prism结合也是个问题。这方面我个人的一个感觉是RIA Services返回给客户端的EntitySet<T>实际上已经实现了INotifyCollectionChanged,INotifyPropertyChanged等接口,所以DomainContext在MVVM模式下起着很重要的作用,大多数情况下不必再使用ObservableCollection.

    这些是我个的人一些看法,仅供参考吧:-)

     

    2011年1月15日 14:47

全部回复

  • Prism与MVVM并不是谁替代谁的关系,它们本来就是组合在一起用的(prism 版本4)。prism的目的是构建wpf/silverlight composite app(组合程序)。把一个程序分解成一个个独立的模块(Module),各个模块可以独立开发,独立测试。然后动态组装。就像一部汽车的各个零部件可以委托给其他不同厂商制造后拿过来组装一样。Modularity(模块化)是prism的核心。

    MVVM的核心是View的抽象。 也就是本来应用程序可以看作有两个部分:一个是数据(Model),另一个是展现这个数据的视图(View),那么MVVM(Model-View-ViewModel)在数据和视图之外又多个东西:ViewModel. 以我个人的感受是对待这个ViewModel要经常提醒自己它是视图的抽象。刚学MVVM时总是能看到很多示例是VM提供ObservableCollection<T>,ICommand供视图绑定,这样很容易忘记VM本质是视图的抽象这么一个感觉,向View提供数据,提供Command绑定是重要,但视图的抽象才是本质和目的。

    Prism的缺点我个人觉得就是你可能真的要花些时间才能好好应用。这可能因人而异吧,基础好的可能快些。

    有一点可能也是因人而异,学习Prism碰到的第一个障碍可能就是DI(Dependency Injection),就是依赖注入。Prism应用了大量的依赖注入。默认提供了二种DI Container: Unity和MEF. 就这种DI Container本身也是不小的学习量。就比如MEF,当你对MEF有了比较全面的了解后,比如对Recomposition, DeploymentCatalog等有了解后,对Prism的一些运作方式的理解会有帮助。

    再有可能碰到的困难就是怎样与时下流行的Silverlight + WCF RIA Services + Entity Framework的开发方式结合的问题。这种方式下怎样应用MVVM是个问题,再进一步怎样与Prism结合也是个问题。这方面我个人的一个感觉是RIA Services返回给客户端的EntitySet<T>实际上已经实现了INotifyCollectionChanged,INotifyPropertyChanged等接口,所以DomainContext在MVVM模式下起着很重要的作用,大多数情况下不必再使用ObservableCollection.

    这些是我个的人一些看法,仅供参考吧:-)

     

    2011年1月15日 14:47
  • 多谢

    再多问一句,那什么情况下建议使用Prism呢

    2011年1月16日 6:08
  • 简单讲就是复杂的应用吧。一个主程序加上多个模块,看ClientBin目录就是主程序的xap文件和多个模块的xap文件,模块的xap文件可以在运行时动态按需下载,以减少主程序的启动时间。
    2011年1月16日 7:12
  • 那用MEF不也一样,为啥要用Prism。因为了解下来觉得Prism有点复杂。而且似乎在一般的开发上用处不大。除非我有30名以上开发人员的项目。

    2011年1月17日 7:44
  • 那用MEF不也一样,为啥要用Prism。因为了解下来觉得Prism有点复杂。而且似乎在一般的开发上用处不大。除非我有30名以上开发人员的项目。

    不至于说得这么夸张吧,呵呵。就比如WPF本身和Prism相比,那还是Prism简单,asp.net也比Prism复杂许多。公平地讲,说Prism复杂,对她太不公平了:-)
    2011年1月18日 0:55