本文节选自《Hadoop核心技术》一书。
Hadoop是一个开源的高效云计算基础架构平台,其不仅仅在云计算领域用途广泛,还可以支撑搜索引擎服务,作为搜索引擎底层的基础架构系统,同时在海量数据处理、数据挖掘、机器学习、科学计算等领域都越来越受到青睐。本文将讲述国内外的hadoop应用现状。
国外Hadoop的应用现状
1.Yahoo
Yahoo是Hadoop的最大支持者,截至2012年,Yahoo的Hadoop机器总节点数目超过42?000个,有超过10万的核心CPU在运行Hadoop。最大的一个单Master节点集群有4500个节点(每个节点双路4核心CPUboxesw,4×1TB磁盘,16GBRAM)。总的集群存储容量大于350PB,每月提交的作业数目超过1000万个,在Pig中超过60%的Hadoop作业是使用Pig编写提交的。
Yahoo的Hadoop应用主要包括以下几个方面:
支持广告系统
用户行为分析
支持Web搜索
反垃圾邮件系统
会员反滥用
内容敏捷
个性化推荐
同时Pig研究并测试支持超大规模节点集群的Hadoop系统。
2.Facebook
Facebook使用Hadoop存储内部日志与多维数据,并以此作为报告、分析和机器学习的数据源。目前Hadoop集群的机器节点超过1400台,共计11?200个核心CPU,超过15PB原始存储容量,每个商用机器节点配置了8核CPU,12TB数据存储,主要使用StreamingAPI和JavaAPI编程接口。Facebook同时在Hadoop基础上建立了一个名为Hive的高级数据仓库框架,Hive已经正式成为基于Hadoop的Apache一级项目。此外,还开发了HDFS上的FUSE实现。
3.A9.com
A9.com为Amazon使用Hadoop构建了商品搜索索引,主要使用StreamingAPI以及C++、Perl和Python工具,同时使用Java和StreamingAPI分析处理每日数以百万计的会话。A9.com为Amazon构建的索引服务运行在100节点左右的Hadoop集群上。
4.Adobe
Adobe主要使用Hadoop及HBase,同于支撑社会服务计算,以及结构化的数据存储和处理。大约有超过30个节点的Hadoop-HBase生产集群。Adobe将数据直接持续地存储在HBase中,并以HBase作为数据源运行MapReduce作业处理,然后将其运行结果直接存到HBase或外部系统。Adobe在2008年10月就已经将Hadoop和HBase应用于生产集群。
5.CbIR
自2008年4月以来,日本的CbIR(Content-basedInformationRetrieval)公司在AmazonEC2上使用Hadoop来构建图像处理环境,用于图像产品推荐系统。使用Hadoop环境生成源数据库,便于Web应用对其快速访问,同时使用Hadoop分析用户行为的相似性。
6.Datagraph
Datagraph主要使用Hadoop批量处理大量的RDF数据集,尤其是利用Hadoop对RDF数据建立索引。Datagraph也使用Hadoop为客户执行长时间运行的离线SPARQL查询。Datagraph是使用AmazonS3和Cassandra存储RDF数据输入和输出文件的,并已经开发了一个基于MapReduce处理RDF数据的Ruby框架——RDFgrid。
Datagraph主要使用Ruby、RDF.rb以及自己开发的RDFgrid框架来处理RDF数据,主要使用HadoopStreaming接口。
7.EBay
单集群超过532节点集群,单节点8核心CPU,容量超过5.3PB存储。大量使用的MapReduce的Java接口、Pig、Hive来处理大规模的数据,还使用HBase进行搜索优化和研究。
8.IBM
IBM蓝云也利用Hadoop来构建云基础设施。IBM蓝云使用的技术包括:Xen和PowerVM虚拟化的Linux操作系统映像及Hadoop并行工作量调度,并发布了自己的Hadoop发行版及大数据解决方案。
9.Last.Fm
Last.Fm主要用于图表计算、专利申报、日志分析、A/B测试、数据集合并等,也使用Hadoop对超过百万的曲目进行大规模的音频特征分析。
节点超过100台机器,集群节点配置双四核XeonL5520@2.27GHzL5630@2.13GHz,24GB内存,8TB(4×2TB)存储。
10.LinkedIn
LinkedIn有多种硬件配置的Hadoop集群,主要集群配置如下:
800节点集群,基于Westmere的惠普SL170X与2×4的核心,24GB内存,6×2TBSATA。
1900节点集群,基于Westmere的超微-HX8DTT,与2×6的核心,24GB内存,6×2TBSATA。
1400节点集群,基于SandyBridge超微与2×6的核心,32GB内存,6×2TBSATA。
使用的软件如下:
操作系统使用RHEL6.3。
JDK使用SUNJDK1.6.0_32。
Apache的Hadoop0.20.2的补丁和ApacheHadoop的1.0.4补丁。
Azkaban和Azkaban用于作业调度。
Hive、Avro、Kafka等。
11.MobileAnalytic.TV
主要使用Hadoop应用在并行化算法领域,涉及的MapReduce应用算法如下。
信息检索和分析。
机器生成的内容——文档、文本、音频、视频。
自然语言处理。
项目组合包括:
移动社交网络。
网络爬虫。
文本到语音转化。
音频和视频自动生成。
12.Openstat
主要利用Hadoop定制一个网络日志分析并生成报告,其生产环境下超过50个节点集群(双路四核Xeon处理器,16GB的RAM,4~6硬盘驱动器),还有两个相对小的集群用于个性化分析,每天处理约500万的事件,每月15亿美元的交易数据,集群每天产生大约25GB的报告。
使用的技术主要包括:CDH、Cascading、Janino。
13.Quantcast
3000个CPU核心,3500TB存储,每日处理1PB以上的数据,使用完全自定义的数据路径和排序器的Hadoop调度器,对KFS文件系统有突出贡献。
14.Rapleaf
超过80个节点的集群(每个节点有2个双核CPU,2TB×8存储,16GBRAM内存)主要使用Hadoop、Hive处理Web上关联到个人的数据,并引入Cascading简化数据流穿过各种处理阶段。
15.WorldLingo
硬件上超过44台服务器(每台有2个双核CPU,2TB存储,8GB内存),每台服务器均运行Xen,启动一个虚拟机实例运行Hadoop/HBase,再启动一个虚拟机实例运行Web或应用程序服务器,即有88台可用的虚拟机运行两套独立的Hadoop/HBase机群,它们各自拥有22个节点。Hadoop主要用于运行HBase和MapReduce作业,扫描HBase的数据表,执行特定的任务。HBase作为一种可扩展的、快速的存储后端,用于保存数以百万的文档。目前存储了1200万篇文档,近期的目标是存储4.5亿篇文档。
16.格拉斯哥大学的TerrierTeam
超过30个节点的实验集群(每节点配置XeonQuadCore2.4GHz,4GB内存,1TB存储)。使用Hadoop促进信息检索研究和试验,特别是用于TREC,用于TerrierIR平台。Terrier的开源发行版中包含了基于HadoopMapReduce的大规模分布式索引。
17.内布拉斯加大学的HollandComputingCenter
运行一个中等规模的Hadoop机群(共计1.6PB存储)用于存储和提供物理数据,以支持紧凑型μ子螺旋型磁谱仪(CompactMuonSolenoid,CMS)实验的计算。这需要一类能够以几Gbps的速度下载数据,并以更高的速度处理数据的文件系统的支持。
18.VisibleMeasures
将Hadoop作为可扩展数据流水线的一个组件,最终用于VisibleSuite等产品。使用Hadoop汇总、存储和分析与网络视频观众收看行为相关的数据流。目前的网格包括超过128个CPU核心,超过100TB的存储,并计划大幅扩容。
国内Hadoop的应用现状
Hadoop在国内的应用主要以互联网公司为主,下面主要介绍大规模使用Hadoop或研究Hadoop的公司。
1.百度
百度在2006年就开始关注Hadoop并开始调研和使用,在2012年其总的集群规模达到近十个,单集群超过2800台机器节点,Hadoop机器总数有上万台机器,总的存储容量超过100PB,已经使用的超过74PB,每天提交的作业数目有数千个之多,每天的输入数据量已经超过7500TB,输出超过1700TB。
百度的Hadoop集群为整个公司的数据团队、大搜索团队、社区产品团队、广告团队,以及LBS团体提供统一的计算和存储服务,主要应用包括:
数据挖掘与分析。
日志分析平台。
数据仓库系统。
推荐引擎系统。
用户行为分析系统。
同时百度在Hadoop的基础上还开发了自己的日志分析平台、数据仓库系统,以及统一的C++编程接口,并对Hadoop进行深度改造,开发了HadoopC++扩展HCE系统。
2.阿里巴巴
阿里巴巴的Hadoop集群截至2012年大约有3200台服务器,大约30?000物理CPU核心,总内存100TB,总的存储容量超过60PB,每天的作业数目超过150?000个,每天hivequery查询大于6000个,每天扫描数据量约为7.5PB,每天扫描文件数约为4亿,存储利用率大约为80%,CPU利用率平均为65%,峰值可以达到80%。阿里巴巴的Hadoop集群拥有150个用户组、4500个集群用户,为淘宝、天猫、一淘、聚划算、CBU、支付宝提供底层的基础计算和存储服务,主要应用包括:
数据平台系统。
搜索支撑。
广告系统。
数据魔方。
量子统计。
淘数据。
推荐引擎系统。
搜索排行榜。
为了便于开发,其还开发了WebIDE继承开发环境,使用的相关系统包括:Hive、Pig、Mahout、Hbase等。
3.腾讯
腾讯也是使用Hadoop最早的中国互联网公司之一,截至2012年年底,腾讯的Hadoop集群机器总量超过5000台,最大单集群约为2000个节点,并利用Hadoop-Hive构建了自己的数据仓库系统TDW,同时还开发了自己的TDW-IDE基础开发环境。腾讯的Hadoop为腾讯各个产品线提供基础云计算和云存储服务,其支持以下产品:
腾讯社交广告平台。
搜搜(SOSO)。
拍拍网。
腾讯微博。
腾讯罗盘。
QQ会员。
腾讯游戏支撑。
QQ空间。
朋友网。
腾讯开放平台。
财付通。
手机QQ。
QQ音乐。
4.奇虎360
奇虎360主要使用Hadoop-HBase作为其搜索引擎so.com的底层网页存储架构系统,360搜索的网页可到千亿记录,数据量在PB级别。截至2012年年底,其HBase集群规模超过300节点,region个数大于10万个,使用的平台版本如下。
HBase版本:facebook0.89-fb。
HDFS版本:facebookHadoop-20。
奇虎360在Hadoop-HBase方面的工作主要为了优化减少HBase集群的启停时间,并优化减少RS异常退出后的恢复时间。
5.华为
华为公司也是Hadoop主要做出贡献的公司之一,排在Google和Cisco的前面,华为对Hadoop的HA方案,以及HBase领域有深入研究,并已经向业界推出了自己的基于Hadoop的大数据解决方案。
6.中国移动
中国移动于2010年5月正式推出大云BigCloud1.0,集群节点达到了1024。中国移动的大云基于Hadoop的MapReduce实现了分布式计算,并利用了HDFS来实现分布式存储,并开发了基于Hadoop的数据仓库系统HugeTable,并行数据挖掘工具集BC-PDM,以及并行数据抽取转化BC-ETL,对象存储系统BC-ONestd等系统,并开源了自己的BC-Hadoop版本。
中国移动主要在电信领域应用Hadoop,其规划的应用领域包括:
经分KPI集中运算。
经分系统ETL/DM。
结算系统。
信令系统。
云计算资源池系统。
物联网应用系统。
E-mail。
IDC服务等。
7.盘古搜索
盘古搜索(目前已和即刻搜索合并为中国搜索)主要使用Hadoop集群作为搜索引擎的基础架构支撑系统,截至2013年年初,集群中机器数量总计超过380台,存储总量总计3.66PB,主要包括的应用如下。
网页存储。
网页解析。
建索引。
Pagerank计算。
日志统计分析。
推荐引擎等。
即刻搜索(人民搜索)
即刻搜索(目前已与盘古搜索合并为中国搜索)也使用Hadoop作为其搜索引擎的支撑系统,截至2013年,其Hadoop集群规模总计超过500台节点,配置为双路6核心CPU,48G内存,11×2T存储,集群总容量超过10PB,使用率在78%左右,每天处理读取的数据量约为500TB,峰值大于1P,平均约为300TB。
即刻搜索在搜索引擎中使用sstable格式存储网页并直接将sstable文件存储在HDFS上面,主要使用HadoopPipes编程接口进行后续处理,也使用Streaming接口处理数据,主要的应用包括:
网页存储。
解析。
建索引。
推荐引擎。
end
http://joerong666.javaeye.com/category/26990?show_full=true自己上去来,我晕了,都是程序。
一、AOP框架
Encase 是C#编写开发的为.NET平台提供的AOP框架。Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式。这种部署方面(aspects)的方法帮助缺少经验的开发人员提高开发效率,NKalore是一款编程语言,它扩展了C#允许在.net平台使用AOP。NKalore的语法简单、直观,它的编译器是基于Mono C#编译器(MCS)。NKalore目前只能在命令行或#Develop内部使用。NKalore兼容公共语言规范CLS(Common Language Specification),它可以在任何.NET开发环境中使用,包括微软的Visual Studio .NET。PostSharp读取.NET字节模块,转换成对象模型。让插件分析和转换这个模型并写回到MSIL。PostSharp使开发程序分析应用程序容易得像分析代码规则和设计模式,它使程序开发的思想变革为面向方面软件开发(AOSD/AOD)思想。AspectDNG的目标是为.NET开发人员提供简单而功能强大的AOP-GAOP实现。它效仿java下的开源工具AspectJ 和 Spoon,成熟程度也很接近它们。
RAIL(Runtime Assembly Instrumentation Library) 开源项目可以在C#程序集加载和运行前进行处理控制调整和重新构建。C#在CLR中,我们已经能够动态加载程序集并且获得程序集中的类和方法,RAIL(Runtime Assembly Instrumentation Library)的出现填补了CLR处理过程中的一些空白。SetPoint是一款.NET框架下的全功能(full-featured)AOP引擎.它着重为称为语义切点(semantic pointcuts)的定义依赖RDF/OWL的使用.它的功能为一个IL-level,highly dynamic weaver&LENDL,一个引人注目的定义语言、、、、、、
DotNetAOP为 CLR language提供AOP 框架基础属性。NAop是一个DotNet下的AOP框架。AspectSharp是DotNet下的免费AOP框架,它以Dynamic Proxies和XML作为配置文件。
二、Ajax框架
Ajax.NET Professional (AjaxPro)是最先把AJAX技术在微软.NET环境下的实现的AJAX框架之一。它在客户端脚本之上创建代理类来调用服务器端的方法。MagicAjax.NET是一款在ASP.NET下创建Web页面提供AJAX技术的框架。它使开发人员很容易把AJAX整合到他们的页面而不需要替换ASP.NET控件或自己写javascript脚本代码。Anthem.NET是为ASP.NET开发环境提供的开源AJAX工具包,它可以运行于ASP.NET 1.1和2.0。
三、工作流(workflow)
Workflow.Net是使用微软.Net技术基于wmfc标准的创建工作流引擎。NetBPM是JBpm移植到.net平台下的一款开源工作流软件。NetBpm可以很容易和.Net应用程序集成在一起,可以创建,执行和管理工作流程序。Bpm Tool支持将业务模型转换成软件模型。业务开发人员可以使用模型驱动的方法设计,实现,执行和跟踪业务流程。因此开发人员能够更容易的关注业务逻辑的变化。
三、文本编辑
FCKeditor是一款功能强大的开源在线文本编辑器(DHTML editor),它使你在web上可以使用类似微软Word 的桌面文本编辑器的许多强大功能。它是轻量级且不必在客户端进行任何方式的安装。FreeTextBox 是一个基于 Internet Explorer 中 MSHTML 技术的 ASP.NET 开源服务器控件。这是一款优秀的自由软件(Free Software),我们可以轻松地将其嵌入到 Web Forms 中实现 HTML 内容的在线编辑,在新闻发布、博客写作、论坛社区等多种 Web 系统中都会有用途。VietPad是一个功能完整的跨平台的Java/.NET的Vietnamese Unicode开源文本编辑器。支持打开,编辑,打印,转换,排序,和保存基于文本的Unicode格式的Vietnamese文件。NetSpell是一款.NET框架下的开源拼写检查引擎。
PPC_edit是一款应用在Pocket PC上的开源文本编辑器,它支持TXT, RTF, HTML, WordML, DocBook 和 ZIP格式的文件,屏幕上会显示国际标准的软键盘。
四、博客(Blog)
NovaShare是一款Blog引擎,它使你创建基于交互式的web的新闻和论坛网站,很像WonkoSlice或Slashdot。管理员可以发布文章和发起投票,浏览者可以创建用户帐号,发表议论等等。dasBlog是从BlogX 网上日志引擎发展而来。像Trackback ,Pingback 一样增加许多附加的特征,有完整的Blogger/MovableType API支持,API注释,完整的Radio-style模板定制,支持Mail-To-Weblog/POP3的附件和内嵌图片,基于WEB的DHTML,OPML,配置的编辑器。DotText是一个被使用了数百个blogs的强劲的blog引擎。这是一个N-tiered应用的例子。tBlogger是一个C#开发的完整的blog网站程序,使用XML配置。
Ludico是C#编写的居于ASP.NET 2.0的Portal/CMS系统。它的模块化设计是你可以按照你希望的使用或开发网站功能。它里面有高级的用户管理,一个所见即所的(WYSIWYG)的编辑器等。mojoPortal是一款C#开发的面相对象网站框架,它可以运行于Windows的ASP.NET 和GNU/Linux 或Mac OS X的Mono的平台上。
Cuyahoga是C#开发的灵活的CMS / Portal 解决方案。它可以运行于Microsoft .NET 和Mono 平台,支持SQL Server, PostgreSQL或MySQL作为底层数据库。Umbraco是一款在.net平台下C#开发的开源内容管理系统,该系统效率,灵活,用户界面都不错。Kodai CMS是.NET平台下的一款功能齐全的内容管理系统。Rainbow项目是一款使用Microsoft''s ASP.NET和C#技术开发的有丰富功能的开源内容管理系统。NkCMS是使用ASP.net和Sql server 2000开发的内容管理系统。Amplefile是一款内容管理系统,是.Net环境下的windows应用程序,使用了.Net remoting.Go.Kryo是一个用ASP.NET(C#).NET 实现的简单的内容管理系统,后台数据库使用Microsoft SQL Server 。ndCMS是 ASP.net (C#)下的一个内容管理系统。它提供了用户管理,文件管理,一个WYSIWYG编辑器,模板管理,拼写检查和内置的http压缩。ndCMS的目标是提供一个简单而快速的方式部署.Net站点以节省你的时间和金钱。
八、代码覆盖(Code Coverage)
NCover是.NET框架下的C#版本代码覆盖分析工具。NCover可以对程序进行 line-by-line 的代码覆盖统计。
九、论坛系统
YetAnotherForum可以作为ASP.NET开发的网站的论坛或是留言板。它使用MSSQL作为底层数据库。
十、开发工具(IDE)
SharpDevelop是一个DotNet平台下的免费开发工具,支持C#和VB.NET。
MonoDevelop是可以支持C#和其它符合.Net规范的开发语言的IDE。C# Studio是 C#/Mono/GTK# 开发者的一个简单的IDE。
十一、安装制作
izfree是一套套免费的工具用于帮助创建使用Microsoft''''s Windows Installer 技术的安装程序。使用izfree你可以为你的应用程序制作强劲的安装程序。Windows Installer XML (WiX)可以重XML源文件创建Windows程序安装包的工具集。它支持命令行方式,开发人员可以把结合它来创建MSI和MSM安装包一个可以和商业软件安装产品相比的开源打包工具。
十二、IoC容器
Spring.net是从java的Spring Framework移植过来的。java的Spring包含了许多功能和特性,在当前的Spring.net都有提供。Spring.net最初发布的版本包含了一个很有特色的IoC容器。Castle是一组应用开发的工具,内含一个简单的IoC容器。StructureMap是.NET环境下的一个轻量级依赖注入工具,StructureMap也是一个灵活的、可扩展的通用“插件”机制的.NE
十三、Bug追踪
BugNet是一款C#编写的基于Web的开源Bug跟踪系统。BTsys是一款轻量级的开源桌面Bug跟踪系统,是C#和ADO.NET实现。一个Bug记录和跟踪的解决方案,支持文件附件和注释历史。BugTracker.NET是使用ASP.NET 和 C#开发的基于web的开源Bug跟踪系统。需要SQL Server 或 MSDE支持。它安装简单,容易使用,功能强大。BugBye是一款ASP.NET和C#开发的基于web的Bug跟踪系统。
十四、日志工具
log4net是一个可以帮助程序员把日志信息输出到各种不同目标的.net类库。它可以容易的加载到开发项目中,实现程序调试和运行的时候的日志信息输出,提供了比.net自己提供的debug类和trace类的功能更多。log4net是从java下有卓越表现的log4j移植过来的。它是apache基金资助的项目的一部分。NLog是C#编写的开源日志类库,它的设计思想是使其简单而灵活。NLog让你处理诊断的日志消息,用相关信息扩充消息,依照你的选择格式化日志消息和把日志消息输出到一个或多个目的地。 LogThis是为.NET应用程序提供的一款C#开源日志框架,它可以嵌入到应用程序之中。AppLog是一个简单的应用日志工具。它使用C#开发,且使用ByteFX MySQL 数据访问库.。C#开发的可扩展日志工具,有高级消息队列支持,可以异步使用。CSharp Logger是apache继log4net项目后设计的又一个日志工具。它用来向Windows的事件日志写入debug、info、warn和error四个等级的信息。
十五、网络客户端
.NET FTP Client是C#编写的开源类库。
.NET Telnet是微软.NET Framework下的C#开发的开源telnet类库。它的灵感来至Java Telnet Application。metro这个项目是C#编写的类库,它提供了一套丰富的类使开发IP version 4, TCP, UDP and ICMP等工作更容易。它包含了有很有用的工具如包嗅探器,网络分析工具例如路由跟踪,ping等。
LJ.NET是LiveJournal站点的客户端。它为LJ在线日志服务提供了简单而强大的用户接口。NET VNC Viewer 是一款完全用C#开发的开源VNC观察器。它兼容Smartphones, Pocket PC和Windows的电脑(.NET CF or .NET Framework)。它比起其它观察器的优点是可以在Pocket PC上全屏显示而且可以旋转屏幕。
GVDownloader允许你从google videos, metacafe, putfile, youtube, break.com 和更多的地方快速下载内含的视频和多媒体。它的包含一个强劲IE插件和位于你系统托盘的独立程序。DotNetOpenMail能够使你在微软.net框架开发的asp.net, WinForm应用程序发送Email。它是C#编写的开源组件,它不需要使用System.Web.Mail类库就可以容易的创建带附件HTML和Plain-text的Email。程序员不需要知道很多相关的细节就可以使用不同的字符集或不同的MINE编码来创建multipart/alternative,multipart/related和multipart/mixed的MIME消息。DotMSN是一款独立的开源类库,它不需要和官方的MSN Messenger交互,因此不必安装MSN Messenger就可以使用DotMSN和MSN Messenger服务通信.DotMSN是C#编写的,所以.NET环境支持的语言都能够使用.DotMSN类库使用简单而且实现方便。它灵活,坚固,轻量级利于整合到任何应用系统.使用DotMSN的应用系统能实现从创建消息机器人到自定义客户端等各种不同的功能.如果你的应用程序需要和Messenger服务通信,DotMSN是一个不错的工具.SharpSSH使用C#实现了SSH2协议,它支持SSH, SCP 和 SFTP.OpenPOP.NET一组和POP Servers通信的.NET类库。
IceChat是为连接多样的IRC Servers设计的Internet Relay Chat Client。
lphant是为edonkey/emule开发的开源客户端程序。
.NET FTP Client C#开发的类库。OpenSmtp.net 是 C# 开发的开源SMTP组件。它不依赖.NET Framework 的System.Web.Mail 包中的类。允许开发人员使用不同于MS SMTP的SMTP 服务器且提供了web service而可以通过HTTP发送email。
网络服务器
ODC(#)H是一款C#编写的开源hub software,它功能强大,消耗的资源少且支持插件功能。Dawn of Light (DOL)是第一个开源的Dark Age of Camelot (DAOC)游戏服务器,你可以创建自己的服务器且自己设计游戏内容。DOL使用.Net Framework框架的C#编写,使用XML和MySQL存储数据,支持Windows和Mono平台。
NeatUpload可以让ASP.NET开发人员把磁盘上的文件通过流的方式上传并且可以监视上传进度。它是开源的且在 Mono''s XSP/mod_mono和微软的ASP.NET下运行得Advanced Data Provider是为ADO.NET提供的动态数据提供者。可以让应用程序透明的访问不同的ADO.NET 数据提供者。
OJB.NET是一款.NET平台下的对象/关系映射(O/R Mapping)工具。
门户系统
OmniPortal基于一种web-portal-kernel(Web门户核心)的思想而构建的开源基础框架,它解决了安全控制、主题和本地化等。你可以基于 OmniPortal 来更容易的创建任意的Web应用系统(例如 ERP, CMS, CRM)。它支持Mono 和.Net 。对于Web开发人员来说,OmniPortal为他们提供了一款优秀的二次开发基础类库。SharpNuke.NET是一款C#开发的基于 ASP.NET 的开源 Portal/CMS。最初是从流行的VB.NET开发的web portal系统DotNetNuke移植过来的的。以后的版本将会兼容 Windows和 Linux Mono。
Personal .NET Portal是一个基于Web的个人门户系统。它试图提供一种简单的方式建立个人网站,页面使用标签和模板创建。
My Community Portal提供了一个统一的Internet门户,作为论坛,群组,聊天,你自己的Email,搜索引擎,网络目录,个人主页,投票还有更多的功能入口。
剖析工具(Profilers)
Prof-It是一款独特易用的C#程序剖析工具。当保持对一个最小量的源代码的探测时,它为每一条语句测量执行频率。
NProf不仅仅是成熟的剖析程序,也是一套可以用来创建其它功能齐全的剖析程序的完整API,以及用可视化的工具扩展的默认GUI。
NProfiler,.NET平台下的一个应用程序剖析工具。
项目管理
SharpForge支持协作多个软件项目的开发和管理,它为你的团队提供类似 SourceForge 和 CodePlex的功能。SharpForge是C#开发的.NET 2.0开源项目。User Story.NET是一个Extreme Programming 项目。
RSS和RDF工具
Rss Bandit是C#开发的开源RSS阅读器,它内建多国语系,支持Atom 1.0以及其他各种的RSS feed格式。它画面漂亮,拥有分页浏览功能,软件细部设置弹性度高。它的操作画面直观简单易懂,有一个很好的Command模式和ListViewEx来使用,可让使用者很快的上手。iPodder.NET是一款C#编写的开源媒体收集器,它能自动帮你从互联网上下载音乐,能帮你轻松地从成千上万的音乐中选择你喜欢的。用它设置好订阅RSS feeds后,只要节目一有更新,它就自动下载了,你不必大量的浪费时间自己手工下载。它还整合了iTunes,创建播放列表和iPod同步功能,你可以用Apple iTunes或Media Player播放,也可以把音乐导入到你的iPod或其他MP3播放器中。FeedExpress主要是让你订阅一些RSS/RDF资源,知名的如FeedExpress里的Subscriptions。它和Outlook Express让你订阅一些新闻组是一样的。RSS.NET是一款操作RSS feeds的开源.NET类库。它为解析和编写RSS feeds提供了一个可重用的对象模型。它完全兼容RSS 0.90, 0.91, 0.92, 和 2.0.1等版本。GtkSharpRSS是C#开发的开源RSS和RDF客户端,它用于 Mono, Gtk#, 和 RSS.NET。它也可以通过内嵌于Mozilla的窗口来显示内容。
Atom.NET是一款完全使用C#开发的开源类库,它的目标是提供便捷的方法来操作Arom Feeds。它提供一个对象模型来写入和解析Atom Feeds。它只兼容0.3Atom规范,可以运行于微软.NET 1.x,Mono 0.29 或更高版本。
NRss是为微软.NET框架和Mono下提供的开源类库,它读取RSS Feeds元素然后以树型结构来展现对象关系。
Aggie是一个新闻收集器,它是桌面应用程序,可以下载最新的新闻并通过web页面的形式呈现。mail2rss是.NET下的 web service,它在你请求时检查你的电子信箱并返回包含电子信箱里的消息的 RSS feed。它是完全用C#开发的开源项目,没用使用任何第三方控件。
规则引擎
NxBRE是.NET平台下的一款开源轻量级的业务规则引擎(aka Rule Based Engine),它由正向串行的推理引擎(forward-chaining inference engine)和XML驱动流控制引擎(XML-driven flow control engine)组成.它支持 RuleML 0.9 Naf Datalog 和 Visio 2003 建模。
SRE (Simple Rule Engine)是.NET下的一款轻量级的开源正向串行的推理规则引擎(forward chaining inference rule engine)。它容易理解,可以解决复杂的问题。
搜索引擎
NLucene是Lucene的.NET版本。
DotLucene,Lucene.Net开源项目转向商业化后,DotLucene以Lucene.Net作为基础继续进行开发。
版本控制(CVS)
Porc是为CVS和项目管理工具提供了完整的图形化界面,它在CVS的基础上增加了一些有趣的功能。它是.NET平台下用C#编写的。
Sharpcvslib是C#语言编写的CVS客户端API。当前它为公共CVS命令提供了核心函数。NetCvsLib是为.NET平台下C#开发的一个CVS客户端。它作为一个单独的程序集而实现,因而可以很容易的集成到其它项目中去。
SQL客户端
qlBuddy是C#编写的一款用于Microsoft SQL Server和MSDE的开源工具,使用它可以很容易的编写SQL脚本。SqlBuddy提供的功能和查询分析器的目的有些微不同,它倾向于帮助使用者编写SQL。QueryCommander是一款开源的Sql editor,模拟微软的查询分析器,Visual Studio的环境类型。QueryCommander的特点包括类似IntelliSense功能,自动注释,xml文档模型,xml2data等。SQL Buddy是一款有特色的免费MSDE / Sql Server IDE,它是用.NET框架的C#编写。Database Commander是Windows操作系统下的一款用户界面友好的数据库管理工具。
模板引擎
NVelocity 是一个以 .NET 为基础的模板引擎。它允许任何人通过简单而强大的模板语言来定义对象。
测试工具
NUnit一款单元测试框架,它可以应用于遵循.NET框架标准的所有语言下。NUnit最初是从JUnit移植过来的。NUnit完全使用C#编写且设计时考虑了多数.NET语言的特性,例如自定义属性和其它反射特性。NMock是一款.NET平台下的基于动态代理的Mock模拟对象类库,用于C#开发。Mock对象使测试更简单,它测试单个组件或单个类时不需要其它所有组件真正实现。也就是说我们可以仅仅只是测试一个类,比起测试一个完整的对象关系树更容易查清楚Bug。Mock对象一般用于以测试为驱动的开发当中。TestDriven.NET是一款和Visual Studio .NET无缝结合的测试插件。它可以和NUnit, MbUnit 和 Team System紧密结合。Rhino.Mocks源于EasyMock.Net,它试图提供一种更简单的方法去创建和使用mock objects且使你得到更好的重构支持。它结合了EasyMock.Net和NMock的方式。Dot NetUnit实现了XUnit 测试框架,是.NET平台下的单元测试组件。EasyMock.NET是由Java实现的EasyMock到.net平台的一个移植版本的一组类库。它提供了一个简单的方法用来模拟接口和远程对象。dotunit是JUnit移植到微软.net平台的测试框架。它可以实现自动化测试。NUnitForms是NUnit的扩展。它为Windows Forms应用程序提供单元测试和压力测试,可以容易的用它为你的Windows Forms类进行自动化测试。
Web框架
NStruts 是java下大名鼎鼎的struts开源MVC框架的ASP.NET版本,是jakarta struts框架的一部分。Maverick.NET是从Maverick移植来的.NET版本,是一款开源的 Web MVC框架.它专注于MVC逻辑,它支持丰富的模板和转换技术。
MaverickLite是ASP.Net下的一款简单的开源表现层框架。它在建立在Maverick.Net framework基础上。它使用front controller的方式来处理请求。
Ingenious MVC ,基于.NET 2.0的构MVC结构的应用程序,它包含即开即用(out-of-the-box)的特性支持ASP.NET和Windows Forms应用程序.它也可以在大多数方法中扩展和定制.Websharp是.NET平台下的一款轻量级应用框架。
Email客户端
GmailerXP是为Google的Gmail服务提供了全套的工具开源程序。在线所能做的GmailerXP都允许用户做,它也整合了你任何时候在Gmail需要的其它一些程序的特点(GML, Gmailto,等)。
RemoteCalendars是C#开发的为Outlook 2003/2007提供的一款开源 COM-.NET 插件。安装完这款插件后,Outlook的用都可以用Outlook 2003/2007订阅、重新读取和删除远程iCalendar(RFC 2445)。
SharpWebMail是一款C#编写的ASP.NET下的EMail客户端。它通过POP3服务器接收邮件,通过SMTP服务器发送邮件。它的配置很简单(只需要在web.config 里面做几个设置)。
Web测试
NUnitAsp是一款自动测试 ASP.NET页面的开源工具. 它是从NUnit扩展来的。
Wiki引擎
Perspective是一款C#开源Wiki引擎,它使用户可以很容易的合作进行编辑,链接和共享Web页面,它里面有安全和分级的管理环境。Perspective居于奇妙的Wiki思想,包含了其它一些有前途且效果好的特性。
DevHawk Wiki是一款.NET平台下由C#实现的开源Wiki引擎。
ProntoWiki是使用VWD (Visual Web Developer)编写的C#开源wiki引擎,ASP.NET 2.0 和 SQLExpress 2005作为后台。Wiki引擎速度快且容易使用,提供了和 rich text editor 一样的文本标记( text markup )功能。它可以自动通过web接口接收图片和文件作为附件。另外,ProntoWiki的特点还有页面可以在贴出或更新之前预览,基于角色的用户认证,使用 web parts 自定义外观和布局,历史跟踪,和功能查询。FlexWiki是一款使用.NET技术(C#和ASP.NET)编写实现的开源多人协作的写作工具。Thufir提供了字处理和文档链接功能。它类似Wiki-Wiki ,且它具有“所见即所得”的界面。它还可以通过和Word交互来利用Word的拼写检查功能。
XML解析
NASA World Wind 是C#开发的个人电脑上的开源的3D图形虚拟地球系统。它结合了美国国家航空航天局(NASA)从卫星拍摄的图像,这些图像应用于Blue Marble, Landsat 7, SRTM, MODIS 以及其它更多的地方。
其它C#开源项目DockPanel Suite是一款开源的.Net Windows Forms开发环境下的停靠控件(docking)类库。它模仿Visual Studio .Net的效果开发的。wx.NET是基于.NET通用语言基础结构 (CLI)的开源项目。它致力于开发一个基于.NET的GUI库,它按照wxWidgets的类层次用C#编写,可以在多种CLI下执行,包括.NET,Mono,和DotGNU Portable.NET。MMC .NET类库是为Windows的MMC+Snapin开发提供支持而包装的一套开源类库。DPAToolkit(Design Pattern Automation Toolkit)是应用设计模式设计应用程序的开源工具包,它有便捷的代码生成,反向工程功能。拖拽(Drag and Drop)方式便捷的创建UML类图。支持为代码生成,反向工程编写自定义插件。mjbWorld 是一款开源的3D编辑器,它允许用户通过图形界面的选择和拖拽方式来编辑图形。它基于和应用X3D与VRML标准。该软件目的用于利用建立开放免费程序建立3D世界。同时它也可以用于其他免费开放软件程序之间进行数据交换。mjbWorld有Java, C# 和C++ /Qt等版本。MonoCalendar是.NET平台下的开源日历程序,它的目的是为Mac平台之外的其它平台提供一款类似iCal的日历程序。Data Tier Generator是一款微软 .NET平台下的开源项目,它为访问SQL Server 2000而生成存储过程的SQL Server 2000脚本和C#类。这些存储过程包含了Insert, Update, Delete, Select, 根据PK的Select, 根据FK的Select的SQL脚本。Finisar.SQLite是.NET框架下的一款为存取SQLite-Databases提供的ADO.NET Data Provider。Math.NET的目标是为提供一款自身包含清晰框架的符号运算和数学运算/科学运算,它是C#开发的开源类库。Math.NET含了一个支持线性代数的解析器,分析复杂微分,解方程等等功能。Ascii Generator dotNET (ascgen2)是一款把图片转换成高质量的ASCII字符组合(ASCII art - text)。第一个版本支持变形和粗体字体,和实时调节输出。GPSProxy是.NET Compact Framework下的开源程序。它通过COM口在Pocket PC之间拷贝GPS数据,可以把GPS数据格式从NMEA 0183转换成Garmin GPS。它是基于.NET Fra的Windows版本。FOP C# Port这是Apache居于java的 XSL-FO 格式转换器的C#版本。它采用并扩展了XSL-FO标准使FOPs在可以嵌入.NET CLR管理代码应用。14:18 浏览 (1263) 评论 (0) 分类: c# 2008-04-16缩略显示ASP.NET下载文件(弹出打开保存文件对话框)ASP.NET下载文件(弹出打开保存文件对话框) //fileURL为带路径的文件全名 System.IO.FileInfo fileInfo = new System.IO.FileInfo(fileURL)Response.Clear()Response.AddHeader("content-disposition","attachmentfilename="+Server.UrlEncode(fileInfo.Name.ToString()))Response.AddHeader("content-length",fileInfo.Length.ToString())Response.ContentType = "application/octet-stream"Response.ContentEncoding = System.Text.Encoding.DefaultResponse.WriteFile(fileURL)无错版: try ...{ FullFileName = Server.MapPath(FileName)//FileName--要下载的文件名 FileInfo DownloadFile= new FileInfo(FullFileName)if(DownloadFile.Exists) ...{ Response.Clear()Response.ClearHeaders()Response.Buffer=falseResponse.ContentType="application/octet-stream"Response.AppendHeader("Content-Disposition","attachmentfilename=" +HttpUtility.UrlEncode(DownloadFile.FullName,System.Text.Encoding.ASCII))Response.AppendHeader("Content-Length",DownloadFile.Length.ToString())Response.WriteFile(DownloadFile.FullName)Response.Flush()Response.End()} else ...{ //文件不存在 } } catch ...{ //文件不存在 }
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)