第二期讲课内容(刀疤主讲)

前言﹐事实上﹐听本讲时﹐已经意味着你可能已经是一个ASP.NET开发人员﹐你只是希望能全面的了解一下知识和别人的看法﹐讨论概念还不清楚的地方﹔对于初学者希望能得到一些基本的概念和方向上的介绍﹐摆脱无头苍蝇的状态,那么我希望这一讲对程度不同的人都有所帮助﹐当然你也可能持有不同观点﹐欢迎在此过程中讨论

ASP.NET 介绍

说到ASP.NET就要从.NET说起﹐那么什么是.NET?

对于Microsoft .NET,微软官方有如下描述:.NET Microsoft 的用以创建 XML Web 服务(下一代软件)平台,该平台将信息、设备和人以一种统一的、个性化的方式联系起来。

Microsoft .NET代表了一个集合﹑一个环境﹑一个可以用做平台支持下一代Internet的可编程结构。我个人认为它就是一个概念﹐也许随时间的推移这些定义会有所改动﹐因为它现在并没有发育完全﹐但是已足够我们去期待那样时刻的到来。

它具有4个重要特点﹕基于XML的共同语言﹑定制服务软件﹑融合多平台和设备﹑新一代人机界面。

.NET体系中﹐XML用做应用间无缝结合的手段﹐也就是数据采集与合并﹐互操作和协同﹐它用SOAP(Simplicity Object Access Protocol)协议﹔定制服务软件可看图表示﹐微软的战略:以后的开发者将会制造服务而不是制造软件﹐以后维护人员不在购买安装维护软件﹐而是定制服务﹐软件会自动安装﹐维护工作和升级会通过Internet自动完成﹔其余两点不详述。

 

   

.NET的连接和功能示意                                   .NET的体系结构

NET定制服务软件

 

.NET特性

1) 一致的编程模式﹐所有的应用程序都采用面向对象的编程模式

2) 简化的编程模式﹐由于CLR不必掌握GUIDs等的COM知识﹐CLR的意思是通用语言运行时Common Language RuntimeCLR是微软公司开发平台.Net Framework运行的基础,提供了.Net程序运行的底层运行环境。它负责资源管理﹐包括内存分配和垃圾收集﹐并保证应用和底层操作系统的必要分离﹐简单点说,CLR.NET的管家。

3) 运行于多个平台﹐只要支持.NET运行都可以运行.NET用程序﹐也许可以在非 Windows操作系统上实现

4) 支持多语言的综合﹐按照COM理﹐代码重用是立在二进制代码的级别上﹐在.NET环境下﹐代码重用可以建立在源码级别上﹐即用C#写的某个类可以直接在C++样的语言中使用

5) 自动资源管理﹐已经纳入到CLR中﹐增加了资源回收功能

6) 一致的出错处理方式

7) 安全性(整套机智判断角色确认身份)

8) XMLSOAP的引入﹐过去的分布式应用程序﹐通常是两层﹐出现了如CORBAIIOP等协议﹐灵活性差。而Internet是一个松散的连接和非常广的分布﹐XMLSOAP能使新的模式工作的很好

 

.NET组成

1)     Windows.NET﹐它紧密整合了.NET的一系列核心构造模块﹐为数字媒体及应用间协同工作提供支持﹐是微软下一代Windows桌面平台(操作系统)

2)     .NET Framework﹐它提供了多语言件开发和执行环境﹐可以容易的建立网络应用程序weblicationWeb服务﹐它有包含三个部分:a.通用语言运行时﹐即CLRb.服务框架Services Frameworkc.上层的两类应用窗体﹐WebFormWinForm(架构)

3)     模块构建服务 Building Block Services﹐是.NET平台中的核心网络服务集合。主要包括a. Internet XML通信(Web站点变成灵活的服务来交换和处理)b. Internet XML据空间(Web上提供安全的和可变成的XML储空间)c. Internet动态更新(为快速开发和动态配置应用提供服务)d. Internte日程安排﹔e. Internet身份人证﹔f. Internet录服务和实时信息传递服务(Atlas—微软的Ajax工具包﹑Passport Microsoft 的第一个Building Block 服务)

4)     Orchestration﹐一种于XML的面向应用软件成和自动化处理技术﹐具有三个基本要求﹕

处理和执行过程分离﹐即整个处理不一定非要同执行的细节和途径绑定﹔b. 动态处理﹔c. Any to Any 集成。.NETBizTalk Orchestration 是上述技术的一个实现﹐括可视化的设计环境﹑一套捆绑的工具和一个Orchestration引擎﹐由于业务流程的处理﹑管理和调试(电子商务应用开发框架)

5)     Visual Studio .NET﹐是基于XML的编程工具和环境

6)     Microsoft .NET Enterprise Server系列﹐Exchange2000 SQL 2000

 

C#语言介绍

.NET支持的语言有20种﹐为什么还要使用称之为C Sharp的新语言来编写?正如 C++是编写Windows的﹐那么C#是用来编写.NET程序的。.NET架构中的多数内容是C#语言编写的﹐虽然开发者可以在.NET中使用多种语言编程﹐但是C#是为了使用和支持基于组件编程而特别设计的。

