首页 新闻 搜索 专区 学院

Webform UI层的扩展问题

1
悬赏园豆:100 [待解决问题]
有一个问题一直被困扰,有谁做过Webform UI层的插件扩展,希望有这方面经验者给些建议。
 
我们现在使用WEBFORM,做一个高度扩展性的平台化产品,打算开发一个UI层的插件扩展体系,要求扩展开发时不能修改和覆盖一次开发的aspx页面文件,也不能直接修改后台的C#代码(因为不打算提供一次开发源码给二次开发人员),只能在后台通过MEF(微软一种插件技术)或XML配置文件动态找到二次开发的DLL,并反射动态添加界面组件或修改已有的界面实现界面的定制。
 
这种方案用服务器控件,用ViewState保持状态,尽量避免二次开发使用CSS、HTML、Javascript,这样二次开发几乎全部可以在后台完成,减少二次开发的难度。为了减少页面大小,减少传输量,我们将ViewState不保存在页面中,而是保存到内存中(另外的分布式缓存服务器)。这种方法基本倾向于在后台开发而不是前台,而且使用ViewState保持状态,性能会有所损失,但是我们需要这种扩展性。
 
但是存在一个问题,如果一个页面A的某个界面部分B是在页面A上点击某按钮(按钮click事件)动态通过后台的MEF动态创建和插入的,再下次页面被Postback后,这些动态添加的界面不能在后台的组件树中恢复,Render出来的页面动态添加的部分就不见了。为了解决这个问题,许多人在Page_Load中重新创建这些动态添加的组件,解决某个具体问题看起来可以,但是对于通用的插件体系来说就不优雅了,因为PageLoad事件中不知道点击过哪些按钮,曾经动态添加过哪些组件,如何动态重新创建这些组件呢?
 
另外webform,服务端页面我能自己缓存吗?比如页面首次加载以后就放到缓存中,如果Postback就直接恢复到内存中,而不是每次重新加载静态aspx页面文件,执行PageLoad,恢复ViewState这个过程。
 
冰绿茶——的主页 冰绿茶—— | 初学一级 | 园豆:6
提问于:2012-05-10 11:38
< >
分享
所有回答(2)
0

学习!我也在考虑这方面的问题。

无之无 | 园豆:5085 (大侠五级) | 2012-05-11 15:42
0

什么叫“服务端页面”?aspx那只是个page类的子类的子类......

用服务端控件,不好控制

丁码农 | 园豆:437 (菜鸟二级) | 2012-05-13 20:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册