Prism学习(9)阶段性总结

今天的这篇博客,是此阶段学习Prism的最后一篇。在今天使用Prism过程中,可能会再加上一些Prism使用的技巧或者对源码的学习。希望这些代码能够作为今天工作中的查阅资料,也希望这些博文可以帮到学习此框架的人们。因为现在还处于对Prism的学习阶段,并没有在实际的项目中使用。所以,如果有什么错误的地方,恳请各个拍砖和指正。

之前主要学习了Prism中的一基础知识,包括Unity, UnityContainer, Bootstrapper,  Shell, Region, View, Command, RegionManager, EventAggregator等类。通过之前的学习,我们可以方便的通过Prism框架创建并启动一个Shell. 创建和实现模块. 在Shell里面声明Region. 将View绑定到指定的Region中。通过以上的学习,使用我们了解了Prism框的工作机制。但在实现的使用中,以下的两个场景确并没有考虑到。

一,用户登陆之后,受到其权限的限制,只需要操作其中的部分模块。 显然,应对此种场景最好的方法是根据用户的权限,应用其权限策略动态的生成程序集清单。代码如下: 

1         return Microsoft.Practices.Prism.Modularity.ModuleCatalog.CreateFromXaml(
2             new Uri("modulecatalog.aspx", UriKind.Relative));

 上面代码中的modulecatalog.aspx是一个动态页面。能通过Session中的用户信息去应用权限策略,并动态生成程序集清单。当然,也可以通过一般性处理程序来实现,如: xxx.ashx。

二,当点击Shell中指定Region里的导航栏,在另一个Region中加载指定的View。直得注意的是,这是两个不同的Region,并且两个Region中的View可能并非来自于同一个 Module。不过还好,在Prism中提供了一个非常方便的方法还实现这些场景。

  首先,需我们在IModule的实现类中注册需要在Region中显示的自定义控件(Prism中称其为View)。 接着在导航栏模块中的Command实现里执行如下的代码即可:

1         regionManager.RequestNavigate("RegionName",
2             new Uri("ViewTypeName", UriKind.Relative));

 RequestNavigate 方法将向Prism请求类型名为:ViewTypeName的View,将其加载到名为RegionName的Region中。

Prism的主要作用是管理和调配系统中的各个模块,使他们在一个松藕合的体系中共同协作,完模块的使命。可以称其为战略级的; 至于各个模块内部,可以依据业务的需要,使用CSLA等框架实现单个模块的分布式开发及布署。 在此先称之为战术级的框架吧。呵呵!下一步,将要从战略级转到战术级。开始整理CSLA的相关学习心得。

 如果有说的得不对的地方,欢迎指正。 多多交流,共同进步。

 博客园分配的个人空间,只有100M。 容量太小,就不上传代码了!

原文地址:https://www.cnblogs.com/prolove2/p/2442897.html