Modularity QuickStart学习

 创建及运行QuickStart:运行文件WebClientFactorySourceInstall.msi. 

QuickStart包含以下模块:
1.名字为Customers的business module:包含了实现customer审核流程的2个view;
2.名字为shell的business module:提供全局网页的实现,全局网页时那些驻留在网站根目录的的页面,例如Default.aspx,这个模块包含网站可视的风格,还注册了2个全局服务:ISiteMapBuilderService、IAuthorizationService
3.名字为Navifation的foundational module:该模块注册RedirectNavigationService服务。应用程序使用该服务进行页面间的导航;

Customer 模块使用INavigationService 服务来进行view之间的导航,customer模块与navigation模块有依赖关系,Customer模块页还使用shell模块的ISiteMapBuilderService 来注册网站地图节点,即与Shell模块也有依赖关系,从以下 customer solution web folder中的web.config就可看出:
 

<modules>
  <module name="Customers" assemblyName="ModularityQuickstart.Customers" virtualPath="~/Customers">
    <dependencies>
      <dependency module="Shell" />
      <dependency module="Navigation" />
    </dependencies>
  </module>
</modules>

   
Shell及其他foundational module没有自己的.config文件,他们在web.config中注册定义。
<compositeWeb>
 <modules>
  <module name="Shell" assemblyName="ModularityQuickstart.Shell" virtualPath="~/"/>
  <module name="Navigation" assemblyName="ModularityQuickstart.Navigation"/>
 </modules>
</compositeWeb>

以下代码将 RedirectNavigationService 注册为全局service:
 

protected virtual void AddGlobalServices(IServiceCollection globalServices)
{
    globalServices.AddNew<RedirectNavigationService, INavigationService>();
}

 Customers module 中的CustomersController 类使用ServiceDependency 特性来获取  INavigationService的一个引用:

public CustomersController([ServiceDependency] INavigationService navigationService)
{
    _navigationService = navigationService;
}
Note:CustomersController  类不引用INavigationService 的具体实现,ObjectBuilder提供该接口的实例。这样的话就很容易替换服务的实现。

Customer模块使用ISiteMapBuilderService 注册网站地图节点:
 

protected virtual void RegisterSiteMapInformation(ISiteMapBuilderService siteMapBuilderService)
{
    SiteMapNodeInfo moduleNode = new SiteMapNodeInfo("Customers", "~/Customers/ApproveCustomerView.aspx", "Approve Customer");
    siteMapBuilderService.AddNode(moduleNode);
}

你可能感兴趣的:(职场,休闲,quickstart,Modularity,wcsf)