.asmx的全面介紹

一、.asmx是什麼?

.asmx是一種基於HTTP協議的Web服務文件的擴展名,可以運用於ASP.NET平台,通過使用該擴展名的文件,可以構建出一種具有可被其他系統或程序調用的Web服務,使得不同的系統、程序之間可以相互調用,實現數據的共享與交換。

ASMX提供了用於Web服務的訪問和調用的SOAP(簡單對象訪問協議)API,SOAP是一種基於XML的協議,主要用於Web服務之間的通信,同時也支持其他協議,例如HTTP和SMTP。ASMX不僅能夠構建出SOAP風格的Web服務,還能夠構建出REST風格的Web服務,用於處理非XML數據。

二、.asmx的優點

ASMX具有以下幾個優點:

1. 開發簡單

ASMX是基於.NET框架的,因此它集成在Visual Studio的開發環境中,具有良好的開發工具和強大的功能庫,因此開發人員可以快速地開發和部署Web服務。

2. 跨平台性好

ASMX是基於標準的XML和HTTP協議的Web服務,因此可以在任何支持XML和HTTP協議的系統中運行,例如.NET和Java等。

3. 安全性高

ASMX使用HTTPS和數字證書進行數據安全加密和身份驗證,可以有效保護Web服務中的數據和業務邏輯。

4. 全局可用性

ASMX可以讓不同語言和平台之間的應用程序相互通信和交互,使得數據共享和業務邏輯可以在不同的應用程序中得以復用。

三、.asmx使用的範圍和場景

1. 範圍

ASMX可以應用於Web上的任何地方,例如公司內部的Web應用程序、公共網站和公司之間的交互性應用程序等,也可以應用於移動應用程序和嵌入式系統中。

2. 場景

ASMX的應用場景包括但不限於以下幾個方面:

(1) 提供Web服務

在Web服務中,ASMX可以作為一種Web服務文件類型,用來提供服務端的數據查詢和處理功能,向客戶端提供標準的API介面。

<%@ WebService Language="C#" Class="WebService1" %>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class WebService1 : System.Web.Services.WebService {

    [WebMethod]
    public int Add(int a, int b) {
        return a + b;
    }
}

(2) 實現跨域訪問

如果應用程序部署在不同的域名下,瀏覽器會限制跨域訪問,為了解決這個問題,可以通過Jquery對ASMX文件進行請求,實現跨域訪問。

$<script>
    var data = {
        name: "張三",
        age: 18
    };
    $.ajax({
        type: "post", // 數據提交方式
        contentType: "application/json", // 接收返回數據的格式
        url: "http://localhost:8088/HelloWebService.asmx/Hello", // 介面地址
        data: JSON.stringify(data), // 請求數據
        dataType: "json", // 返回數據的內容格式
        success: function (res) { // 請求成功的回調函數
            console.log(res);
        },
        error: function (err) { // 請求失敗的回調函數
            console.log(err);
        }
    });
</script>
[WebMethod]
public String Hello(String name, int age)
{
    // 根據接收到的參數返回不同的信息
    return "Hello, " + name + ", your age is " + age;
}

(3) 調用其他Web服務

可以通過ASMX文件來調用其他的Web服務文件,實現對服務的調用和利用。

var soap = "<?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>3</a>
      <b>5</b>
    </Add>
  </soap:Body>
</soap:Envelope>";

$.ajax({
    url: "http://localhost:8088/HelloWebService.asmx?op=Add",
    type: "POST",
    dataType: "xml",
    contentType: "text/xml; charset=utf-8",
    data: soap,
    success: function(xml) {
        console.log(xml); // 獲得返回的xml數據
    },
    error: function(err) {
        console.log(err);
    }
});

四、.asmx的缺點

ASMX的缺點主要包括:

1. 受限於HTTP和SOAP協議的限制

ASMX是基於HTTP協議和SOAP協議的,因此性能受到HTTP協議和SOAP協議的限制,請求和響應需要進行反序列化和序列化。

2. 不支持XML序列化

ASMX不支持XML序列化,因此在使用ASMX的過程中,需要遵循一定的數據格式規範,不能隨意改變數據格式。在處理複雜數據類型時,會存在一定的問題。