C#的特点可以概括为﹕语法简单﹑功能强大﹑面向对象﹑安全可靠﹑版本控制﹑兼容性强

比较结果

                C#                          C++                         Java

继承        允许单个继承﹐允许实现多接口      允许从多个类继承         允许耽搁继承﹐允许实现多接口

接口实现     通过Interface关键词             过抽象类                 通过Interface关键词

内存管理     由运行时环境管理﹐垃圾收集器      手工管理                 由运行时环境管理﹐垃圾收集器

指针        支持﹐但只在很少非安全模式下      支持﹐常用功能               完全不支持﹐代之以引用

才支持﹐通常以引用取代指针

代码编译后   .NET中间语言(IL)                可执行代码               字节码

单一公共基类                                                

异常处理     异常处理                     返回错误                 异常处理

 

C#面向对象程度比Java高﹐C#中的基本类型都是基于类的﹐如int.Int32 Int32是系统提供的一个类﹐ int基本类型就映像为类int32C#具有比Java更强大的功能﹐C#拥有Vb的快速开发的便利和C++的强大特点﹐C#有极大的兼容性﹐可以用C#调用已有的VB,C/C++, COMVBX﹐几乎是微软所有产品的总接口;C#Java速度快﹐为了跨平台C#也采用了JIT译器﹐并使得JIT发展和提升﹐所以C#的执行速度快。

当然Java也有一些优势C#并不能取代Java﹐但是c#是有优势的﹐C#.NET平台上最好的开发语言

 

ASP.NET介绍

    ASP.NET是建立在.NET框架上﹐利用通用语言进行时(CLR)在服务器后端为用户提供建立强大企业级Web应用服务的编程框架﹐一句话它是为Web服务的。

    ASP.NET和相应的.NET Franmework 类库要比ASP3.0或者php/jsp都要复杂的多﹐ASP.NET是几种技术的组合﹐我相信你找到的有关书籍不可能既包含基础介绍或简短教程﹐又讲高级内容﹐所以你要根据自身的需要查阅相关书籍。

    ASP.Net主要包括WebFormWebService两种编程模型。前者为用户提供建立功能强大,外观丰富的基于窗体(Form)的可编程 Web页面。后者通过对HTTP,XMLSOAPWSDLInternet标准的支持提供在异构网络环境下获取远程服务,连接远程设备,交互远程应用的编程接口.

WebServices

    ASP.NET的特点

    兼容性﹐ASP.NETASP兼容﹐但ASP.NET在管理和书写方面难度是增加了﹔代码编译执行﹐此点无需多讲﹐COM对象﹐象注册组件重启服务等ASP的现象在这里都不存在;XML配置﹐配置信息都放在XML文件里﹐这就基本脱离了IIS的配置﹔WebFormWebControlASP.NET提供了WebForm连接到服务器功能﹐所以能简单的处理请求﹐WebControls也提供了相似的功能(稍后会讲到什么是Web Control)﹐为网页提供了相对于html Control更多的功能﹔缓冲﹔可升级性﹔文件处理

 

ASP.NET基础

    在你开始编写一个网站之前﹐我们要知道ASP.NET为什么及如何提供因素﹐而我们需要这些因素是要完成的任务简单高效。答案就一个﹐ASP.NET允许我们创建以Http作为Web上唯一传输机hobilcationion         制使用的分布式应用程序﹐就是以前的Web+Application﹐我们叫它weblication

.事件驱动的应用程序是什么我不讲了。然而﹐在Web应用程序中提供事件驱动环境是一个非常困难的事情﹐Web浏览器从来也没有设计成应用程序界面﹐最初的目标只是显示从结构化Html编码文件中得到的信息。

Web上动态网页编程﹐传统的方法是建立一个包含窗体控件的页面﹐获得用户输入的信息﹐然后用户将这个页面提交或传递给一个处理用户输入的独立动态页面﹐很多种技术都可以实现﹐如ASPPerlPHPJSP等。然而无论使用什么技术﹐基本的技术都是相同的﹐都是捕获请求﹑服务器处理和发送响应的过程﹐我把这个称之为丢纸团传递信息的方式。这样做可以达到目标﹐但是这是个好方法吗?这样会使得页面内容混乱﹐维护和调试都变得困难﹐扩展功能是异常困难的。

Web上的事件驱动编程﹐我们需要的是一个简洁易扩展的模式﹐基于事件的传统的模式中我们要建立包含控件和内容窗体﹐然后对每个独立控件引发的事件相应﹐只需要响应特定事件的代码﹐但是由于缺少一个 Http提供的持续连接﹐Web浏览器和Web服务器还是不能直接实现的﹐用户还是需要把页面提交到服务器﹐因此还是以过程方式处理。但是ASP.NET通过回送(稍后会讲到)体系结构和作为整个体系结构的部分来实现的特性答到了这个目标﹐这就是Web上的事件驱动编程﹐认识了这些基本处理过程对整体的理解非常重要。

