⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chapter26.htm

📁 这是一个学写JAVA的好东西
💻 HTM
📖 第 1 页 / 共 2 页
字号:
	COLOR: #000000; TEXT-DECORATION: underline}.navigater {	FONT-SIZE: 12px; COLOR: #333333; LINE-HEIGHT: 19px; TEXT-DECORATION: none}A.navigater:hover {	COLOR: #cc0000}.g1 {	FONT-SIZE: 14px}.g2 {	PADDING-LEFT: 21px; PADDING-TOP: 5px}.g3 {	FONT-WEIGHT: bold; COLOR: #ab6503}.g4 {	COLOR: #ff0000}.img {	BORDER-RIGHT: #800000 1px solid; BORDER-TOP: #800000 1px solid; BORDER-LEFT: #800000 1px solid; BORDER-BOTTOM: #800000 1px solid}.img1 {	BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid}.f14 {	FONT-SIZE: 14px; LINE-HEIGHT: 26px}.f20 {	FONT-WEIGHT: bold; FONT-SIZE: 20px}.top_red {	COLOR: #d70709; TEXT-DECORATION: none}.center01 {	COLOR: #000000; LINE-HEIGHT: 20px}.center01 TD {	COLOR: #000000; LINE-HEIGHT: 20px}.center01 A:link {	COLOR: #000000; TEXT-DECORATION: none}.center01 A:visited {	COLOR: #000000; TEXT-DECORATION: none}.center01 A:hover {	COLOR: #2b7128; TEXT-DECORATION: underline}.center02 {	COLOR: #194e00; LINE-HEIGHT: 20px}.center02 TD {	COLOR: #194e00; LINE-HEIGHT: 20px}.center02 A:link {	COLOR: #194e00; TEXT-DECORATION: none}.center02 A:visited {	COLOR: #194e00; TEXT-DECORATION: none}.center02 A:hover {	COLOR: #194e00; TEXT-DECORATION: underline}--></style><TABLE width=760 border=0 align=center cellPadding=0 cellSpacing=0 bgcolor="#F3F3F3" valign="top">	<tr class="center01"> 		<td width="488" style="padding-left:10px;padding-top:10px">			<a href="index.php">连载</a>       &gt; <a href="slist.php?class1=6">程序设计</a>      &gt; <a href="slist.php?class2=7">Java</a>      &gt; <a href="serialize.php?id=387">Java网络编程专辑</a>		</td>		<td width="280" style="padding-left:10px;padding-top:10px">			<div align="center">			<font color=#0000FF><a href='chapter.php?id=387&volume=2&chapter=12'>上一页</a></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;			<font color=#0000FF><a href="serialize.php?id=387">回书目</a></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;			<font color=#0000FF><a href='chapter.php?id=387&volume=2&chapter=14'>下一页</a></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;			</div>		</td>	</tr>	<tr class="center01">		<td colspan="2" align="center" style="padding-left:10px;padding-top:10px">&nbsp;</td>	</tr>	<TBODY>	<TR> 		<TD colspan="2" align=middle>			<BR>			<div style="FONT-SIZE: 18pt; COLOR: #990000; FONT-FAMILY: 楷体_GB2312" align=center><B>网络协议</b></div><br><div style="COLOR: #990000; font-family: ; font-size: 18px;宋体;" align=center>SOAP协议初级指南(2)</div>			<DIV style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; FONT-SIZE: 10.5pt; COLOR: black; LINE-HEIGHT: 180%" align=left>                         <br>&nbsp;&nbsp;&nbsp;&nbsp;<P><STRONG>目前的技术存在的问题?</STRONG><BR><BR>  尽管DCOM和IIOP都是固定的协议,业界还没有完全转向其中任何一个协议。没有融合的部分原因是文化的问题所致。而且在当一些组织试图标准化一个或另一个协议的时候,两个协议的技术适用性就被提出质疑。传统上认为DCOM和CORBA都是合理服务器到服务器端的通信协议。但是,二者对客户到服务器端的通信都存在明显的弱点,尤其是客户机被散布在Internet上的时候。 <BR><BR>  DCOM 和 CORBA/IIOP都是依赖于单个厂商的解决方案来最大优势地使用协议。尽管两个协议都在各种平台和产品上被实现了,但现实是选定的发布需要采用单一厂商的实现。在DCOM的情况下,这意味着每个机器要运行在Windows NT。(尽管DCOM已经被转移到其它平台,但它只在Windows?上获得了广泛的延伸)。在CORBA情况下,这意味着每个机器要运行同样的ORB产品。的确让两个CORBA产品用IIOP相互调用是有可能的,但是许多高级的服务(如安全和事务)此时通常不是可交互的。而且,任何专门厂商为同样的机器的通信所作的优化很难起作用,除非所有的应用被建立在同一个ORB产品上。<BR><BR>  DCOM 和CORBA/IIOP都依赖于周密管理的环境。两个任意的计算机使得DCOM或IIOP 在环境之外被成功调用(calls out of the box)的几率是很低的。特别是在考虑安全性的时候尤其是这样。尽管写一个能成功地运用DCOM或IIOP的紧缩包(shrink-wrap)应用是可能的,但这样做要比基于socket的应用要更多地关注细节。这对于乏味但必需的配置和安装管理任务特别适用。<BR><BR>  DCOM 和 CORBA/IIOP都依赖于相当高技术的运行环境。尽管进程内的COM似乎特别简单,但COM/DCOM远程处理程序绝对不只是几天就解决的事情。IIOP 是一个比DCOM更容易实现的协议,但两个协议都有相当多的深奥的规则来处理数据排列、类型信息和位操作。这使得一般的程序员在没有领会ORB产品或OLE32.DLL的情况下去构造一个简单的CORBA或DCOM调用也变得很困难。<BR><BR>  也许对DCOM和CORBA/IIOP来说,最令人难以忍受的一点是它们不能在Internet 上发挥作用。对DCOM来说,一般用户的iMac 或廉价的运行Windows 95的PC 兼容机要想使用你的服务器执行基于领域认证几乎是不可能的。更糟的是,如果防火墙或代理服务器分隔开了客户和服务器的机器,任何IIOP或DCOM包要通过的可能性是很低的,主要是由于大多数Internet连接技术对HTTP协议的偏爱所致。尽管一些厂商如Microsoft, Iona和Visigenic都已经建立了通道技术,但这些产品很容易对配置错误敏感而且它们是不可交互的。<BR><BR>  在一个服务器群落中这些问题并不能影响DCOM或IIOP的使用。因为在服务器群落中主机的数量很少(一般是成百上千,而不是成千上万),这就抵消了DCOM基于ping的生命周期管理的成本。在服务器群落中,所有主机被一个公共管理域管理的机率很大,使得统一的配置变得可能。相对少量的机器也能保持商业ORB产品可控制使用的成本,因为只需要更少量的ORB许可权。如果只有IIOP在服务器群落中被使用,就只需要少量的ORB许可权。最后,在服务器群落中所有主机有直接的IP连接也是可能的,这就消除了与防火墙相关的DCOM和 IIOP问题。</P>
