第二十五讲 Web Service开发

主要内容
    1. 掌握Web Service的基本工作原理
    2. 理解Web Service的优势
    3. 掌握WebService的开发和使用

    什么是WebService?
        1. 如果想在网页上显示天气预报怎么做?
            1. 没有WebService,服务器相互似孤岛,使用WebService,缩小Web应用程序之间的"通信隔阂",增强了交互性
            2. 实现不同系统间的相互调用(语言无关,平台无关)
            3. 简单的说就是WebService就是服务器之间通信的一种手段

            4. WebService服务的工作原理
                使用SOAP协议传递SOAP消息,来往于服务器之间。

    开发Web服务三个步骤?
        1. 创建WebService
            1. WebService项目的扩展名是 .asmx
            2. 创建好的Web服务,只有前台后台两个文件,直接编辑的就是后台文件,前台文件上双击,同样打开的是后台文件。
            3. 运行默认页面的代码,生成的页面结果如下:

                此 Web 服务使用 http://tempuri.org/ 作为默认命名空间。

                建议: 公开 XML Web services 之前,请更改默认命名空间。

                每个 XML Web services 都需要一个唯一的命名空间,以便客户端应用程序能够将它与 Web 上的其他服务区分开。http://tempuri.org/ 可用于处于开发阶段的 XML Web services,而已发布的 XML Web services 应使用更为永久的命名空间。

                应使用您控制的命名空间来标识 XML Web services。例如,可以使用公司的 Internet 域名作为命名空间的一部分。尽管有许多 XML Web services 命名空间看似 URL,但它们不必指向 Web 上的实际资源。(XML Web services 命名空间为 URI。)

                使用 ASP.NET 创建 XML Web services 时,可以使用 WebService 特性的 Namespace 属性更改默认命名空间。WebService 特性适用于包含 XML Web services 方法的类。下面的代码实例将命名空间设置为“http://microsoft.com/webservices/”:

                C#
                [WebService(Namespace="http://microsoft.com/webservices/")]
                public class MyWebService {
                    // 实现
                }

                Visual Basic
                <WebService(Namespace:="http://microsoft.com/webservices/")> Public Class MyWebService
                    ' 实现
                End Class

                C++
                [WebService(Namespace="http://microsoft.com/webservices/")]
                public ref class MyWebService {
                    // 实现
                };

                有关 XML 命名空间的更多详细信息,请参阅 Namespaces in XML (XML 命名空间)上的 W3C 建议。

                有关 WSDL 的更多详细信息,请参阅 WSDL Specification (WSDL 规范)。

                有关 URI 的更多详细信息,请参阅 RFC 2396。
            
            4. WebService服务类继承的是WebService
            如: public class MyBankService : System.Web.Services.WebService

            5. MyBankService这个新建的服务后台文件的结构:
                1. '[]'内的内容都是此所具有的特性,或叫属性
                2. 公开之间建议更改特性中的Namespace命名空间名字,最好使用全球唯一的,如:域名,http://www.scctv.cn

                3. 注意在后台的类文件,类的内部方法签名上边有个[WebMethod],没有它,在对外提供服务的页面上就看不到它。所以要想将那个方法提供给互联网用户使用的话,必须有这个特性的指定才中。[WebMethod]的作用就是标识此方法为Web方法


        2. 发布WebService
            WSDL:Web Serveice Description Language,WebService描述语言,这个主要给WEB解析的。

            理解WEB服务
            1. WEB服务是可互操作的分布式应用程序
            2. WEB服务使用HTTP和XML进行通信(优点)
            3. WEB服务可以穿越防火墙,真正实现自由通信(优点)
            4. 通过SOAP实现异地调用



        3. 调用WebService
            1. 演示调用天气预报WEB服务,获取天气预报WEB服务提供的地址:
            http://www.webxml.com.cn/WebService/WeatherWebService.asmx

            2. 添加现有的WEB服务到开发平台的项目中,使用天气预报中心提供的服务地址在WEB项目中引用中添加服务引用,输入该服务地址,先前往获取这个服务,再自定义一下命名空间(建议修改见名知意),最后确定。

            3. 在后台代码中编辑方法对引用的WEB服务进行操作,通过WEB的命名空间进行逐级引用其中的接口或类。再对类实例的对象进行其方法工属性的操作。

            4. 一切就续后,就可以测试了,但是测试时会报错,这是因为在Web.Config文件中还有一项当添加WEB服务命名空间时自动生成的,以<client>标签包含起来的设置代码,需要调整。
            错误代码如:
                无法加载协定为“MyWeatherService.WeatherWebServiceSoap”的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分。

            web.config文件中的错误部分:
                <client>
                  <endpoint address="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx"
                    binding="basicHttpBinding" bindingConfiguration="WeatherWebServiceSoap"
                    contract="MyWeatherService.WeatherWebServiceSoap" name="WeatherWebServiceSoap" />
                  <endpoint address="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx"
                    binding="customBinding" bindingConfiguration="WeatherWebServiceSoap12"
                    contract="MyWeatherService.WeatherWebServiceSoap" name="WeatherWebServiceSoap12" />
                </client>

            删除一个就可以了。

            
            这里老师演示中出的问题,是因为在web.config文件中的<client>标签中出现重复的<endPoint>标签内容。删除一个重复项,保留一个就行了。
            
            这个自动生成的两个重复项的原因,是VS2010平台的原因,在VS2008和VS2005中是没有这个BUG的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值