开源项目 aspnetcdn 是一个用Asp.Net打造的可用编程扩展的CDN服务器模型
2014-11-16 13:12
751 查看
开源项目 aspnetcdn 在2014年11月启动. 今天完成了最基础的版本 v0.1
关于CDN是什么, 可以看百科 http://baike.so.com/doc/5369544.html
它几乎集一切强大的优点于一身.
那为什么还要做一个 aspnetcdn ?
因为虽然很多cdn软件很强大. 但是代码也相对复杂.
aspnetcdn的目标并不是要实现强大的cdn软件, 而仅仅是出于教学的目的.
最初的版本v0.1 , 仅仅只有5个cs文件, 共800行不到的代码.
执行的顺序非常简单直接. 是新手学习的最佳材料.
最新下载地址 : http://homehttp.com/downloads/redirect.aspx?type=aspnetcdn
需要ASP.NET 2.0或以上的版本, 不支持IIS的Classic经典模式. (请设置成集成管道模式)
这是一个VS2012的项目. 如果你没有VS2012, 没关系, 把'aspnetcdn-web'的内容部署到IIS上也可以运行.
手动把代码提取出来然后重新整理项目和编译很容易.
开发人员, 根据当前请求的Request.Url,QueryString,Cookies,ServerVeriables等属性的判断,
然后允许指定目标服务器, 修改URL,修改HOST名字,
最终实现让aspnetcdn当前所部署的网站, 分别从任意个服务器外去获取内容.
一个网站 '/' 下有一个子程序 '/console/' , 但子程序收到网站根目录下/web.config 的影响而无法部署.
这个时候可以把/console/部署为http://127.0.0.2/console/ , 在网站 '/' 上安装 aspnetcdn,
检测如果请求路径包含/console/的话,就重定向到http://127.0.0.2/console/上去
模型2:
一个云OA服务, 有很多台WEB服务器. 但是服务器的缓存非常占空间而且低效.
原因是客户A的多个用户访问服务的时候, 经常被负载平衡分配到不同的服务器上去.
导致几乎所有服务器, 都包含了客户A的缓存数据.
解决办法:
通过用aspnetcdn做转发, 探测COOKIE, 如果CustID=A, 那么就固定转向到服务器1上. 其他客户如此类推.
这样每个服务器都会运行特定的客户群, 互不干扰. 性能得到大大地提升.
即使做到后期, 由于基于Asp.Net的模型, 性能也不会好到哪里去.
但它的扩展方案的确是很容易学习和编程.
所以如果你重视的是业务模型, 而不是只考虑用最省的方法去搭建CDN, 那么aspnetcdn是合用的
Powered by homehttp.com
关于CDN是什么, 可以看百科 http://baike.so.com/doc/5369544.html
为什么要做aspnetcdn ? 为教学而生
目前世界上最流行的CDN软件是大名鼎鼎的nginx它几乎集一切强大的优点于一身.
那为什么还要做一个 aspnetcdn ?
因为虽然很多cdn软件很强大. 但是代码也相对复杂.
aspnetcdn的目标并不是要实现强大的cdn软件, 而仅仅是出于教学的目的.
aspnetcdn 到底有多简单?
它直接搭建在Asp.Net上, 已经免去了很多重复的工作,最初的版本v0.1 , 仅仅只有5个cs文件, 共800行不到的代码.
执行的顺序非常简单直接. 是新手学习的最佳材料.
如何下载和测试aspnetcdn?
这是一个基于 Apache License, Version 2.0 授权的项目.最新下载地址 : http://homehttp.com/downloads/redirect.aspx?type=aspnetcdn
需要ASP.NET 2.0或以上的版本, 不支持IIS的Classic经典模式. (请设置成集成管道模式)
这是一个VS2012的项目. 如果你没有VS2012, 没关系, 把'aspnetcdn-web'的内容部署到IIS上也可以运行.
手动把代码提取出来然后重新整理项目和编译很容易.
aspnetcdn是如何实现逻辑上的扩展的?
可以说, aspnetcdn是一个远程的URL REWRITER开发人员, 根据当前请求的Request.Url,QueryString,Cookies,ServerVeriables等属性的判断,
然后允许指定目标服务器, 修改URL,修改HOST名字,
最终实现让aspnetcdn当前所部署的网站, 分别从任意个服务器外去获取内容.
是否有典型的业务模型?
模型1 :一个网站 '/' 下有一个子程序 '/console/' , 但子程序收到网站根目录下/web.config 的影响而无法部署.
这个时候可以把/console/部署为http://127.0.0.2/console/ , 在网站 '/' 上安装 aspnetcdn,
检测如果请求路径包含/console/的话,就重定向到http://127.0.0.2/console/上去
模型2:
一个云OA服务, 有很多台WEB服务器. 但是服务器的缓存非常占空间而且低效.
原因是客户A的多个用户访问服务的时候, 经常被负载平衡分配到不同的服务器上去.
导致几乎所有服务器, 都包含了客户A的缓存数据.
解决办法:
通过用aspnetcdn做转发, 探测COOKIE, 如果CustID=A, 那么就固定转向到服务器1上. 其他客户如此类推.
这样每个服务器都会运行特定的客户群, 互不干扰. 性能得到大大地提升.
aspnetcdn 是否可以拿来真用?
完全没问题的. 但是要注意前期版本功能少, 兼容性差.即使做到后期, 由于基于Asp.Net的模型, 性能也不会好到哪里去.
但它的扩展方案的确是很容易学习和编程.
所以如果你重视的是业务模型, 而不是只考虑用最省的方法去搭建CDN, 那么aspnetcdn是合用的
Powered by homehttp.com
相关文章推荐
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
- 开源项目(Flash CS3 类编程 + ASP.NET 网站后台管理系统)
- 发现一个开源项目-Altairis Simple ASP.NET SQL Providers
- ASP.NET入门篇【项目实战】打造一个自己的相册(二)登录模块
- 开源项目 aspnetcdn beta 版本已经完成.
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目
- asp.net中的AJAX编程-Ajax服务器扩展
- 发现一个好站点,推荐一下 (.net 开源项目)
- 着手公司两个大项目的架构,其中一个要求ASP.NET 2.0,技术调查中.
- Asp.net几个开源项目文章收集
- [导入]发现一个好站点,推荐一下 (.net 开源项目)
- 大多数非网站项目扩展Asp.net1.1里面的DataGrid控件
- 3. 创建一个ASP.NET AJAX Futures 的启动模型
- 一个Asp.net Theme的示例站点(可马上使用到项目中)
- 全新的 ASP.NET 动态语言可扩展模型
- 打造一个通用ASP.NET数据分页控件
- 一个可用的asp.net 2.0 脚本回调的例子
- 打造一个通用ASP.NET数据分页控件
- 在vs.net2003中打开 asp.net web 项目时候,出现“服务器返回的信息无效或不可识别”的错误.
- Win XP [ASP.NET 1.1]“服务器应用程序不可用”的解决