<P><SPAN class=f14>  <STRONG>HTTP作为一个更好的RPC</STRONG><BR><BR>  在服务器群落中使用DCOM 和CORBA 是通用的做法,但客户机则使用HTTP进入服务器群落。HTTP与RPC的协议很相似,它简单、配置广泛,并且对防火墙比其它协议更容易发挥作用。HTTP请求一般由Web服务器软件(如IIS和Apache)来处理,但越来越多的应用服务器产品正在支持HTTP作为除DCOM和IIOP外的又一个协议。<BR><BR>  象DCOM和IIOP一样,HTTP层通过TCP/IP进行请求/响应通信。一个HTTP的客户端用TCP连接到HTTP服务器。在HTTP中使用的标准端口号是80,但任何其它端口也能被使用。在建立TCP连接后,客户端可以发送一个请求消息到服务器端。服务器在处理请求后发回一个HTTP响应消息到客户端。请求和响应消息都可以包含任意的传输体的信息,通常用Content-Length和Content-Type的 HTTP 头来标记。下面是一个合法的HTTP请求消息: <BR><BR>POST /foobar HTTP/1.1<BR>Host: 209.110.197.12<BR>Content-Type: text/plain<BR>Content-Length: 12<BR>Hello, World<BR><BR>  你可能已经注意到HTTP头只是一般文本。这使得用包检查程序或基于文本的Internet工具(如telnet)来诊断HTTP问题变得更容易。HTTP基于文本的属性也使得HTTP更容易适用于在Web开发中流行的低技术水平的编程环境。<BR><BR>  HTTP请求的第一行包含三个组件:HTTP方法,请求-URI,协议版本。在前面的例子中,这些分别对应于POST, /foobar, 和 HTTP/1.1。Internet工程任务组(IETF)已经标准化了数量固定的HTTP方法。GET是HTTP用来访问Web的方法。 POST是建立应用程序的最常用的HTTP方法。和GET不一样,POST允许任意数据从客户端发送到服务器端。请求URI (Uniform Resource Identifier)是一个HTTP服务器端软件,它用来识别请求的目标的简单的标识符(它更象一个IIOP/GIOP object_key 或一个DCOM IPID)。关于URIs更多的信息请参照"URIs, URLs, and URNs"。在这个例子中协议的版本是HTTP/1.1, 它表示遵守RFC 2616的规则。HTTP/1.1比HTTP/1.0多增加了几个特性,包括对大块数据传输的支持以及对在几个HTTP请求之间保持TCP连接的支持。 <BR><BR>  请求的第三行和第四行指定了请求体的尺寸和类型。Content-Length 头指定了体信息的比特数。Content-Type类型标识符指定MIME类型为体信息的语法。HTTP (象 DCE一样) 允许服务器和客户端协商用于编制信息的传输语法。大多数DCE应用采用NDR.。大多数Web应用采用text/html 或其它基于文本的语法。<BR><BR>  注意在上面样例中Content-Length头与请求体之间的空行。不同的HTTP头被carriage-return/行码序列划定界限。这些头与体之间用另外的carriage-return/行码序列来划定界限。请求接着包括原始字节,这些字节的语法和长度由Content-Length和Content-Type HTTP 头来识别。在这个例子中,内容是十二字节的普通文本字符串"Hello, World"。<BR><BR>  在处理了请求之后,HTTP服务器被期望发回一个HTTP响应到客户端。响应必须包括一个状态代码来表示请求的结果。响应也可以包含任意的体信息。下面是一个HTTP响应消息:<BR><BR>200 OK<BR>Content-Type: text/plain<BR>Content-Length: 12<BR>dlroW ,olleH<BR><BR>  在这个例子中,服务器返回状态代码200,它是HTTP中标准的成功代码。如果服务器端不能破解请求代码,它将返回下列的响应:<BR><BR>400 Bad Request <BR>Content-Length: 0 <BR><BR>  如果HTTP服务器决定到目标URI的请求应该临时转向另外的一个不同的URI,下列响将被返回:<BR><BR>307 Temporarily Moved <BR>Location: http://209.110.197.44/foobar <BR>Content-Length: 0 <BR><BR>  这个响应告知客户,请求将能够通过重新传递它到在Location头中指定的地址来被满足。<BR><BR>  所有的标准状态码和头都在RFC 2616中被描述。它们中很少的内容与SOAP用户直接相关,但有一个明显的例外。在HTTP/1.1,底层的TCP连接在多个请求/响应对之间重用。HTTP Connection头允许客户端或服务器中任何一方关闭底层的连接。通过增加下列HTTP头到请求或响应中,双方都会要求在处理请求后关闭它们的TCP连接:<BR><BR>Connection: close<BR><BR>  当与HTTP/1.0软件交互时,为了保持TCP连接,建议发送方加入下列HTTP头到每个请求或响应中:<BR><BR>Connection: Keep-Alive <BR><BR>  这个头使缺省的HTTP/1.0协议在每次响应后重新开始TCP连接的行为无法使用。<BR><BR>  HTTP的一个优点是它正被广泛的使用和接受。图4表示了一个简单的Java程序,它发送前面表示的请求并从响应中解析出结果字符串。<BR><BR>  下面则是一个简单的C程序用CGI来读取来自HTTP请求的字符串并通过HTTP响应把它的逆序串返回。<BR><BR>#include <stdio.h><BR>int main(int argc, char **argv) {<BR>char buf[4096];<BR>int cb = read(0, buf, sizeof(buf));<BR>buf[cb] = 0;<BR>strrev(buf);<BR>printf("200 OK\r\n");p> <BR>printf("Content-Type: text/plain\r\n");<BR>printf("Content-Length: %d\r\n", cb);<BR>printf("\r\n");<BR>printf(buf);<BR>return 0;<BR><BR>  服务器的实现是用Java servlet,以避免CGI的每个请求一个进程的开销。<BR><BR>一般  来说CGI是花费代价最小的写HTTP服务器端代码的方法。实际上,每一个HTTP服务器端产品都提供了一个更有效的机制来让你的代码处理一个HTTP请求。IIS提供了ASP和ISAPI作为写HTTP代码的机制。Apache允许你用运行在Apache后台程序中的 C或Perl来写模块。大多数应用服务器软件允许你写Java servlet,COM组件,EJB Session beans或基于可携带对象适配器(POA)接口的CORBA servants。</SPAN></P><br><br>          </DIV>		</TD>	</TR>	<TR> 		<TD class=center01>			<div align="center">来源:天极网 作者:<div>		</TD>		<TD width="280" class=center01>			<div align="center">			<font color=#0000FF><a href='chapter.php?id=387&volume=2&chapter=12'>上一页</a></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;			<font color=#0000FF><a href="serialize.php?id=387">回书目</a></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;			<font color=#0000FF><a href='chapter.php?id=387&volume=2&chapter=14'>下一页</a></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;			</div>		</TD>	</TR>	</TBODY></TABLE><table><tr><td width="760"> <table width="760" height="10" border="0" cellpadding="0" cellspacing="0">                        <tr>                                <td></td>                        </tr>                </table>                <!------------ 评论 ---------------->                <table width="760" border="0" cellpadding="0" cellspacing="0">                        <tr>                                <td><iframe width="100%" id=vs frameborder=0 scrolling=no src="comment_list1.php?id=387"></iframe>                                </td>                        </tr>                </table><br><script language=javascript>function CheckNetwordForm(theForm){        if("" == theForm.content.value)        {                alert("写两句吧~~");                theForm.content.focus();                return false;        }        var index;        for(index=0;index<theForm.content.value.length;index++)        {                if(" " != theForm.content.value.charAt(index))                        break;        }        if(index == theForm.content.value.length) {                alert("写两句吧~~");                theForm.content.focus();                return false;        }        if (theForm.content.value.length>100){                alert("评论字数不能超过100哦");                theForm.content.focus();                return false;        }        return true;}</script>                <!------------------ 评论 --------------->                <form name=netword method=post action="insertnetword.php" onsubmit="javascript: return CheckNetwordForm(this);">                <table width="760" border="0" cellpadding="0" cellspacing="0">                        <tr>                                <td height="25" class="text6">&nbsp;给此书打分:<a name="1"></a>                                        <select name="score">                                                <option value=5 selected>非常好</option>                                                <option value=4>还凑合</option>                                                <option value=3>一般吧</option>                                                <option value=2>不太行</option>                                                <option value=1>太差了</option>                                        </select> &nbsp; 用户名:                                        <input name="id" value=387 type="hidden" id="id">                                        <input name="backurl" value=/book/chapter.php?id=387&volume=2&chapter=13 type="hidden">                                        <input name="username" type="text" id="username" size="20" maxlength="20">                                        <font color="#666666">*评论字数请控制在一百字以内</font> </td>                        </tr>                </table>                <br>&nbsp;<textarea name="content" cols="80" rows="4" wrap="OFF" id="description"></textarea>                <input type="submit" name="Submit" value="提交">                </form>        </td> </tr></table></td></tr></table> <TABLE cellSpacing=0 cellPadding=0 width=760 border=0>  <TBODY>    <TR>       <TD width="1003" height=9 background=images/t_bj01.gif><IMG height=1     src="images/ccc.gif" width=1></TD>    </TR>  </TBODY></TABLE><TABLE cellSpacing=0 cellPadding=0 width=760 bgColor=#ffffff border=0>  <TBODY>    <TR>       <TD><HR width=760 noShade SIZE=1> </TD>    </TR>    <TR>       <TD align=middle><A class=black href="http://www.chinaren.com/"     target=_blank>ChinaRen</A> - <A class=black     href="http://big5.www.sohu.com/" target=_blank>繁体版</A> - <A class=black     href="http://hr.sohu.com/hrm.html" target=_blank>搜狐招聘</A> - <A class=black     href="http://add.sohu.com/" target=_blank>网站登录</A> - <A class=black     href="http://help.sohu.com/" target=_blank>帮助中心</A> - <A class=black     href="http://book.news.sohu.com/onClick=this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.sohu.com');return"     target=_blank false;>设置首页</A> - <A class=black     href="http://adinfo.sohu.com/" target=_blank>广告服务</A> - <A class=black     href="http://www.sohu.com/about/lianxi.htm" target=_blank>联系方式</A> - <A     class=black href="http://www.sohu.com/about/privacy.html"     target=_blank>保护隐私权</A> - <A class=black href="http://www.sohu.com/about/"     target=_blank>About SOHU</A> - <A class=black     href="http://www.sohu.com/about/" target=_blank>公司介绍</A><BR> <SPAN     class=eng>Copyright &copy; 2004 Sohu.com Inc. All rights reserved. 搜狐公司         版权所有</SPAN> </TD>    </TR>  </TBODY></TABLE></center></body></html><script language="JavaScript" src="http://nielsen.js.sohu.com/nnselect.js"></script><noscript><img src='http://ping.nnselect.com/ping.gif?c=119' height='1' width='1'></noscript>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -