WFS stands for Web Feature Service. WFS is an OGC Mapping standard which is the companion to Web Mapping Service (WMS).
There are 2 main differences between WFS and WMS standards. The WMS standard primarily dishes out images, usually based on bounding box queries, requested projections and desired styles (SLD). It does have a GetFeatureInfo method which allows for getting a blob of text about a feature, but that blob is not well defined so the most you can do with it is just display it as is.
The Web Feature Service (WFS) on the other hand - dishes out map data usually in XML format such as GML or KML which contain both vector information as well as attribute information. Note more sophisticated WFS services can dish out data in other formats such as ESRI shape, Mapinfo Tab etc.. WFS also allows for attribute queries and other more sophisticated spatial queries. While it is more powerful than WMS in the sense that you can do more manipulation with the output and have a wider variety of querying options, the output is in general heftier and requires intense client parsing. This makes it not very suitable for band-width choked or weak client computer environments.
Another difference between WFS and WMS which is particularly annoying about WFS is that the current OGC WFS standard (1.0.0) allows for a WFS to publish data in only one Spatial Reference system, where as WMS can publish in multiple spatial reference systems. I'm not sure why this is, but it is very annoying. This means that for most OGC WFS compliant services asking for data in a particular spatial reference system other than the default is at best ignored.
WFS comes in 2 flavors. The original WFS which provides only querying cabilities and the Web Feature Service Transactional (WFS-T) which provides for the ability to update Spatial data.
Best practice is to use WFS in conjunction with WMS. When you need maps in image format such as PNG, GIF, Jpeg etc, use WMS, but sprinkle your WMS usage with a bit of WFS to get more detailed information and control over limited areas.
WFS requests are usually made using HTTP GETor XML HTTP POST
The basic web methods supported by an OGC WFS are
- GetCapabilities which lists all feature types, the projection, extents, and sometimes attribute fields of each feature type.
- GetFeature - which takes in list of feature types, bounding box, filters, max features you want returned etc. and outputs usually an xml document containing a GML encasement that lists the attributes and vector data for each feature
- DescribeFeatureType - a web method which provides meta data about requested feature types or type such as the attributes, number of features etc.
Note the parallel to a feature in WFS is a layer in WMS.