天天看點

使用VS快速将類方法封裝成Web服務

在項目中有時需要将整個業務邏輯類下面的方法封裝成Web服務,由于隻是簡單的封裝,在Web服務的背景代碼中不會寫上任何邏輯,這時我們就需要Web服務提供的方法與類下面提供的方法相同,這是就考慮到使用接口。申明一個接口,然後讓業務邏輯類和Web服務類都實作該接口即可。這裡我們就要用到VS中一個很好的功能:重構!

假設我們現在有一個業務邏輯類HelloLogic用于處理一些業務邏輯,如:

使用VS快速将類方法封裝成Web服務

namespace Hello

使用VS快速将類方法封裝成Web服務

{

使用VS快速将類方法封裝成Web服務

    public class HelloLogic

使用VS快速将類方法封裝成Web服務

    {

使用VS快速将類方法封裝成Web服務

        public string SayHello()

使用VS快速将類方法封裝成Web服務

        {

使用VS快速将類方法封裝成Web服務

            return "Hello";

使用VS快速将類方法封裝成Web服務

        }

使用VS快速将類方法封裝成Web服務

        public string SayHello(string name)

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

            return "Hello" + name;

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

        public string SayBye()

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

            return "Bye";

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

    }

使用VS快速将類方法封裝成Web服務

點選“Refactor”菜單下的“Extract Interface”選項提取該類的接口,将出現如圖視窗

<a href="https://images.cnblogs.com/cnblogs_com/studyzy/WindowsLiveWriter/VSWeb_A2AE/image_2.png"></a>

選中所有的方法,點選OK即生成接口代碼:

使用VS快速将類方法封裝成Web服務

using System;

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

    interface IHelloLogic

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

        string SayBye();

使用VS快速将類方法封裝成Web服務

        string SayHello();

使用VS快速将類方法封裝成Web服務

        string SayHello(string name);

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

由于需要在Web服務項目中使用該接口,這裡需要将interface改成pulic的。然後在web服務項目中添加對該程式集的引用。建立HelloWebService頁面,在背景代碼上申明實作該接口:

使用VS快速将類方法封裝成Web服務

[WebService(Namespace = "http://tempuri.org/")]

使用VS快速将類方法封裝成Web服務

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

使用VS快速将類方法封裝成Web服務

public class HelloWebService : System.Web.Services.WebService,Hello.IHelloLogic

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

将光标放在IHelloLogic上,使用快捷鍵Shift+Alt+F10,将出現如圖提示:

<a href="https://images.cnblogs.com/cnblogs_com/studyzy/WindowsLiveWriter/VSWeb_A2AE/image_4.png"></a>

第一個是實作該接口,第二個是明确實作該接口,這裡由于隻有這個接口,而且就算有多個接口,隻要接口中的函數不重複就可以直接使用第一個。選擇第一個選項,系統将自動生成代碼:

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

    IHelloLogic Members

使用VS快速将類方法封裝成Web服務

接下來隻需要将方法調用寫到具體的函數裡面就可以了。當然不能忘記了使用WebMethod特性。

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

public class HelloWebService : System.Web.Services.WebService, Hello.IHelloLogic

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

    HelloLogic logic = new HelloLogic();

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

現在的代碼已經可以編譯通過了,但是有一個問題那就是在一般類方法中可以使用函數名重載,但是Web服務不能使用,我們這裡對SayHello方法的重載需要進行修改。那麼怎麼實作Web服務下的函數重載拉?那就要用到MessageName屬性對方法進行重命名了。使用MessageName 屬性後還沒有完,[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]這裡的标注使得該Web服務不符合 WS-I Basic Profile v1.1,需要将屬性值改為WsiClaims.None。最終完成的代碼應該是:

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

using System.Collections;

使用VS快速将類方法封裝成Web服務

using System.Linq;

使用VS快速将類方法封裝成Web服務

using System.Web;

使用VS快速将類方法封裝成Web服務

using System.Web.Services;

使用VS快速将類方法封裝成Web服務

using System.Web.Services.Protocols;

使用VS快速将類方法封裝成Web服務

using System.Xml.Linq;

使用VS快速将類方法封裝成Web服務

using Hello;

使用VS快速将類方法封裝成Web服務

/// &lt;summary&gt;

使用VS快速将類方法封裝成Web服務

/// Summary description for HelloWebService

使用VS快速将類方法封裝成Web服務

/// &lt;/summary&gt;

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

[WebServiceBinding(ConformsTo = WsiProfiles.None)]

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

調用的時候我們将看到一個SayHello方法,一個SayHello1方法,這裡的SayHello1方法就是對應的SayHello(string)方法了。

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

using System.Collections.Generic;

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

using System.Text; 

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

namespace ConsoleApplication1

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

    class Program

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

        static void Main(string[] args)

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

            HelloService.HelloWebServiceSoapClient h = new ConsoleApplication1.HelloService.HelloWebServiceSoapClient();

使用VS快速将類方法封裝成Web服務

            Console.WriteLine(h.SayBye());

使用VS快速将類方法封裝成Web服務

            Console.WriteLine(h.SayHello());

使用VS快速将類方法封裝成Web服務

            Console.WriteLine(h.SayHello1("test"));

使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務
使用VS快速将類方法封裝成Web服務

好了,整個Web服務的調用就已經完成了,使用VS自帶的重構功能來提取接口,實作接口有助于提供我們的開放效率,同時也降低了我們在封裝成web服務的時候發生遺漏、拼寫錯誤等失誤。

由于本人對Web服務領域涉足未深,是以可能有錯誤之處,希望大家指正。

本文轉自深藍居部落格園部落格,原文連結:http://www.cnblogs.com/studyzy/archive/2008/03/18/1111253.html,如需轉載請自行聯系原作者

繼續閱讀