■山雨欲并誉团来风满楼
1995年,SUN公司正式推出了面向对象的开发语言Java,并提出了跨平台、跨语言的概念后(write the code once and run it anywhere),Java就逐渐成为了企绝橘业级应用系统开发的首选工具,而且使得越来越多的基于C/C++的应用开发人员转向了从事基于Java的应用开发。Java的先进思想使其在软件开发领域大有山雨欲来风满楼之势。
很快,在众多研发人员的努力下,微软也推出了自己基于Java语言的编译器Visual J++,Visual J++在最短的时间里由1.1版本升到了6.0版本。这决不仅仅是数字上的变化,集成在Visual Studio 6.0中的Visual J++ 6.0的确有了质的变化,不但虚拟机(JVM)的运行速度大大加快,而且增加了许多新特性,同时支持调用Windows API,这些特性使得Visual J++成为强有力的Windows应用开发平台,并成为业界公认的虚橘优秀Java编译器。
不可否认,Visual J++具有强大的开发功能,但其主要运用在Windows平台的系统开发中,SUN公司认为Visual J++违反了Java的许可协议,即违反了Java开发平台的中立性,因而,对微软提出了诉讼,这使得微软处于极为被动的局面。微软将如何应对呢?
■形势所迫另辟蹊径
就在人们认为微软的局面不可能再有改观的时候,微软却另辟蹊径,决定推出其进军互联网的的庞大计划——.NET计划,和该计划中旗帜性的开发语言——C#。
微软的.NET是一项非常庞大的计划,也是微软今后几年发展的战略核心,“在任何时间、任何地点,采用相应的设备以获取所需的信息”的梦想并非一朝一夕能实现的。Visual Studio.NET则是微软.NET的技术开发平台,其重要性可见一斑,而C#就集成在Visual Studio.NET中。
在软件开发领域中,广大的程序开发者们对用一个测试版的平台进行商业应用系统的开发通常都抱着排斥的态度,然而在Visual Studio.NET β版的发布时,众多开发者们却显示出了从未有过的热情。这种热情决不仅仅是因为.net计划的战略重要性和微软CEO巴尔默那情绪激昂的演讲,更表达了开发者需要一个具有强大功能的开发平台的迫切心情。
为了支持.NET平台,Visual Studio.NET在原来的Visual Studio 6.0的基础上进行了极大的修改和变更。在Visual Studio.NET β版中你会发现Visual J++消失了,取而代之的就是c#语言。至此,微软也摆脱了被动局面。
虽然Visual Studio.NET仍处在测试阶段,但集成在其中的微软新的开发语言C#,却已引起了众多开发者的瞩目。那么,C#究竟是由谁主持研发的呢?
■系出名门风头强劲
设计一个新的开发语言——C#,对微软未来的发展有着举足轻重的意义,而这样一项伟大而艰巨的任务,微软又怎能不慎之又慎呢!谁将承担此重任并成为开发C#的首席设计师将是微软的一次“生死抉择”。微软最终决定由老将安德尔斯(Anders Hejlsberg)出马,这绝对是最明智之选。
国内的很多人对安德尔斯可能并不了解,但一提起他的杰作Trubo Pascal和Delphi,可谓是家喻户晓了。安德尔斯是原Broland公司的首席研发设计师,在Broland期间,安德尔斯开发了著名的Trubo Pascal语言,并在其基础上开发了面向对象的应用开发工具Broland Delphi,Delphi目前仍是Broland公司的最重要的旗帜性产品,并已成为了广大开发人员最喜欢的RAD应用开发工具之一。安德尔斯来到微软后,就直接主抓Visul J++的研发工作,这也是为什么你会在C#中发现很多Visul J++特性的原因。
名家一出手,便知有没有!微软选择了安德尔斯,安德尔斯也没有让微软失望,C#不但成功研发出来,而且其功能之强劲更是让人为之一振!那么系出名门、风头强劲的C#究竟有何强大功能,能给广大开发者带来什么好处呢?
■身怀绝技步入征程
在微软的PDC 2000年会上,当演讲者向各大公司的研发人员展示基于.NET的ASP+上用C#进行设计开发Web应用程序时,观众们报以了热烈的掌声。
长期以来,C/C++都是最为广泛地应用于商用软件开发中的开发语言,但其强劲的功能和灵活的使用却同时伴随着开发的复杂性,很多基于C/C++的研发人员后来都称用C/C++进行开发如同噩梦一般。Java的出现改变了这一切。
Java是一个开放、标准、通用的网络运算平台,由于其强大的兼容性和跨平台性,已经成为在互联网技术领域被广泛采用的一个成熟的技术平台。但由于纯Java编程的应用系统其运行速度太慢,而且据Forrest的调查报告显示,基于Java开发的应用系统目前也并没有实现百分百的跨平台,这使得Java仍旧未能完全取代C/C++。
C#的出现给广大程序开发者又多了一种选择。微软公司对C#的定义是:“C#是一种类型安全的、现代的、简单的,由C和C++衍生出来的面向对象的编程语言,它是牢牢根植于C和C++语言之上的,并可立即被C和C++的使用者所熟悉。C#的目的就是综合Visual Basic的高生产率和C++的行动力。”这个定义是恰如其分的,因为在Visual Studio.NET的β版中,我们已经可以利用C#极其简单地开发出强大的企业级分布式应用系统了。
需要提醒大家,脱离了.NET平台而单纯去讲C#是没有太大意义的,所以我们必须先了解一些.NET平台开发的基础知识,才能更深入了解C#的特性。
.NET框架的核心是基于XML的跨平台跨语言的信息交换,基于此种平台将十分有助于我们开发Internet分布式应用程序。
基于.NET的Web应用开发主要是使用ASP+,ASP+可以使用任何一种.NET支持的语言编写,而其中C#可以提供脚本语言所无法提供的强大功能,使用C#编写ASP+的Web应用程序在未来将成为Windows平台上Web开发的最佳选择。
了解了一些.NET平台开发的基础知识后,下面让我们再来结合.NET看看C#的一些绝技:
快速应用开发(RAD)功能
支持快速开发(Rapid application development)可以说是目前开发语言最为重要的一大功能,也正是C/C++的致命伤。网络时代应用系统的开发必须按照网络时代的速度来进行,支持快速开发可以使得开发人员的开发效率倍增,从而使得他们可以从繁重的重复性劳动中解放出来。
C#的RAD功能主要表现在例如垃圾收集、指代等众多特性上。垃圾收集机制将减轻开发人员对内存的管理负担,而指代功能更是可以让开发者不经过内部类就调用函数。利用C#的这些功能,可以使开发者通过较少的代码来实现更强大的应用程序,并且能够更好地避免错误发生,从而缩短了应用系统的开发周期。
语言的自由性
用C#编写的程序能最大程度地和任何支持.NET的语言互相交换信息。能够继承和使用任何语言所编写的程序可以称得上是知识的继承,这样做的好处是节省了大量的工作,你不必把COBOL等语言强行改成另一种语言,.NET让各种语言真正地互相交流了。
C#和其他.NET语言有着最好的协作,这点对开发人员非常重要。全球从事编写软件的人当中,大约有50%以Visual Basic作为基本的编程工具,在跨入.NET编程时代的时候,这些人轻松地使用了.NET的VB开发Web上的应用程序,想想以后你可以和你的那些只懂VB的同事真正在一起共同开发.NET的应用程序时,还有比这更让人轻松和高兴的事情吗?
强大的Web服务端组件
在C#的Web编程中,最让人兴奋的是Web服务端的组件,它们不仅包括传统组件,还包括那些能够自动连接五花八门服务的可编程组件,你可以用C#编写自己的服务器端组件,服务器端组件和标准的HTML提供的服务自然是不一样的,使用它们可以更自由、更容易地进行数据绑定。不久,那些视频服务器组件也很快会出现,有了这些强大的组件,我们可以设计出功能更加强劲的企业级分布式应用系统。
支持跨平台
随着互联网应用程序的应用越来越广,人们逐渐意识到由于网络系统错综复杂,使用的硬件设备和软件系统各不相同,开发人员所设计的应用程序必须具有强大的跨平台性。C#编写的应用程序就具有强大的跨平台性,这种跨平台性也包括了C#程序的客户端可以运行在不同类型的客户端上,比如PDA、手机等非PC装置。
与XML的融合
由于XML技术真正融入到了.NET和C#之中,C#的编程变成了真正意义的网络编程,甚至可以说.NET和C#是专为XML而设计,使用C#的程序员可以轻松用C#内含的类来使用XML技术。就这方面而言,目前C#提供给了程序员更多的自由和更好的性能来使用XML。
对C++的继承
C#继承并保留了C++强大的功能,例如, C#保留了类型安全的检测和重载功能,C#还提供了一些新功能取代了一些原来的ANSI C预处理程序的功能,提高了语言的类型安全等安全性。
了解了C#如此众多的特性,你是不是也感觉心动呢!身怀绝技的C#将在未来正式步入征程,与我们的程序开发人员携手共进!
1、阻塞的访问网络IO。在连接MySQL、Redis和发起HTTP请求时,工作进程不能傻傻的等待网络IO的返回,而是需要支持事件驱动,用协程的方式让CPU资源更有效的去处理其他请求。很多语言并不具备这样的能力和周边库。
2、有完备的缓存机制。不仅需要支持Redis、Memcached等外部缓存,也应该在中埋乱自己的进程内有缓存系统。我们希望大部分的请求都能在一个进程中得到数据并返回,这样是最高效的方法,一旦有了网络IO和进程间的交互,性能就会受到卖档很大影响。
3、同步的写代码逻辑,不要让开发者感知到回调和异步。这个也很重要,程序员也是人,代码应该更符合人的思维习惯,显式的回调和异步关键字,会打断思路,也给调试带来困难。
4、最好是站在巨人肩上,基于成熟的技术上搭建。采用一门全新诞生的语言和技术,需要经历语言自身发展期频繁调整的阵痛,还可能站错队。
它主要的使用场景主要是:
1、在Lua中揉和和处理各种不同的nginx上游输出(Proxy,液罩Postgres,Redis,Memcached等)。
2、在请求真正到达上游服务之前,Lua可以随心所欲的做复杂的访问控制和安全检测 随心所欲的 *** 控响应头里面的信息。
3、从外部存储服务(比如Redis,Memcached,MySQL,Postgres)中获取后端信息,并用这些信息来实时选择哪一个后端来完成业务访问。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)