网页服务

网页服务

分布式计算架构

客户端进程服务器进程

  1. 代理是代表服务器上实际对象的客户端。它将与实际对象实现实现相同的界面集。

  2. 当客户端请求远程对象的实例时,底层服务(框架)在客户端进程中创建实际对象和客户端进程中的代理对象,客户端将参考本地代理对象。

  3. 与实际对象一起在服务器上创建“存根”对象。代理和存根在套接字上彼此连接,并使用a互相通信 常用协议。

  4. 每当客户端调用代理方法时,就可以实现 Proxy 序列化方法的所有参数并将其运输到 存根 即代理人 Marshals. the request to stub.

  5. 在服务器上,stup. 将该请求命中并将对象的引用作为参数传递给实际对象中的实际方法。

  6. Server方法将数据返回到存根,序列化数据并返回代理,代理反序列化并将数据返回给客户端对象。

Sun(斯坦福大学网 - RMI(远程方法调用)–JRMP(Java RMI协议)

OMG(对象管理组) - CORBA Common Object Request Broker Arch。 -iiop(Internet互操作协议

MS(Microsoft)–DCOM(分布式组件对象模型)–DEC - 对象RPC(分布式计算环境)

问题: 因为代理和存根 紧接着 彼此,他们必须使用公共协议进行通信。作为RMI,COBRA和DCOM使用的协议是他们缺乏的本机协议 互操作性.

网络服务

网络服务是一个 商业对象 在Web服务器上运行并为其支持其支持的任何类型的应用程序/客户端肥皂“(简单的对象访问协议)协议。

肥皂 = XML + HTTP。 SOAP是W3C的规范。 - 它是一种建筑中性协定。

在.NET WebSevices由ASP.NET Framework管理。它们主要用于开发B-B(业务到业务)服务/应用程序。我们可以在MS.NET中开发的任何类型的应用程序都可以是WebService的客户端。

WSDL(Web服务描述语言):

它是一个基于XML的文档,包含了包含方法及其参数,URL等的WebService的完整信息…

对于开发的每个WebService,相应的WSDL文档将分发给客户端。使用本机实用程序程序的客户端从WSDL文档生成代理类。然后,该代理类可以由客户端应用程序使用,以调用WebService的功能/方法,而无需担心SOAP协议的存在。

开发WebService的步骤:

1.文件 新网站 ASP.NET Web服务和重命名service.asmx to demoservice.asmx

在Demoservice.asmx中:

<%@ 网络服务 =”C#” Codebehind.=”〜/ app_code / demoservice.cs” 班级=”DemoService” %>

  • Studio自动生成的Web服务类具有属性[WebService],也是从System.Web.Services.WebService类继承的。两者都是可选的要求。即,通过包含扩展ASMX的文件链接的任何公共类都可以将其作为WebService视为WebService。

  • 互联网上的客户端使用的WebService类的所有方法都必须标记为“WebMethod.“ ( 属性)

Step 2 [WebMethod.]

民众 Add( 一个, b)

{

返回 a + b;

}

  • 每个SOAP请求和响应都由SOAPENVelope组成。 Soapenvelope.沉闷, 肥皂, Soapfault..

  • 肥皂始终使用HTTP POST方法,SOAPENVelope将作为留言体提交。

  • HTTP客户端也可以使用在.NET中开发的WebService。这里的方法名称是提交的 PathInfo. 并且参数将发布为一串名称 - 值对。

http:// servername / applicationname / demoservice。Asmx./ 方法名称

肥皂请求

post /decwebservices/demoservice.asmx http / 1.1

主持人:localhost.

内容类型:文本/ XML; charset = UTF-8

内容长度: 长度

肥皂Action: “http://tempuri.org/Add”

<?xml version=”1.0″ encoding=”utf-8″?>

<soap:Envelope xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=”http://www.w3.org/2001/XMLSchema” xmlns:soap=”http://schemas.xmlsoap.org/soap/envelope/”>

<soap:Body>

<Add xmlns=”http://tempuri.org/”>

<a></a>

<b></b>

</Add>

</soap:Body>

</soap:Envelope>

肥皂响应

http / 1.1 200确定

内容类型:文本/ XML; charset = UTF-8

内容长度:长度

<?xml version=”1.0″ encoding=”utf-8″?>

<soap:信封 xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

xmlns:xsd=”http://www.w3.org/2001/XMLSchema” xmlns:soap=”http://schemas.xmlsoap.org/soap/envelope/”>

<soap:身体>

<addresponse. xmlns=”http://tempuri.org/”>

<addresult.>int</AddResult>

</addresponse.>

</soap:身体>

</soap:信封>

注意:要查看WSDL文档,我们可以使用以下URL

http://localhost/sepwebservices/service.asmx.?WSDL.

客户端应用程序:(在vs.net的新实例中)

第3步: 文件 新项目 Windows Application

第四步: 在解决方案资源管理器中 参考 右键点击 添加服务参考 在URL中提供Web服务的URL(可以从浏览器复制我们可以看到WebService方法的浏览器) 点击 on Go.

第5步: 在同一对话框中: 命名空间 = localhost. (使用托管托管的域名) 单击“添加参考”

笔记: 当使用添加Web引用的VS.Net中添加了WebService引用时,它会自动在当前项目中创建代理类,该项目使用称为uket wsdl.exe.。通过打开文件参考文献,可以查看相同的内容。 (在此之前单击显示解决方案资源管理器中的所有文件)。

第6步:

使用webserviceclientappname.localhost.

私人空白 BTNDEMO._点击(对象发件人,EventArgs E)

{

去脱离机器人 ds = new 去脱离机器人();

MessageBox.show(DS。添加(20,50).tostring());

}

第7步: 运行客户端应用程序

注意:如果将新方法添加到WebService类中,请右键单击WebService的Web引用,然后选择“更新ervice引用”以反映代理类中的新方法。