Legacy Guidance:
This article introduces classic XML web services and ASP.NET .asmx services.
It is preserved for teams maintaining older integrations. For modern service development,
see our coverage of Web API, gRPC, and HTTP-based microservices in the Tutorials section.
Introduction
The original article describes web services as a way to transmit data over the Internet or an intranet using
open standards, so that other applications can call these services programmatically. It highlights XML, SOAP,
WSDL, and UDDI as the core technologies behind this model. :contentReference[oaicite:7]{index=7}
The key benefit is interoperability: applications written in different languages and running on different platforms
can exchange structured data as long as they agree on the same web service contract.
Core standards: XML, SOAP, WSDL, and UDDI
The legacy description breaks web services into several cooperating standards: :contentReference[oaicite:8]{index=8}
XML – defines a platform-neutral data format using hierarchical tags. It is both human-readable
and machine-readable, making it a natural choice for messages exchanged between systems.
SOAP (Simple Object Access Protocol) – a protocol that wraps XML messages in an envelope and
defines how they are transported over networks such as HTTP. SOAP can route messages to the correct endpoint
and handle error reporting.
WSDL (Web Services Description Language) – an XML document that describes a web service: its methods,
input and output types, and the network address where it can be reached.
UDDI (Universal Description, Discovery, and Integration) – a registry where organizations can
publish and discover web services.
Together, these standards allow a client to discover a service, understand its contract, send messages to it,
and consume its responses.
ASP.NET .asmx web services
In classic ASP.NET, web services are often implemented as .asmx files. The original article explains
that these files are compiled when requested for the first time, and that the service code ultimately resides in a
pre-compiled .NET assembly. :contentReference[oaicite:9]{index=9}
using System.Web.Services;
namespace Services
{
[WebService(Namespace = "http://example.com/services")]
public class MathService : WebService
{
[WebMethod]
public int Add(int x, int y)
{
return x + y;
}
}
}
When you navigate to the .asmx URL in a browser, ASP.NET shows a test page that lists public web methods and allows
you to invoke them interactively, which the original article notes as a useful way to test data integrity and see
SOAP, HTTP GET, and HTTP POST requests and responses. :contentReference[oaicite:10]{index=10}
Testing and debugging web services
Classic ASP.NET makes it easy to test web services:
Navigate to the .asmx URL to see a list of public methods.
Use the built-in test harness to send sample requests and view XML responses.
Inspect SOAP envelopes, HTTP GET, and HTTP POST requests and responses for debugging. :contentReference[oaicite:11]{index=11}
This makes it clear how parameters are serialized into XML and how the service returns data, which is particularly
helpful when integrating with non-.NET clients.
Modern considerations
XML and SOAP-based web services paved the way for interoperable distributed systems, but many modern APIs now favor
HTTP+JSON, RESTful designs, or binary protocols such as gRPC. These newer stacks often provide simpler tooling and
better performance.
If you maintain an existing ASMX-based system, the concepts of XML, SOAP, WSDL, and UDDI remain important.
For new services, consider building HTTP APIs with ASP.NET Core Web API or using gRPC for high-performance,
strongly typed communication between services.
Quick FAQ
What is a web service?
A web service is a software component that exposes operations over a network using open standards. Clients send
structured requests, typically in XML or JSON, and receive structured responses that can be processed programmatically.
Why are XML, SOAP, WSDL, and UDDI important for classic web services?
XML provides a neutral data format, SOAP defines how messages are structured and transported, WSDL documents the
service contract, and UDDI offers a registry for publishing and discovering services. Together, they make it
possible for heterogeneous systems to interoperate reliably.
How do ASP.NET .asmx web services expose methods to clients?
Public methods marked with the [WebMethod] attribute are exposed to clients. ASP.NET creates
SOAP endpoints and, in some cases, HTTP GET/POST endpoints for these methods, automatically handling XML
serialization and deserialization of request and response messages.
What should I use instead of ASMX for new web services?
For new development, consider ASP.NET Core Web API for HTTP+JSON services, gRPC for high-performance RPC between
services, or other modern frameworks recommended by Microsoft. These approaches are more flexible and better
aligned with current tooling and cloud-native architectures.