您的位置:首页 > 其它

【蛙蛙王子】wawaCRM项目表示层框架设计思路

2005-10-16 11:36 393 查看
  【蛙蛙王子】wawaCRM项目表示层框架设计思路
  为了支持wawaCRM,国庆节期间我重新看了一下《asp.net企业应用高级编程》,收获颇多。我会把里面的一些思想和设计模式推广到wawaCRM项目的。《asp.net电子商务高级编程》里的CMP架构正在推广应用到wawaCRM项目里,但是还有一些值得改进的地方,我已经列举了一下改进方案,征求意见后就可以改进它了。
  前几天从china-pub订购了一本《asp.net 2.0大揭密》,已经看了一半了,确实有一些很重要的改进对我们的项目很有好处,里面的设计思想很重要,整个表示层框架设计的很合理,我看过java那边的一些表示层框架,感觉.NET在这方面不如JAVA考虑的全,但是自从了解了一些ASP.NET 2.0的东西后感觉ASP.NET 2.0的改进确实挺符合需求的,这为我们开发wawaCRM项目的表示层提供了便利,尤其是ObjectDataSouce,Mast Page,Theme,和Profile是表示层和业务层之间的交互更加透明,而且使形成统一风格的UI更加方便,加上wind开发的基于处理集中请求并集成了安全角色管理的门户框架,我想我们的表示层框架将更好用。另外ASP.NET 2.0提供的一些新的控件也很好用,我们会在项目中使用它们,和一些第三方表示层控件。
  我来谈谈,我对表示层设计的看法。我们可以设计一个和《asp.net企业应用高级编程》里的应用程序浏览器类似的一个框架,不过那本书做的使类似SmartClient的桌面程序,我们做的这个浏览器可以使用MastPage来做,然后呢,最上面是主要按钮,中间左侧放置树型菜单,这个菜单在用户登陆后使用Profile和角色管理来确定,最下面为版权和状态显示部分,中间右边呢,是个大的容器,用来放主要内容。我们可以开发各个应用程序模块,然后利用反射来动态装载到MastPage的主容器里,为了让我们的应用程序模块可以方便的和MastPage框架交互,我们让MastPage和我们开发的程序模块都实现一定的接口和基类,通过他们来达到交互,比如说在装载了一个新的模块后,需要更改网页的Title,还有更新状态显示,页面主标题,菜单选项等,而这些都是在MastPage里,所以要把这些都暴露成属性以方便模块和它交互,这样我们肯定得让MastPage实现某个接口。具体的实现可以参考《asp.net企业应用高级编程》里的设计,我会重新开贴进行说明的。
  然后呢,用户可用的功能呢,是通过一个web服务来获取的,这些web服务里有新开发模块的类型名,所需要的角色,程序集的位置等等,我们在用户登陆的时候根据这个web服务来获取可用的功能并通过反射和.NET的自动部署来装载模块,并把模块在MastPage的主容器里呈现,这样我们新开发一个模块,只要把DLL放在制定的地方,然后修改一下这个WEB服务就可以了,客户会即时的获取这些新功能,当然这部分又要用一系列接口和基类来约束规范web服务和子程序的成员。
  另外关于表示层如何做基于角色的安全性检查和基于元数据定义UI等领域的问题我还没有考虑成熟,不过安全检查我感觉表示层用一个checksecurity(user,role)就判断是否有使用权限,然后根据返回的bool值来重画UI就行了,然后在业务层的真正执行持久操作和业务操作的地方用assertsecurity(user,role)来防治有些没有权限的人突破表示层的限制而直接操作业务层,进一步提高安全性。其它的我想不用设计的特别复杂,asp.net 2.0里的sitemap,loginview等控件都直接对基于角色的安全性做了支持,我们都可以直接使用。而基于元数据的ui,我想复杂度比较高, 不太容易实现,因为如果你只简单的实现一个XML驱动的UI毫无任何意义,就用一个XML处理类加载XML元数据并用stringbuilder拼接输出html的UI就行了,这很简单呀,做个自定义服务器控件就行,关键是还有对UI数据的验证,保证控件的通用性,如何支持设计试图,如何用CSS更改其外观等就比较复杂了,或者我们可以针对元数据写一个通用的XSLT文件也可以把元数据转换成UI,而元数据必须符合一个特定的Schema或者DTD文档,这里面需要太多的需要约定的合同和契约,简直是越想越复杂。我也看到过一些自动化工具,直接写一个XML元数据文件,点击一个按钮就自动生成数据库,CRUD的业务逻辑,以及相应的UI,并且CRUD逻辑甚至可以手工干涉和指定一些行为,以控制代码的生成,UI也可以自己配置CSS和XSLT来控制显示,但是我不会用这些工具的,太自动化了,以至于我们有时候插不上手了都。
  先说这么多,下午我去电脑城搬电脑去,以后我就有自己的电脑了,sy1g/256m/40g/15",感觉开发也凑合能用了,可惜我的那个小屋没有多余的桌子了,就有一个桌子放了电视了,我还得想法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: