.NET也有春天及高性能网站架构实践

news/2024/5/13 2:41:13/文章来源:https://blog.csdn.net/YaoXTao/article/details/29858583

.NET也有春天及高性能网站架构实践

在本次专访之前,笔者一直都对.NET这个平台有所偏见,或者说是看不到.NET的优势,对Java Web、PHP、Ruby等更加看好,而之后SSH、RoR、LAMP等的流行也让笔者对这个观点更加坚信。然而在浏览完赵桂华的个人Blog后,笔者逐渐认识到对.NET这种不公平的看待,或许正如赵桂华所说,打造高性能网站架构是一个系统的工程,并非某个平台或某种语言能完成,所以高性能通常与编程语言无关。同时,.NET被看轻的一部分原因还来自Visual        Studio开发环境的强大。       


博主赵桂华:2005年毕业于武汉工程大学电子信息工程专业。大学期间就对软件产生浓厚的兴趣,利用课余时间自学了计算机专业全部专业课程以及VB、VC、Java、数字图像处理等编程语言和技术。毕业后一直从事.NET相关技术的研究与开发工作,先后就职于多家软件以及互联网公司,拥有丰富的软件开发和项目管理经验。致力于高性能网站架构、提高软件开发质量与效率等领域的研究。个人为推动开源事业贡献着自己的力量,目前已在Github上开源了一套轻量级数据持久层组件 restful.data,该组件能支持多种数据库和Linq查询,具有高性能、零配置、代码优雅、易上手等特性。


免费订阅“CSDN云计算”微信公众号,实时掌握第一手云中消息!

CSDN作为国内最专业的云计算服务平台,提供云计算、大数据、虚拟化、数据中心、OpenStack、CloudStack、Hadoop、Spark、机器学习、智能算法等相关云计算观点,云计算技术,云计算平台,云计算实践,云计算产业资讯等服务。


以下为采访实录

CSDN:能否介绍一下目前您正在从事哪方面研究及工作内容?

赵桂华:我是个自由职业者,有更多的时间来思考产品或项目之外的东西,目前我主要在做下面几件事情:

1. 高性能网站架构,主要研究一些开源的缓存、消息队列、代理组件和其他一些工具。

2. 规范开发流程,改善代码质量,提高开发效率。

3. 基于社区针对小范围人群的O2O电子商务服务平台。

4. restful.data开源数据持久层组件的持续更新与优化。   

CSDN:.NET给大家留下的印象多半是易于上手,对于高性能打造上您怎么看?在这个方面,对比J2EE、Ruby、PHP等如何?

赵桂华:.NET之所以易于上手,是因为微软为开发者提供了非常强大的开发工具,你几乎可以在Visual Studio上搞定一切。但对于.NET本身而言,它也是个强大的开发平台,其他语言能做的,.NET也能做,它们不能做的,.NET也可以做。不管是从易用性,还是程序执行效率上都是非常卓越的。.NET给人的印象只是容易上手,原因主要是,搭载.NET的运行环境软硬件成本高,导致很多互联网平台从最初的.NET转向别的开发语言,很多人都只是使用.NET来开发企业内部应用,而他们对性能的要求并不是那么高,只是运用了一些简单的常见技术,就能完成项目的要求,很难展现.NET平台的那些优秀特性,所以给人一种.NET只能走低端路线的印象。

打造高性能网站架构是一个系统的工程,并非某个平台或某种语言能完成,所以高性能通常与编程语言无关。Mono框架的出现,也为.NET跨平台带来了转机,微软也在积极的推动这个项目的发展,所以在打造高性能网站架构的工具和手段上,.NET作为一个开发平台并不是一个人在战斗,我们完全可以把Java的那一套照搬到.NET上。真要说哪个平台更好,我倒觉得不能盖棺定论,每种语言和平台都有其自身的特点和优势,我们更多的是要考虑怎么将他们整合,让他们更好的为我们服务。当然,由于一些历史原因,J2EE、PHP等可能在开源方面做的更好一些。

CSDN:对于高性能网站打造,你们每个部分通常使用了哪些开源组件?

赵桂华:

  • 数据缓存方面,可选用Redis和Memcached来构建集群,降低数据库服务器的压力
  • 消息队列在某些场景下是非常有用的,如秒杀,抢购等,可以使用Redis、RabbitMQ等开源组件
  • 当某些数据库或者数据表数据量非常大的时候,可以对他们进行水平和垂直切割,需要用到数据库代理,如MySQL Proxy,Amoeba,Cobar等
  • 负载均衡也有很多成熟的方案,如lvs,Nginx,搭配KeepAlive以确保在发生单点故障时能自动切换

CSDN:您认为目前高性能网站架构的难点在哪里?需要避免哪些坑?顺便分享一些高性能网站打造的经验?

赵桂华:第一点,真实场景不易模拟和重现,我们很难在开发阶段发现架构的问题和不足,不便于我们测试。

第二点,可选的组件和工具很多,这需要我们非常熟悉组件和工具的特性,而研究这些东西又是非常花费时间和精力的。

第三点,理想和现实的碰撞,没有一个完美的架构,架构是要结合实际情况的,还需要考虑投入的成本,而成本也有可能制约架构的性能。

第四点,牛顿定律只适用于低速运行的物体,常规的思维方式和开发习惯可能在高并发大数据的网站上不适合了,所以放弃一些传统的设计理念也是摆在我们面前的一个重大难题。

设计高性能网站架构,首先跳过过度设计这个坑,要结合实际情况,考虑投入的成本和人力资源,选择合适的方式,搭建合适的架构;技术不是完美的,不要指望技术能帮你解决所有的问题,要在行与不行之间做出更好的抉择,不要一开始就进行假设,为了实现一个毫无意义的目标而投入过多的精力。对于打造高性能网站架构,我也只能算是个初学者,但其中心思想主要有四点:

  • 将压力分散到不同的角色
  • 将任务分配给多个参与者
  • 尽可能让靠前的角色承受更多的压力
  • 保证其可靠性和稳定性

具体到一些技术,请关注我的博客,我会持续的更新。

CSDN:作为缓存服务器,Memcached已在LAMP等环境中得到了验证,那么与之对比,Redis又有什么优势?

赵桂华:我们可以从下面几个方面来比较这两者之间的区别:

  • 风格:Memcached只是个简单的Key-Value存储系统,它没有备份和持久化的功能,而Redis更像是一个NoSQL数据库系统。
  • 功能:Redis提供了一些Memcached没有的功能,它支持的数据类型更加丰富,支持事务,支持master-slave,支持集群。
  • 数据一致性:在多线程环境下,Memcached在这一点上要比Redis做的好,但也带来了性能上的损耗。
  • 内存管理:Memcached的内存利用率要比Redis高。
  • 性能:因为Memcached只是简单的存储Key-Value,在缓存数据很大时,性能要优于Redis,但在单核应用上存储小于100K的数据时,Redis性能要比Memcached高。
  • 网络IO:由于Redis支持更多的数据结构,所以能有效的减少网络IO的次数和数据体积,而 Memcached在存储复杂数据时稍显逊色。

所以,我们无法单纯的得出谁优谁劣的结论,各有利弊,需要根据不同的应用场景来选择它们,如果只是单纯缓存一些数据,可以选择Memcached,比如session数据,如果我们希望数据能被持久化,那无疑只能选择Redis,例如统计当前的访问量、在线用户数等。   

CSDN:您是restful.data开源轻量级数据库持久层组件的创始人,您怎么看待开源这个运动?如何才能更好的参与进一个开源项目?

赵桂华:古人云,授人与鱼不如授人与渔,我认为开源更像是一种慈善行为,与其授予金钱和物资,还不如给他们提供一些的富有创造力的工具,让他们可以利用这些工具创造出更多更好的软件和工具来丰富我们的生活,这也是一种社会价值的体现。我们在使用开源的同时,也要学会为开源奉献自己应有的力量,更重要的是要尊重那些默默为我们做出贡献的人们。

想要参与一个开源项目,首先自身应该对开源是感兴趣的,你需要有足够的动力来驱动你参与这个项目,还需要抛弃一些世俗的观念,你可以怀揣着梦想来做这件事情,但你不能指望开源能为你带来名和利。你还需要保证有足够的时间和精力来参与其中,以确保项目能如期进行。持之以恒的毅力也是不可或缺的,坚持不懈的深入研究,才能让项目达到预期的目标。

CSDN:restful.data开源项目当下有多少人参与?您开发这个项目的初衷是什么?目标是什么?

赵桂华:目前我创建的项目群已将近50人,主动参与的人并不多,我希望有更多的人能参与进来。

之所以把这个项目开源出来,是因为这个项目是我多年以来一直思考的结果,我希望分享给大家,让更多的人学习和参与,并提出更多有建设性的意见和建议,共同推进项目的发展。另一个原因是我不想让我的成果变成某个企业独享的东西,我希望有更多的人使用它,完善它。

我对restful.data并没有设定什么目标,只想让开发者们在ORM框架上能有更多的选择,让更多的人认识它,了解它,学习它。   

CSDN:在restful.data开发过程中,您有什么收获?

赵桂华:当你设定一个目标,认真的去完成它的时候,当你遇到一个又一个的山峰,你又不得不去翻越它的时候,你会发现,你收获的不仅仅是短暂的喜悦,更多的是人生的感悟,你会明白,没有困难是不可逾越的,你只需要一步一步的坚持前行,当你站在另一个山头瞭望远方,映入你眼帘的是一种独特的风景,别有风味。

CSDN:谈谈restful.data,亮点、特性、功能等。

赵桂华:restful.data之所以是一个轻量级的持久层框架,一开始就不想把它弄的太复杂,更多考虑的是它的性能、易用性和优雅性。

首先,它的查询效率是非常高的,我本机测试单表查询10万笔记录并全部转换为实体对象,只用了0.4秒。

其次,它很容易上手,整个框架并没有提供过多华而不实的API,你完全可以通过函数名就能猜测它的功能,使用它你不需要任何配置。

再则,它的代码风格非常优雅,符合大多数人的审美观。

restful.data提供了基本的SQL语句增删改查功能和分页查询功能,支持事务处理,支持存储过程调用,你完全可以一行代码搞定这些事情。

restful.data对Linq的支持,也是其一大亮点,目前只支持单表查询,也不打算让它支持联合查询,但我觉得已经足够。

restful.data对增删改操作也提供了优雅的实现,你可以使用Lambda表达式来实现批量更新和删除,这也是其他ORM框架所不具备的特性。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_783539.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐8个超棒的学习 jQuery 的网站

推荐8个超棒的学习 jQuery 的网站 根据国外科技网站 W3Techs 一项调查了近100万个网站数据显示,jQuery是目前最流行的 JavaScript 库。对于初学者来说,有的时候很难找到一个好的学习jQuery的网站,所以本文收集了8个很棒的 jQuery 学习网站推…

自学宝典:10个学习Android开发的网站推荐

自学宝典:10个学习Android开发的网站推荐 1. Android Developers 作为一个Android开发者,官网的资料当然不可错过,从设计,培训,指南,文档,都不应该错过,在以后的学习过程中慢慢理…

利用squid反向代理提高网站性能

利用squid反向代理提高网站性能本文在介绍 squid 反向代理的工作原理的基础上,指出反向代理技术在提高网站访问速度,增强网站可用性、安全性方面有很好的用途。作者在具体的实验环境下,利用 DNS 轮询和 Squid 反向代理技术,实现了…

MalwareMustDie关闭博客网站 抗议NSA利用恶意软件攻击公共机构

近期,国外一篇博客披露,著名的反恶意软件组织MalwareMustDie决定关闭其博客网站,以抗议NSA(美国国家安全局)利用黑客工具入侵无辜国家的教育和公共服务器。 文章指出,Shadow Brokers(影子经纪人…

阿里云 配置网站 安装nginx 访问不了公网ip

转载自:https://blog.csdn.net/LJFPHP/article/details/78670459 一、开始找原因 在浏览器输入:http://ip,正常的话,会有页面,welcome to nginx 我这里是浏览器访问失败, 查找原因: 1、在服…

asp.net免费网站三剑客:WebMatrix + MojoPortal + SQLCE

一个免费发布软件,一个免费CMS(内容管理系统),一个免费数据库,正好完成一个免费软件的部署。大致过程:1. 先从这里找到MojoPortal的CE版本:http://mojoportal.codeplex.com/releases/view/64508…

用户体验分析:以 “师路南通网站” 为例

作业目标: 对比UMU学习平台、学生安全教育平台,针对师路南通,开展UX分析。基于实例分析,体会用户体验设计的7条准则 作业要求: 基于我们列出的 7 条UX评价准则,分析“师路南通” 在用户体验设计方面让你觉得…

基于阿里云服务器搭建网站

前面写了《基于PHP搭建网站开发环境》的三节内容,主要用于PC端开发/调试/测试网站所需要搭建的开发环境。当然,最重要的还是网站开发成功之后,如何让很多人通过外网连接到网站呢? 1、服务器:服务器选择的是阿里云的&a…

阿里云建站的基本流程

1. 云服务器 ECS 1.1 概述 云服务器ECS实例,即阿里云服务器,以下简称 ECS 实例。 1.2 创建 ECS 实例 1.2.1 购买 ECS 实例 在阿里云官网找到:产品->云计算基础服务->弹性计算->云服务器 ECS 。 在购买之前可以领取阿里云优惠劵哦…

阿里云建站云企业官网标准版/高级版/尊贵版功能对比及选择方法

阿里云建站云企业官网标准版、高级版和尊贵版有什么区别?云集市场网分享阿里云建站定制云企业官网版本功能区别亮点及选择方法: 云企业官网标准版/高级版/尊贵版对比 阿里云建站云企业官网定制分为标准版、高级版和尊贵版三个版本,云集市场…

最全面的WordPress建站教程,零基础30分钟学会建站

宝塔面板添加WordPress站点 一、建站准备条件 条件1:阿里云服务器一台。原则上有台服务器就好了,不过我一般喜欢用大品牌,稳定和安全。条件2: 阿里云域名一个。在哪家买的服务器,就用哪家的域名,反之&…

快来建造自己的网站吧,阿里云免费教程哦

主要亮点: 亮点一:标配阿里云空间,无需技术,会打字就会建网站 亮点二:选定模板,预置1000套精美网站模板,覆盖上百行业,随意切换,简单修改,网站- 即可上线&am…

没有使用面板的云服务器(手动搭建环境的云服务器)备份网站文件和数据库的命令及教程

对于使用了面板(如宝塔面板)的云服务器来说,备份网站文件和数据库相当简单,但是没有使用面板的云服务器(手动搭建环境的云服务器)备份数据就稍显麻烦了,前几日有一朋友让我帮忙备份一下&#xf…

使用宝塔面板搭建WordPress网站(图文教程)

使用宝塔面板搭建WordPress网站 图片来自宝塔官网 现在搭建一个自己的网站已经不是一件难事了,有出色的WordPress程序,有价格实惠的云服务器,有像七牛云这种对草根站长友好的云存储服务,还有像宝塔面板这类易操作的面板&#xff…

阿里云建站全教程:域名注册/云服务器/环境搭建详细流程

小白如何创建网站部署环境?建立一个网站需要多少钱呢?笔者分享 个人/企业建网站的基本步骤和流程。从域名购买解析、到云服务器购买搭建环境,最后到上传程序,具体教程如下: 第一步、注册域名 进入(万网官…

NET温故而知新学习系列之网站安全技术—web.config加密和解密

NET温故而知新学习系列之网站安全技术—web.config加密和解密 我们为什么要对web.config配置文件中的配置节加密&#xff1f; 因为在我们的项目中&#xff0c;有的配置节可能包含敏感信息&#xff0c;我们看下面的<connectionStrings/>配置节中包含了我们连接数据库的用户…

新手建站教程—宝塔面板的安装与使用

为什么使用宝塔面板&#xff1f; 新手建站最大的痛苦就是不好入门&#xff0c;代码太多&#xff0c;无法轻松管理。 在这里&#xff0c;我们介绍一种简单好用的免费服务器运维面板——宝塔面板。使用宝塔面板&#xff0c;可以在可视界面中为服务器安装应用、同步文件、定期执行…

企业如何搭建公司网站?

现在是互联网时代&#xff0c;很多企业都注重互联网&#xff0c;通过做公司网站进行展示及营销。公司网站好处有以下几点&#xff1a; 公司网站是公司对外的宣传窗口&#xff1b;展现公司形象&#xff1b;挖掘潜在客户&#xff0c;即使现在不成交&#xff0c;以后也会通过网站…

中小企业如何搭建公司门户网站

现在是互联网时代&#xff0c;很多企业都注重互联网&#xff0c;通过做公司网站进行展示及营销。公司网站好处有以下几点&#xff1a; 公司网站是公司对外的宣传窗口&#xff1b;展现公司形象&#xff1b;挖掘潜在客户&#xff0c;即使现在不成交&#xff0c;以后也会通过网站…

程序员拥有一个属于自己的博客网站很难吗?

回答这个问题&#xff0c;我觉得嘛&#xff0c;提问者肯定想知道如何搭建个人博客的相关流程和经验。所以我脑海想想&#xff0c;然后组织下语言简练的说明下具体的步骤。 先讲下主要搭建流程&#xff1a;既然是搭建个人技术博客&#xff0c;那也是属于网站搭建一块的问题。只…