3. 無法處理JSON和REST協議

ASMX主要支持SOAP協議,不支持其他協議,例如REST和JSON等,不能滿足一些特定需求。

五、.asmx的實例:明文加密和解密

以下是明文加密和解密的ASMX文件示例:

<%@ WebService Language="C#" Class="EncryptAndDecrypt" %>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class EncryptAndDecrypt : System.Web.Services.WebService {

    [WebMethod]
    public string Encrypt(string inputString)
    {
        byte[] data = System.Text.Encoding.UTF8.GetBytes(inputString);
        data = new System.Security.Cryptography.SHA256Managed().ComputeHash(data);
        return System.Text.Encoding.UTF8.GetString(data);
    }

    [WebMethod]
    public string Decrypt(string inputString)
    {
        byte[] data = System.Convert.FromBase64String(inputString);
        return System.Text.Encoding.UTF8.GetString(data);
    }
}

原創文章,作者:JAHUQ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/351745.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
JAHUQ的頭像JAHUQ
上一篇 2025-02-17 17:02
下一篇 2025-02-17 17:02

相關推薦

  • Python應用程序的全面指南

    Python是一種功能強大而簡單易學的編程語言,適用於多種應用場景。本篇文章將從多個方面介紹Python如何應用於開發應用程序。 一、Web應用程序 目前,基於Python的Web…

    編程 2025-04-29
  • Python zscore函數全面解析

    本文將介紹什麼是zscore函數,它在數據分析中的作用以及如何使用Python實現zscore函數,為讀者提供全面的指導。 一、zscore函數的概念 zscore函數是一種用於標…

    編程 2025-04-29
  • 全面解讀數據屬性r/w

    數據屬性r/w是指數據屬性的可讀/可寫性,它在程序設計中扮演著非常重要的角色。下面我們從多個方面對數據屬性r/w進行詳細的闡述。 一、r/w的概念 數據屬性r/w即指數據屬性的可讀…

    編程 2025-04-29
  • Python計算機程序代碼全面介紹

    本文將從多個方面對Python計算機程序代碼進行詳細介紹,包括基礎語法、數據類型、控制語句、函數、模塊及面向對象編程等。 一、基礎語法 Python是一種解釋型、面向對象、動態數據…

    編程 2025-04-29
  • Matlab二值圖像全面解析

    本文將全面介紹Matlab二值圖像的相關知識,包括二值圖像的基本原理、如何對二值圖像進行處理、如何從二值圖像中提取信息等等。通過本文的學習,你將能夠掌握Matlab二值圖像的基本操…

    編程 2025-04-28
  • 瘋狂Python講義的全面掌握與實踐

    本文將從多個方面對瘋狂Python講義進行詳細的闡述,幫助讀者全面了解Python編程,掌握瘋狂Python講義的實現方法。 一、Python基礎語法 Python基礎語法是學習P…

    編程 2025-04-28
  • 全面解析Python中的Variable

    Variable是Python中常見的一個概念,是我們在編程中經常用到的一個變數類型。Python是一門強類型語言,即每個變數都有一個對應的類型,不能無限制地進行類型間轉換。在本篇…

    編程 2025-04-28
  • Zookeeper ACL 用戶 anyone 全面解析

    本文將從以下幾個方面對Zookeeper ACL中的用戶anyone進行全面的解析,並為讀者提供相關的示例代碼。 一、anyone 的作用是什麼? 在Zookeeper中,anyo…

    編程 2025-04-28
  • Switchlight的全面解析

    Switchlight是一個高效的輕量級Web框架,為開發者提供了簡單易用的API和豐富的工具,可以快速構建Web應用程序。在本文中,我們將從多個方面闡述Switchlight的特…

    編程 2025-04-28
  • Python合集符號全面解析

    Python是一門非常流行的編程語言,在其語法中有一些特殊的符號被稱作合集符號,這些符號在Python中起到非常重要的作用。本文將從多個方面對Python合集符號進行詳細闡述,幫助…

    編程 2025-04-28

發表回復

登錄後才能評論