.ASP.NET页面作为一个已编译的类ASP中的代码都是出现在页面中才执行的﹐而ASP.NET却完全不同﹐.Net Framework语言编译器通过使用中间语言(IL)码将每个页面转换成一个类文件(至于类的概念以后会讲到)﹐这就这意味着性能的提高。

.ASP.NET回送体系结构﹐ASP.NET中有服务器端窗体的概念﹐我们可以不用在不同页面间处理用户请求﹐但是仍然有3个缺点﹕1.为了进行窗体处理﹐窗体仍然需要每次都提交到服务器﹔2.当回送发生后﹐控件的值不能按照常规方式维护﹔3.用户每次都可以看见页面重载。

模仿独立控件事件﹐尽管已经有了一个看似事件驱动﹑基于窗口的应用程序界面的页面﹐但仍然存在一个限制﹐就是只能对“页面提交到服务器”这个单一事件进行响应﹐实际上我们可以做到区别请求是回送(IsPostBack)或是首次加载﹐我们还可以知道事件是由哪个控件引发的﹐由此ASP.NET可以根据页面的在客户端发生的交互作用来展示不同的的事件。

在这里我们就必须分清楚什么是服务器端事件什么是客户端事件﹐但是事件都是发生在控件的身上﹐和我们最密切相关的是Html ControlsWeb Controls

Html Controls是为了和传统ASP保持兼容而开发的一类基于HTML静态页面的控件(如文本框,按钮),它们与这些控件一一对应。但是我们然能象使用的Web Controls那样使用它﹐如

<input type=" button " id=”btnHtml”runat=”server”οnclick=”alert(‘This is a clicent event’)”>

如果没有runat=”server”标记﹐它将不能引发回传﹐οnclick=”alert(‘This is a clicent event’)”将表示在客户端的脚本﹐那么它是如何回传的呢﹐在客户端查看网页的源码你就会发现它已经不象原来的样子

<input type=" button " id=”btnHtml”runat=”server”οnclick=”alert(‘This is a clicent event’) ; __doPostBack(' btnHtml ','')”>

__doPostBack(' btnHtml ','')是服务器为它加上的,并且已经增加了__doPostBack这个客户端代码﹐在代码中把页面提交到服务器。

Web Controls 是专为下一代基于组件开发的.Net平台架构而量身定做的,它不仅包括具有传统HTML静态页面的控件等Web Controls,它还包括有AdRotator,XML等功能强大的组件,更重要的是它为用户开发Web Controls组件提供了强大,易用的技术底层支持。这将成为下一阶段ASP.Net开发的热点。如

<asp:Button id="Button1" runat="server" Text="Button"></asp:Button>,在客户端查看网页的源码为

<input type="submit" name="Button1" value="Button" id="Button1" />如果为Button这个Web Controls增加客户端事件代码,我们可以通过在服务器端使用Button1.Attributes.Add("onclick","alert('test')");实现。

    那么我们发现Html ControlsWeb Controls其实展现到用户一端时都是一样的面貌﹐因此不必对Web Controls产生距离感﹐它只是把Html Controls给我们打了个包﹐让我们能更方面快速的使用它。

    从以上可以看出服务器端事件﹑客户端事件,能分得清这个概念非常重要。

    提到回送体系结构就不能不知道﹐ViewState﹐它是Web Controls和服务器交流的一个媒介﹐没有它我们就不能恢复控件的值﹐正是由于它的存在我们可以做到ASP原来做共到的一些事情﹐这里就不详细展开﹐请找资料查询。

.ASP.NET服务器控件﹐刚才已经提到﹐在ASP.NET页面中的任何元素﹐如果没有runat=”server”标记就不是服务器控件﹐服务器控件作为对象实现﹐是页面控件树的一部分﹐控件由编译器直接创建﹐并将它们作为独立的对象编译到页面中﹐这样做会对页面的性能产生一定的影响﹐因此只有在必要时才使用它们。ASP中用Response.Write()动态的写如网页是最让人喜爱的地方﹐当然我们也能在ASP.NET这样用﹐但是你也许仍然有很多疑问﹐我们究竟应该是用html控件还是服务器控件?服务器控件有RepeaterDataListDataGrid我们究竟用哪个好?用什么样的绑定方式最快?

我认为﹐ASP.NET并不能做到完全代码分离﹐也不可能脱离客户端代码完全使用服务器代码实现全部功能﹐ASP原来的某些做法也不能完全摒弃﹐是用Html Controls还是Web Controls也要具体分析﹐现在什么事情可能都是技术的组合﹐有最好的吗?我想没有﹐只有最合适的﹐那么我们做程序也是一样的﹐知其然﹐更知其所以然。

 

有关ASP.NET的介绍也就大致完了﹐根据每个人的程度不同﹐有人可能胡涂有人可能加深理解﹐那么我想至少你知道ASP.NET是为Web服务的﹐如果你对我今天讲的东西感到很难理解﹐证明你对基础的东西了解很少﹐这将是你进步的极大障碍。ASP.NET是很多技術的組合﹐必須全部了解并掌握才可能熟練使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值