|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
以前学了大概半年时间的asp(没有机会做大系统,最多是自己对公司系统做些调整和修改还有一些小程序)。应该说开始接触asp.net是今年元月5号的事。现在很想把公司的系统重新用.net来架构,却不知道如何下手。asp.net|web如今Internet正在不休地开展着,在互联网使用刚入手下手的时分,我们扫瞄的网页只是静态的,不成交互的。而如今跟着手艺的日趋开展,将供应给网页扫瞄者一个可编程的Web站点。这些站点将在构造、使用、服务、驱动上加倍严密的分离在一同,这些站点将经由过程一些使用软件间接毗连到另外一个Web站点,这些可编程的Web站点比拟传统的web站点来讲,将变得加倍能反复利用,也加倍智能化!
.net平台给我们供应了一种运转情况,即公用言语运转情况(CLR,CommonLanguageRuntime)。对CLR来讲,它供应了一种内置机制来创立一个可编程的站点,、关于Web程序开辟者和VB程序员来讲,这将是分歧、熟习的。这类模子是能够反复利用,也能够再扩大。它包括了开放的Internet尺度(HTTP,XML,SOAP,SDL)。以便它能被网页扫瞄者会见。
ASP.NET利用.asmx文件来对WebServices的撑持。.asmx文件和.aspx文件一样都属于文本文件。它包括在.aspx文件当中,成为ASP.NET使用程序的一部分。
上面我们将举一个复杂的例子来先容.asmx文件,我们仍是从"Hello,World"这个典范的例子提及,代码以下:
<!--文件名:WebServicesisam.asmx-->
<%@WebServiceLanguage="VB"Class="HelloWorld"%>
ImportsSystem.Web.Services
PublicClassHelloWorld:InheritsWebService
PublicFunction<WebMethod()>SayHelloWorld()AsString
Return("HelloWorld")
EndFunction
EndClass
申明:
1.编码最入手下手必需举行WebService声明,从而界说这个文件为一个WebService。并且,在统一行中设置好编程言语的范例。
2.然后,引进名字空间System.Web.Services。注重,这个名字空间属于最基础的元素,必需要包括它。
3.接着,声明service中的功效模块,也就是类模块,这里的类名叫HelloWorld。这个类来历于基类WebService,并且应当是public范例。
4.最初,界说service的可会见办法。在暗示办法的标记后面,要设置好自界说属性。对应于C#言语,属性值就是[WebMethod];对应于VB,就是。假如没有设置这个属性,那末这个办法就不克不及从service中会见。一个部分使用可使用任何的public范例的类,可是只要具有[WebMethod]的类才能够经由过程SOAP被远程地会见。
当对service的哀求产生时,.asmx文件将主动地被ASP.NET运转情况所编译。随后的哀求就能够由缓冲的预编译范例工具实行。
为了测试编写好的代码,我们需用一个撑持ASP.NET的Web服务器。假定这个Web服务器的称号叫做server1,其上有一个假造目次test。请跟从上面步骤入手下手测试:
1.将代码保留为HelloWorld.asmx
2.放到Web服务器Foo的假造目次Bar下
3.翻开InternetExplorer5,在地点栏输出http://server1/test/HelloWorld.asmx
这时候,我们将看到关于这个WebService的公用办法-也就是那些标志为WebMethod属性的字符,并得知挪用这些办法可使用的协定,好比SOAP大概HTTPGET。
在InternetExplorer的地点栏中输出http://Foo/Bar/HelloWorld.asmx?SDL后,将发生基于服务形貌言语(ServiceDescriptionLanguage:SDL)语法的具有不异信息的XML文件。这个SDL文件十分主要,客户端就是利用它来会见service。
从客户端举行会见:
除同意开辟者利用的创立WebServices的手艺之外,Microsoft的.net框架给客户端供应了一套会见并利用WebServices的精巧且深邃的工具和代码。因为WebServices是基于如复杂工具会见协定SOAP(SimpleObjectAccessProtocol)和HTTP如许的开放协定尺度的,从而,我们就能够利用这类客户端手艺利用非ASP.NET的WebServices。固然,这也需用高程度地分解ASP.NETWebServices和这类客户端手艺。
SDK中有一个工具叫做WebServiceUtil.exe,我们可使用它来下载一个WebServices的SDL形貌言语,并创立表达这个Service的代办署理类。好比,当我们输出以下命令,就能够创立一个叫做HelloWorld.cs的代办署理类:
WebServiceUtil/c:proxy/pa:http://someDomain.com/someFolder/HelloWorld.asmx?SDL
这个类看起来与后面创立的类十分类似。它包括一个办法SayHelloWorld,该办法前往一个字符串。将这个代办署理类编译到一个使用程序中,然后挪用这个代办署理类的办法,了局就是:经由过程HTTP,这个代办署理类包装SOAP哀求,然后吸收SOAP编码呼应,最初搜集成为一个字符串。
请看关于WebService的一个客户端例程:
客户端会见的文件:clint.aspx,内容以下:
<%@ImportNamespace="DataTypesService"%>
<html>
<style>
div
{
font:8ptverdana;
background-color:cccccc;
border-color:black;
border-width:1;
border-style:solid;
padding:10,10,10,10;
}
</style>
<scriptlanguage="VB"runat="server">
PublicSubPage_Load(SenderAsObject,EAsEventArgs)
DimDAsDataTypes=NewDataTypes()
Message1.InnerHtml=D.SayHello()
Message1.InnerHtml=Message1.InnerHtml&D.SayHelloName("Bob")
Message3.InnerHtml=Message3.InnerHtml&D.GetMode()
DimMyIntArrayAsInteger()=D.GetIntArray()
DimMyStringAsString="ContentsoftheArray:<BR>"
ForI=0ToMyIntArray.Length-1
MyString=MyString&MyIntArray(I)&"<BR>"
Next
Message2.InnerHtml=Message2.InnerHtml&MyString
DimMyOrderAsOrder=D.GetOrder()
Message4.InnerHtml=Message4.InnerHtml&"<BR>OrderID:"&MyOrder.OrderID
Message4.InnerHtml=Message4.InnerHtml&"<BR>Price:"&MyOrder.Price
DimMyOrdersAsOrder()=D.GetOrders()
Message5.InnerHtml=Message5.InnerHtml&"<BR>OrderID:"&MyOrders(0).OrderID
Message5.InnerHtml=Message5.InnerHtml&"<BR>Price:"&MyOrders(0).Price
EndSub
</script>
<bodystyle="font:10ptverdana">
<H4>UsingDataTypeswithWebServices</H4>
<h5>MethodsthatreturnaPrimitive(String):</h5>
<divid="Message1"runat="server"/>
<h5>MethodsthatreturnanArrayofPrimitives(Integers):</h5>
<divid="Message2"runat="server"/>
<h5>MethodthatreturnsanEnum:</h5>
<divid="Message3"runat="server"/>
<h5>MethodthatreturnsaClass/Struct:</h5>
<divid="Message4"runat="server"/>
<h5>MethodthatreturnsanarrayofClasses/Structs:</h5>
<divid="Message5"runat="server"/>
</body>
</html>
在客户端程序中,我们利用<%@ImportNamespace="DataTypesService"%>来引进DataTypesService这个我们自界说的名字空间。然后在程序中只是挪用了DataTypesService中的办法。
java的设计机制:首先产生一个中间码,第二部编译为本地(机器)码。这个机制有很大的缺点。 |
|