基于ASP.Net的热插拨Web框架——理论篇

园子里已经有网友谈论过基于.Net的热插拨Web框架实现,我的方法与之不同。这里记录下来,有兴趣的网友可以看看。

一 设计该框架的缘由和难处

设计这个框架的原因是我想要构建一个类似wordpresss这种能够方便启用、禁用插件和主题的Web应用。Wordpress是一个广受欢迎的博客应用。通过使用wordpress,一个新手也能够快速的搭建一个博客或者网站,用上各种各样的自己需要的插件——从seo、社交媒体账号登陆到后台管理应用插件,再配上好看的主题,只需要几个步骤,你就能够拥有一个时尚并且紧跟潮流的网站。

ASP.Net下面已经有插件化的程序。Orachard、DotNet Nuke是其中比较好的例子,但是我希望能够构建一个支持在线编辑插件、主题的Web应用,同时这些插件和主题能够完全的用ASP.Net页面或者.Net实现——不限制于特定的模板语言、渲染引擎或者只有单纯的html和javascript。

ASP.Net本身确实已经有主题这一概念,但是其实现方法太过僵硬,要灵活的表现不同的页面还是存在一定的困难。

要实现类似wordpress这样的应用,首先要有支持完整的ASP.Net功能的插件和主题,仅靠特定的模板语言和html总是限制太多;其次,插件和主题应该能够无缝的集成,彼此间可以相互独立也可以相互依赖,切换插件和主题都不影响页面最后的正常渲染;最后,类似wordpress,提供一个中心化的插件和主题服务器,所有插件和主题能够一键升级。

实现这么一种程序,主要问题在于

1. 插件的实现与结合——插件的实现要尽可能自由、各种类型的请求都可以处理、请求结果的渲染、能够随心所欲的在插件间和插件与Web应用间进行数据沟通

2. 如何管理插件——怎样加载和启用插件才不影响当前Web应用、插件的发布和升级

3. 主题化——主题页面完全用ASP.Net实现、主题的管理

4. 其它——配置的支持、多语言支持、动态编译支持、源代码的管理、安全、性能

头有点大,要说的东西好像有点多,放着,慢慢更。最后的目标是一个类似wordpress的.Net实现。

路漫漫其修远兮,吾将上下而求索。

时间: 2024-08-06 07:54:55

基于ASP.Net的热插拨Web框架——理论篇的相关文章

net搭建热插拔式web框架

net搭建热插拔式web框架(重造Controller) 由于.net MVC 的controller 依赖于HttpContext,而我们在上一篇中的沙箱模式已经把一次http请求转换为反射调用,并且http上下文不支持跨域,所以我们要重造一个controller. 我们在写mvc项目的时候经常会用到ViewBag.ViewData,那我们就先声明这两个变量: 1 2 public dynamic ViewBag = new DynamicViewBag(); public ViewDataD

net搭建热插拔式web框架(沙箱的构建)

net搭建热插拔式web框架(沙箱的构建) 上周五写了一个实现原理篇,在评论中看到有朋友也遇到了我的问题,真的是有种他乡遇知己的感觉,整个系列我一定会坚持写完,并在最后把代码开源到git中.上一篇文章很多人看了以后,都表示不解,觉得不知道我到底要干什么,可能就像隔行如隔山吧,就像做移动端开发的人很少去考虑分布式中的通信一样.大家都知道模块化,但模块化的思路有很多,我的只是其中一种,也许你看到最后会觉得这种思路在经过不断地演化后会成为一种很好的解决方案,当然这离不开以后大家对代码及思想的贡献. 好

第五篇 基于.net搭建热插拔式web框架(拦截器---请求管道)

好了,前边我们把核心内容介绍完了,接下来要做的就是拦截用户的请求,并把请求转向沙箱内. 这里我们准备通过实现一个HttpModule类来完成请求的拦截与转发.新建一个HuberHttpModule类,并继承IHttpModule.下面我们暂时只处理Application_BeginRequest事件. 先获取request和response对象 HttpApplication application = sender as HttpApplication; HttpResponse respon

Grizzly NIO框架 理论篇 【2】

Transports and Connections 这两个东西,是灰熊框架的核心结构~Transports工具包含有TCP或UDP的协议,合并各种组件资源(Thread-Pool 线程池.Memory Manager 内存管理器等等. 从结构来说,没什么东西,主要还是使用上 1.使用Future模式建立Connection Future<Connection> clientConnectionFuture = tcpNioTransport.connect("grizzly.jav

Grizzly NIO框架 理论篇 【3】

Transport Configuration (Transport 的 配置) 我们先从一个简单的创建开始: final TCPNIOTransportBuilder builder = TCPNIOTransportBuilder.newInstance(); final TCPNIOTransport transport = builder.build(); 这样就创建了一个Transport,如果我们想建立服务端,接下来就是绑定端口和开启服务: final TCPNIOTransport

【转载】从头编写 asp.net core 2.0 web api 基础框架 (1)

工具: 1.Visual Studio 2017 V15.3.5+ 2.Postman (Chrome的App) 3.Chrome (最好是) 关于.net core或者.net core 2.0的相关知识就不介绍了, 这里主要是从头编写一个asp.net core 2.0 web api的基础框架. 我一直在关注asp.net core 和 angular 2/4, 并在用这对开发了一些比较小的项目. 现在我感觉是时候使用这两个技术去为企业开发大一点的项目了, 由于企业有时候需要SSO(单点登

从头编写 asp.net core 2.0 web api 基础框架 (1)

原文:从头编写 asp.net core 2.0 web api 基础框架 (1) 工具: 1.Visual Studio 2017 V15.3.5+ 2.Postman (Chrome的App) 3.Chrome (最好是) 关于.net core或者.net core 2.0的相关知识就不介绍了, 这里主要是从头编写一个asp.net core 2.0 web api的基础框架. 我一直在关注asp.net core 和 angular 2/4, 并在用这对开发了一些比较小的项目. 现在我感

.NET Core第三方开源Web框架YOYOFx

YOYOFx框架 YOYOFx是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台. 本着学习的态度,造了这个轮子,也是为了更好的了解各个框架的原理和有点,还希望可以和大家多交流 . GitHub:https://github.com/maxzhang1985/YOYOFx YOYOFx是支持Owin协议的MVC框架,基于NETStandard1.6和NET451编译,完美支持在Core和full framework(如.net framework 4.5x或

web框架的本质

一 web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响应,按照http协议的请求协议发送请求,服务端按照http协议的响应协议来响应请求,这样的网络通信,我们就可以自己实现Web框架了. 通过对socket的学习,我们知道网络通信,我们完全可以自己写了,因为socket就是做网络通信用的,下面我们就基于socket来自己实现一个web框架,写一个web