IPP Support Model
The sections that follow describe the various aspects of the IPP support model.
IPP Object Model
IPP contains two basic object types: Printer and Job. Each object type contains
characteristics of a real printer or a real print job. Each object type
is defined as a set of possible attributes that can be supported
by that particular object type.
To enable all Printer and Job objects to be unambiguously referenced, they are
all identified by a Uniform Resource Identifier (URI). The URI concept and implementation
as an identifier is useful because it provides a means of uniquely identifying
both the method of communicating with the print service (IPP) and a distinct
network identifier for a printer queue (//server/printers/queue) or job.
When a print request is created, the IPP protocol message generated must contain
the printer-uri of the Printer object the operation is to be performed against.
Possible values for a printer-uri can be retrieved from a printer object or
naming service printer-uri-supported attribute.
IPP Printer Object
The Printer object is the main object in the IPP model. The
Printer object provides the server-side support for IPP. The Printer object contains the functions
that are normally associated with physical output devices. These functions include spooling, scheduling,
transformation, and managing of multiple devices that are associated with the print server.
Printer objects are uniquely identified by a printer-uri. They can be registered as entries
in a directory for the purpose of searching and locating static information about
the Printer object, such as name, context, and printer capabilities. Dynamic information, for
example, the number of jobs that are queued to the printer, errors and
warnings, are associated with the Printer object itself.
Note - A Printer object can be used to represent a real or virtual
device, as long as the semantics are consistent with those of a Printer
object.
IPP clients implement the protocol on the client-side, providing you, or a program
running on your behalf, the ability to query Printer objects for the purpose
of submitting and managing print jobs. The IPP server is the part of
the Printer object that implements the application semantics of the print service. Printer
objects can be embedded in an output device or they can be implemented
on network host that communicates with an output device.
When a job is submitted to a Printer object, the Printer object
validates the attributes in the request and then creates the Job object. When
you query a job status or monitor its progress, you are interacting with
the Job object. If you cancel a print job, you are using the
Job objects's Cancel-job operation. For more information about Job object operations, see IPP Operation Keywords.
IPP Job Object
A Job object is used to model a print job. Job objects
contain documents. The information that is required to create a Job object is
sent to the print sever in the form of a create request when
you initiate a print request through the IPP client to the Printer object.
The Printer object validates the create request, and if accepted, the Printer object
then creates a new Job object. This object is uniquely identified by a
combination of printer-uri and job-id attributes or a job-uri attribute. See IPP Operation Keywords for more
details.