IPP Mail Archive: RE: IPP>MOD Why use Job-Id instead of Job-URI for Jobs?

RE: IPP>MOD Why use Job-Id instead of Job-URI for Jobs?

Paul Moore (paulmo@microsoft.com)
Fri, 5 Sep 1997 11:03:53 -0700

We discussed this at the august meeting. You cannot extract the jobid
from the job-URI. Remember a 'particluar implmentation' has no meaning
for things visible in a wire protocol. There is both the client and the
server - if the url is to be in a specifc format then both sides must
agree to this. The only way that this would work is if we mandated the
url format (which we discussed doing and voted against)

> -----Original Message-----
> From: Roger K Debry [SMTP:rdebry@us.ibm.com]
> Sent: Friday, September 05, 1997 6:07 AM
> To: ipp@pwg.org
> Subject: Re: IPP>MOD Why use Job-Id instead of Job-URI for Jobs?
>
> I agree with Jay that this seems like a clean approach. However,
> if I've understood all of the arguments, I thought that dictating the
> form
> of the URL was a no-no. On the other hand, if a PARTICULAR
> IMPLEMENTATION,
> such as NT, requires a 32-bit integer job ID to be consistent with its
> existing
> APIs, then there should be no reason why THAT implementation could not
> use the approach that Jay suggests to easily map to an internal
> integer job
> identifier.
>
> I know that this may not solve the problem for a gateway somwhere in
> the
> middle, but it does seem to me that for a particular server
> implementation
> this works fairly well.
>
>
> Roger K deBry
> Senior Technical Staff Member
> Architecture and Technology
> IBM Printing Systems
> email: rdebry@us.ibm.com
> phone: 1-303-924-4080
>
>
> ---------------------- Forwarded by Roger K Debry/Boulder/IBM on
> 09/05/97 06:56
> AM ---------------------------
>
> ipp-owner @ pwg.org
> 09/04/97 10:06 PM
> Please respond to ipp-owner@pwg.org @ internet
>
> To: Robert.Herriot @ Eng.Sun.COM @ internet
> cc: ipp @ pwg.org @ internet
> Subject: Re: IPP>MOD Why use Job-Id instead of Job-URI for Jobs?
>
> Bob,
>
> Thanks for the rebuttal info on this issue. You continually point
> out this basic desire/premise/goal:
>
> IPP job id == LPD job id
>
> You gave lots of good examples, paying particular attention to
> exposure issues with end users. In fact, my reading of your message
> makes me come away believing that consistent end user visibility is
> extremely high on the priority list...maybe even #1.
>
> This may be. (I'm not sure, myself.) However, if the exposure of
> job ids is so critical, then why don't we also insist on:
>
> IPP printer name == LPD printer name
>
> I've been assuming all along that an IPP printer name would appear
> to an end user as something like:
>
> http://host.domain/printer/<name>
>
> (Or any one of five bazillion permutations on the URL theme.)
>
> However, in LPD land, a "printer" is almost always a "simple" name,
> such as: laser1, plot3, mkt, lp3, etc. Simple sequences of just
> letters and numbers (usually), with possibly a sprinking of hyphens,
> underscores, etc. However, almost never is the name constructed as
> a series of sub-tokens assembled in a hierarchical fashion. (Sure,
> it can be done...but it just *isn't* commonly done in real practice.)
>
> Aren't you concerned with that kind of shift in visibility, too?
>
> Of course, one can always assume some sort of standard (de facto)
> mapping mechanism, whereby the "simple" name is always the last token
> of the URL string:
>
> http:://host.domain/printer/laser1 == laser1
>
> If this is good enough, then why can't the same be true for job
> ids, eg:
>
> http://somewhere.net.domain/subsys/server3/345 == 345
>
> If nothing else, then such a simple job id mapping mechanism can be
> standardized for IPP "printers" front-ending LPD queues. Even in the
> non-LPD case, this kind of job identification looks pretty clean:
>
> http:://host.domain/printer/laser1/345
>
> This kind of approach looks real clean to me, but maybe I'm just a
> bit too close to the code, if you know what I mean.
>
> I must be missing something, right? Thanks for your insights.
>
> ...jay
>
> ----------------------------------------------------------------------
> -- JK Martin | Email: jkm@underscore.com --
> -- Underscore, Inc. | Voice: (603) 889-7000 --
> -- 41C Sagamore Park Road | Fax: (603) 889-2699 --
> -- Hudson, NH 03051-4915 | Web: http://www.underscore.com --
> ----------------------------------------------------------------------
>
>
> Robert Herriot wrote:
> >
> > I will try to explain why the Job-URI is harder to support than the
> > Job-Id for an LPD gateway. I will also explain why the requirements
> > that call for a Job-URI are not well enough understood to be
> > requirements.
> >
> > ANALYSIS OF JOB-URI VS JOB-ID
> >
> > For the gateway, there are two directions: IPP-to-LPD and
> LPD-to-IPP.
> >
> > I have two goals for these gateways. They should
> > 1) be stateless: which means that gateways get all their
> information
> > from the downstream server rather than storing information
> about
> > jobs in the gateway.
> > 2) provide values to the client that are the same (possibly after
> a
> > conversion algorithm) as the client could get from bypassing
> the
> > gateway, which means gateways pass information without
> converting
> > it or converting it in an algorithmic fashion that a client
> can
> > apply an inverse function to. This provision is important
> because
> > some applications on a client may use the gateway and others
> may
> > bypass it.
> >
> > The Job-URI is hardest to support in the LPD-to-IPP direction
> because
> > it fails to meet goal #1 above (it requires state). There is no
> simple
> > way to algorithmically map the IPP Job-URI to an LPD Job-Id because
> the
> > Job-URI is opaque.
> >
> > The Job-URI solution for both directions fails to meet goal #2
> because
> > it has the problem of exposing both Job-Ids and Job-URIs to a user
> for
> > the same set of jobs and there is no conversion algorithm.
> >
> > Now for the two gateway directions for both Job-Id and Job-URI.
> >
> > First let's examine the IPP-to-LPD gateway where the gateway returns
> a
> > Job-Id. The gateway creates the job-Id for LPD when it receives a
> > Print-Job operation. It then returns the LPD job-Id to the IPP
> client
> > as the value of the Job-Id. This Job-Id is the same one that
> Cancel-Job
> > uses to specify the job to cancel. When a client performs Get-Jobs,
> > the Job-Ids in the lpq reply to the gateway become the values of the
> > Job-Id attribute in the Get-Jobs response. If the client sends an
> lpq
> > directly to the printer, bypassing the gateway, it sees the same
> > values for Job-Ids.
> >
> > Next, let's examine the IPP-to-LPD gateway where the gateway returns
> a
> > Job-URI. The gateway creates the job-Id for LPD when it receives a
> > Print-Job operation. It then returns to the IPP client the Job-URI
> > which consists of the printer-URI and the LPD Job-Id. This Job-URI
> is
> > the same one that Cancel-Job uses to specify the job to cancel.
> Because
> > the gateway composed the Job-URI, it can parse it into the
> printer-URI
> > and job-URI. When a client performs Get-Jobs, the Job-Ids in the lpq
> > response to the gateway are composed with the printer-URI to form
> the
> > value of each Job-URI in the Get-Jobs response. If the client sends
> an
> > lpq directly to the printer, bypassing the gateway, it sees the
> job's
> > Job-Ids rather than their Job-URIs. So the client gets different
> values
> > for identifying the jobs and the client cannot convert between
> Job-URI
> > values and Job-Id values because the rules for composing Job-URIs
> are
> > not specified.
> >
> > Next, let's examine the LPD-to-IPP gateway where the gateway returns
> a
> > Job-Id. The gateway client creates an job-Id which the gateway
> ignores
> > because the IPP server creates its own Job-Id. Existing LPD servers
> > sometimes ignore the Job-Id value requested by the client. LPD
> provides no
> > mechanism for the gateway to inform the client of the Job-Id. The
> > client must use the lpq command to get Job-Ids. When a client
> performs
> > an lpq, the Job-Ids in the Get-Jobs reply to the gateway become the
> > values of the lpq response. This Job-Id from lpq is the same one
> that lprm
> > command uses to specify the job to cancel. If the client sends a
> > Get-Jobs directly to the printer, bypassing the gateway, it sees the
> > same values for Job-Ids.
> >
> > Finally, let's examine the LPD-to-IPP gateway where the gateway
> returns
> > a Job-URI. The gateway client creates a job-Id. The gateway either
> > remembers this Job-Id or creates its own because the IPP server
> creates
> > a Job-URI which has no direct relationship to the integer Job-Id
> > required by LPD. When a client performs an lpq, the Job-URIs in the
> > Get-Jobs reply to the gateway must be mapped to the Job-Id for the
> lpq
> > response. When the gateway receives an lprm command, it must map
> the
> > received Job-Id to the IPP Job-URI required for Cancel-Job. If the
> > client sends a Get-Jobs directly to the printer, bypassing the
> gateway,
> > it sees Job-URIs which have no relation to the Job-Id's that it sees
> via
> > the gateway. There are two ways to handle the mapping. Either the
> > gateway maintains its own internal table which it must update when
> jobs
> > complete or it needs a scratch-pad attribute in the job where it can
> store
> > the Job-Id. The latter case would require that servers not throw
> away
> > unsupported attributes and a search of the mapping would require
> that the
> > gateway perform a Get-Jobs.
> >
> > QUESTIONS ABOUT VIRTUES OF JOB-URI SOLUTION
> >
> > Now that I have presented the problems that the Job-URI presents, I
> > now would like to question its touted advantages. I have heard two.
> >
> > 1) It allows for redirection more easily
> > 2) It allows for better load balancing
> >
> > I address both below and conclude that Job-URI's aren't necessary
> with
> > our current understanding of requirements.
> >
> > I also wonder if Job-URIs that are unrelated to the Printer-URI
> > containing the job will confuse users who are exposed to them. A
> user
> > thinks of a job as belonging to a printer. So if a Job is identified
> by
> > the Printer-URI that the user selected and some number, that seems
> to
> > me like a simpler concept.
> >
> > REDIRECTION
> >
> > Whether a job is represented uniquely by Job-URI or
> (Printer-URI,Job-Id),
> > either of these "names" references some host somewhere and when a
> job
> > moves, that host has to keep track of where is has moved to, and
> when
> > to delete the reference. It would seem to me that either Job-URI or
> > (Printer-URI,Job-Id) are reasonable ways to keep track of jobs, even
> > when they move. So either should suffice in this case and since
> Job-Id
> > is easier for legacy connections, Job-Id is the better solution.
> >
> > In my opinion, the redirection of print jobs is a research area
> > that is not well enough understood for us to be creating
> requirements
> > for a standard.
> >
> > LOAD BALANCING
> >
> > The idea is that the Job-URI may reference a different host than the
> > Printer-URI references so that references to the job don't load the
> > print server.
> >
> > There may be other solutions, such as clustering of Web servers,
> which
> > solve the problem without the added complexity of Job-URIs.
> >
> > This problem is way beyond the 80% solution we are striving for and
> is
> > also a research area that is not well enough understood for us to be
> > creating requirements for a standard.
> >
> >
> >
>

Our website uses cookies on your device to give you the best user experience. By using our website, you agree to the placement of these cookies. To learn more, read our privacy policy. Read Privacy Policy