从web开发看.NET和Java。

以下都是个人观点,仅供参考,欢迎提出不同意见!

首先声明本文只从一个角度来说一下.NET和Java,而且只说一个点,可以肯定的是,本文的观点肯定是片面的,但是我觉得可以说明一些问题,或者作为一些参考。

我个人不排斥任何技术,也认为任何技术都可以实现同一个业务目的。

个人涉猎过.NET, Java, Python, Rails,有的时间长些,有的时间短些。

技术是为业务服务的,或者是为某种商业或者非商业的目的来服务的,为了实现目的,为了提升效率,为了节省时间,应该说使用任何编程语言、任何编程平台,在大部分的场合都可以实现同一个目标。

语言和平台没有高低优劣,只有场景适用。

首先语言是某个人,或者是某个团体,或者是某个公司,或者是某个行业领导团体,为了实现某种目的,加快某种业务,发明设计的,所以在设计的时候不免会打上发明者的烙印,发明者会希望,甚至会引导使用者以发明者希望的方式去使用这种语言。这就会影响不同语言的风格,使用风格,学习风格,还会产生一些所谓的语言之争。

其实每种语言都会全面开发方式:包括高层的,也就是封装好的,你只需要关注业务逻辑代码,写业务逻辑代码就可以了;也包括底层的,也就是原始的开发方式,需要你在写业务逻辑代码的同时指定一些技术的参数,一些底层的参数需要你设置。

有的语言会引导你从高层先进入,然后在你需要的时候你再去选择使用底层的方式。有的语言会直接引导你进入底层,然后提供你高层的方式。

就拿.NET和Java的web开发举个例子。

.NET中可以使用ASP.NET做web开发,他有一种方式叫做WebForm,就是你可以直接拖控件到web页面,然后双击控件,在背后写代码,比如注册按钮的背后写一些注册的业务逻辑。就好像你在开发WinForm桌面应用一样,写过VB的人都会明白。在这种开发方式中你可以不管http方面的知识,不对http进行任何操作,也可以做出web应用。甚至你在看微软的一些WebForm视频教程中,他也没有主动向你介绍http的知识。所以可能给一些的人造成一种:我开发web不用管http的印象。直到很久,甚至几年之后才理解到还需要http的知识才能更好的开发web应用。当然,你用WebForm也可以设置http的一些参数,只是通常大家没有这么使用。

但是ASP.NET也有底层的方式。它提供了一个IHttpHandler接口,你可以实现这个接口,来处理一次http请求,甚至没有区分请求是GET还是POST,反正就是一次请求,具体控制和http参数设置,完全交给你来实现。它还有一个IHttpModule接口,实现这个接口,你可以对请求的过程进行控制和定制。比如说对请求的内容做一些额外的处理,权限控制,请求过滤之类的事情。

 

 
  
  1. /// <summary> 
  2.    /// Summary description for AddContact 
  3.    /// </summary> 
  4.    public class AddContact : IHttpHandler 
  5.    { 
  6.  
  7.        public void Proce***equest(HttpContext context) 
  8.        { 
  9.            context.Response.ContentType = "text/plain"
  10.            context.Response.Write("Hello World"); 
  11.        } 
  12.  
  13.        public bool IsReusable 
  14.        { 
  15.            get 
  16.            { 
  17.                return false
  18.            } 
  19.        } 
  20.    } 

Java是提供你一个基类HttpServlet ,继承这个基类,有两个方法doGet和doPost,可以接受get和post请求。如果你从java入门开发web应用,你就需要知道http的get和post,以及http的一些细节,因为在开发的时候就需要你理解和正确设置,才能有结果。

java也会有一些web开发框架,为了方便你的开发,也会向你隐藏一些实现的细节,让你专注于业务开发。

ASP.NET还有一个MVC框架,也是通过扩展ASP.NET的IHttpHandler和IHttpModule来实现的。

说到这里,相信有一部分读者已经理解和明白我想说明的问题了。