C#在网络应用程序中的优点
C#是一个针对Windows平台的非常强大的创建应用程序的工具(也许在不久的将来,也会是面对其他的系统的)。但是它不仅仅只是一个用于创建应用程序的工具。如果你想要钻研到API层面或者是写足够的代码,只有很少功能C#能做而其他老的语言不能做。但是,说到提供对与某种应用的内置的支持,对于内存管理,杜宇面向对象开发,C#会极大的减少创建他们的工作量。
网络服务
网络服务其实就是一个运行在服务器上面向对象的网络接口。等等,你说,那不就是和分布式COM(DCOM)相同么?不准确,但是确实相似。DCOM让你的应用程序可以启动并且像在本地机上一样使用远程应用程序以及DLL。它通过在在事务的两端创建代理“存根”(Stub)来实现这些。DCOM包装了函数,子程序,方法,或者是你本地应用程序的属性,以及任何匿名参数,然后把他们通过网络发送到服务器的一个接收存根上。服务器存根会把值解包,启动对象或者应用程序(如果必要的话),并且做出决定,传递参数。返回值会以相反的操作进行。DCOM使用一个足够高效的二进制压缩包来通过网络发送数据。
当远程调用来自于一个硬连线的专有网络的主机中,DCOM的确是开创了一个时代。随着公司为了商业目的开始使用公共的互联网络时,网络不再是专有的了,相反,DCOM调用必须跨越公共网络和私有公司网络的界限。然而,让二进制数据跨越边界实在是有些危险,因为你不知道这些数据会做什么。例如,数据里面可能包含病毒程序。因此,公司都会布置防火墙以此来阻止二进制数据跨越边界。文本数据,像是HTML,可以畅通无阻的穿越边界,但是二进制数据不可以。不幸的是,通过防火墙来阻止DCOM进行简单的操作会有副作用,因为防火墙是没有办法区分有潜在危险的危险的公共二进制数据以及完全安全的DCOM二进制数据。
网络服务解决了这个问题。网络服务实现了和DCOM完全相同的功能——他们让你可以使用远程对象。然而,他们使用一个完全不同的机制,该机制被叫做简单对象访问协议(SOAP),来打包调用和参数数据。SOAP是文本文件模式。它使用XML来简化支持远程调用的各种值类型的语法。因为SOAP是文本文件,所以它能够穿越防火墙。然而,SOAP不是远程调用的必要条件;它仅仅是个标准的方便的实现方法。换句话说,你可以自由的书写你的哦远程包——但是如果你这样做,你必须也要同时创建你自己的翻译函数。
C#以及VS有对SOAP的支持。事实上,在C#中使用SOAP是完全透明的;.NET框架会承担所有值翻译和传递的任务,而让你可以集中精神创建应用程序本身。创建网络服务的过程和创建COM DLL的过程极度相似——或者就此而言,任何其他的.NET代码,因为你要把一个方法或者整个类当作网络服务就是去添加属性(Attribute)——元数据就是少量包含代码信息的元数据。
网络服务和SOAP的最大问题就是性能;它就是不能像使用DCOM和CORBA翻译二进制文件那样高效的翻译文本表达。然而,在这个危险的世界,SOAP是无可避免的灾难。而且我认为你会很惊奇网络服务到底可以运行多快。真正的性能区别当然是可以测量的,但是感知的性能区别是可以忽略的除非你在一个循环中进行了多次远程调用(而且你应该尽量在远程技术中避免这种情况)。
瘦客户端(Thin-Client)应用程序(网络表格)
C#和ASP.NET一致可以让你创建基于网络表格(Web Form)的应用程序。网络表格,我们将会在第四章介绍,“ASP.NET介绍”,第五章介绍,“网络表格介绍”,是一个集成了C#(或者任何将要出现的.NET语言)代码的HTML表格。如果你很熟悉ASP,JSP,或者是PHP,你会很快适应C#网络应用以及网络表格。如果你没有用以上任何技术写过网络应用程序,你应该感到很幸运的是现在加入到网络应用领域而不是以前,因为C#使得创建网络应用程序类似于创建Windows应用程序。
你可以通过拖拽控制器(Control)到网格设计界面来创建网络表格。当放置一个控制器之后,你可以双击它来添加代码一次来响应控制器事件。网络表格支持大部分相类似于Windows控制器的同系物(Analog),例如文本框,标签,控制面板以及列表框。他们甚至支持像计时器的不可见控制器。
撇开网络表格的方便性不谈,你仍然可以创建基于浏览器或者瘦客户端的应用程序,所以你可以期望失掉部分你能在Windows客户端实现的功能。然而(而且我认为这是你在.NET中可以看到的最大的改变),你不必局限在瘦客户端网络应用程序。通过把Windows客户端和网络服务组合起来,你非常容易的可以创建胖客户端(Rich-Client)应用程序。事实上,这门技术使得创建两种类型的应用程序都非常容易——并且让他们两者都以普通的集中式代码实现。
胖客户端(Rich-Client)应用程序(网络表格)
也许你会觉得很奇怪我在这本书中谈到网络应用程序的时候包含网络表格,但是我保证在你读完这本书之后,你不会觉得奇怪。胖客户端和瘦客户端的区别其实在飞快的减少。随着浏览器增加了更多的属性,他们在逐渐变“胖”。而且随着Windows表格应用获得网络应用能力,他们变得更有能力来支持更有分量的基于网络的服务。结果就是在网络表格还是Windows表格之间做决定是依赖于你是否能够很轻松的传递Windows表格应用代码到客户端,或者是你是否必须依赖于安装在客户端机器上的不管什么浏览器或者是“用户代理”的功能。
在本书中,你将要学习创建这两种类型的应用。你将会看到应用设计以及分布的不同,然后你就可以自行决定。
总结
你已经看到了在事务爆炸时客户端和网络服务器的通讯。客户端请求一般都是匿名的,所以如果你的应用程序要处理敏感数据,那你必须考虑安全和验证代码。在请求中间,服务器会“忘记”客户端,所以除非你强制客户端对每一次请求传递Cookie或者一些其他的标识记号(Identifying Token),服务器会假设客户端是全新的。网络应用程序使用这些标识记号来关联数据值和独立的浏览器或者是独立用户(在安全网站中)。你选择的在请求中维护这些数据值的策略叫做“状态维护”(State Maintenance),而且这是在创建网络应用程序时最难的问题。
C#通过网络表单,网络服务,健壮的网络状况,以及和ASP.NET的紧密集成帮助简化了网络应用程序的建立,以此提供了基础结构来支持网络请求。
尽管存在VS的网络表单编辑器,我们还是很有必要学习创建网络表单所使用的语言——HTML。幸运的是,作为一个致力于记住复杂代码操作的程序员,你会发现HTML非常简单且直白。你能够在半个小时学会基本的HTML。在第二章,“HTML基础”,我会给你展示半小时的HTML之旅,这些基本的HTML知识足够你理解在以下章节中出现的HTML代码。如果你已经熟悉HTML,你可以把这章当作一个回顾或者是直接跳过它并且直接开始阅读第三章,“动态网络应用指南”。
自己翻译的书(关于ASP.NET),希望对大家有帮助 (三)
最新推荐文章于 2025-09-07 17:54:46 发布
