The Windows Sockets 2 network transport and name resolution services are provided as a WOSA (Windows Open Services Architecture) component. They consist of both an application programming interface (API) used by applications and service provider interfaces (SPI's) implemented by service providers. This document defines the service provider interfaces for data transport and name resolution. While it is designed to be a stand-alone reference for the implementors of Windows Sockets 2 service providers, developers are strongly encouraged to obtain and become familiar with the Windows Sockets 2 Application Programming Interface as well.
Windows Open Service Architecture (WOSA) provides a common set of interfaces for connecting front-end applications with back-end services. The front-end application and back-end services need not speak each other's language in order to communicate as long as they both know how to talk to their respective WOSA interfaces. As a result, WOSA allows application developers and vendors of back-end services to mix and match applications and services to build solutions that shield programmers and users from the underlying complexity of the system. WOSA defines an abstraction layer to heterogeneous computing resources through the WOSA set of APIs. Because this set of APIs is extensible, new services and their corresponding APIs can be added as needed. Applications written to the WOSA APIs have access not only to all the various computing environments supported today, but also to all additional environments as they become available. Moreover, applications don't have to be modified in any way to enjoy this support.
Each service recognized by WOSA also has a set of interfaces that service-provider vendors use to take advantage of the seamless interoperability that WOSA provides. In order to provide transparent access for applications, each implementation of a particular WOSA service simply needs to support the functions defined by its service provider interface.
Like most WOSA components, Windows Sockets 2 uses a Windows dynamic-link library (DLL) that allows applications and service providers software components to be bound together at runtime. In this way, applications are able to connect to services dynamically. An application needs to know only the definition of the interface, not its implementation.