Hi Carson,
I'm using a derivation of Jeff Tapper's DataManager AS
class for
webservice calls. It is dynamic, in that the operation name and
arguments are passed in as parameters (not hardcoded in mxml tags).
Yes,
if the signature of the operation changes, the ap would have to
be updated.
But, if you add a new operation to the webservice that
the ap doesn't use,
(I might be wrong here) the ap wouldn't need to
be updated. I haven't tested
this. Maybe it would throw an error.
Just theoretical at this point.
:)
-TH
--- In [EMAIL PROTECTED]ups.com,
"Carson Hager" <carson.hager@...>
wrote:
>
> Hey
Tim,
>
> I'm very interested in what you said here. I'm not exactly
sure
how
> your client application would seamlessly handle a web
service API
> change. It seems to me that ( at least in the majority of
cases )
any
> WSDL change is going to cause changes in the client code
that
invokes
> the web service so you're looking at a client recompile
regardless. I
> realize there may be certain cases where the client
could be
handling a
> result purely dynamically in which case you
could avoid a
recompile but
> I have to think that's the exception
rather than the rule.
Regardless,
> I'd be interested in hearing how
you've worked around this.
>
> Another piece of added value to
building the WSDL into the client
is
> that it allows you to turn off
WSDL publication in production.
This is
> especially value if you're
trying to obfuscate your APIs to a web
> service on a public IP server.
Outside of the Flex world, this is
a
> very common ( arguably the
standard ) practice when deploying web
> services that are not designed
for broad public consumption.
>
> It's an interesting design choice
that Flex needs WSDL at runtime.
This
> is definitely out of the
ordinary as it is not the case in the
majority
> of technologies out
there. WSDL ( as was its predecessor IDL )
designed
> to be consumed
at development time and to to generate langauge
specifc
> stub classes
to invoke the services at runtime. Typically WSDL and
IDL
> are not
used at runtime. The exceptions that I know of would be DLL
> calls in
CORBA and then of course Flex. There's nothing saying it
can't
> be
used at runtime but most security audits that we have deal with
would
> call this a glaring hole.
>
>
>
Carson
>
____________________________________________
>
> Carson Hager
> Cynergy Systems, Inc.
> http://www.cynergysystems.com
<http://www.cynergysystems.com/>
>
> Email: carson.hager@...
> Office:
866-CYNERGY
> Mobile: 1.703.489.6466
>
>
>
>
________________________________
>
> From: [EMAIL PROTECTED]ups.com
[mailto:[EMAIL PROTECTED]ups.com]
On
> Behalf Of Tim Hoff
> Sent: Thursday, June 29, 2006 3:10
PM
> To: [EMAIL PROTECTED]ups.com
>
Subject: [flexcoders] Re: Embedding WSDL?
>
>
>
>
That was my first thought Andrew, but I couldn't find the API to
>
ovverride. Anyways, at the end of the day, embedding wsdl isn't
>
generally a good idea. If you make a change to a webservice
> operation
on the server side, you would have to re-compile and re-
> deploy every
Flex application that uses it. Otherwise the
> applications would break.
There goes the encapsulation. The extra
> second or two needed to get the
wsdl dynamically is acceptable
> overhead if webservices is the chosen
RPC.
>
> -TH
>
> --- In [EMAIL PROTECTED]ups.com
<mailto:flexcoders%
40yahoogroups.com>
> , "Andrew Trice"
<andrew.trice@>
> wrote:
> >
> > In Flex
1.5, I was able to preload/embed wsdl into the swf by
>
overriding
> > the sendAndLoad method of the native XML
object...
> >
> >
> >
> > Take a look at
my blog posting here to see how:
> >
> > https://www.cynergysystems.com/blogs/page/andrewtrice?
>
<https://www.cynergysystems.com/blogs/page/andrewtrice?>
> entry=override_nat
> > ive_object_methods_in
>
>
> >
> >
> > I don't think that this exact
syntax will work in Flex 2 b/c you
> can no
> > longer modify
the prototype of a native object. In Flex 2, you
> could
> > try
extending the WebService object like this (although I have no
> >
guarantee that this would work... I have not actually tried it).
>
Use
> > the EmbededWSDL class instead of the WebService class. You
might
> also
> > need to override the loadWsdl function.
>
>
> >
> >
> > package
> >
>
> {
> >
> > import mx.rpc.soap.WebService;
>
>
> >
> >
> > public class EmbededWSDL extends
WebService
> >
> > {
> >
> >
> >
> > public function EmbededWSDL(){
> >
> >
> >
> > this.wsdl = "MY WSDL STRING";
> >
>
> super();
> >
> > }
> >
> >
>
>
> > }
> >
> > }
> >
> >
> >
> >
> >
> > Hope that helps!
>
>
> > -Andy
> >
> >
> >
> >
_____________________________________
> >
> >
Andrew Trice
> >
> > Cynergy Systems, Inc.
> >
> > http://www.cynergysystems.com
<http://www.cynergysystems.com>
> >
> >
> >
> > Blog: http://www.cynergysystems.com/blogs/page/andrewtrice
>
<http://www.cynergysystems.com/blogs/page/andrewtrice>
> >
> > Email: andrew.trice@
> >
> >
Office: 866-CYNERGY
> >
> >
> >
> >
________________________________
> >
> > From:
[EMAIL PROTECTED]ups.com
<mailto:flexcoders%
40yahoogroups.com>
>
> [mailto:[EMAIL PROTECTED]ups.com
<mailto:flexcoders%
40yahoogroups.com>
> ] On
> >
Behalf Of Tim Hoff
> > Sent: Thursday, June 29, 2006 4:16 AM
>
> To: [EMAIL PROTECTED]ups.com
<mailto:flexcoders%
40yahoogroups.com>
> > Subject:
[flexcoders] Re: Embedding WSDL?
> >
> >
> >
> > Kelly,
> >
> > As Matt observed, I'm using a
single AS class (Cairngorm
> ServiceLocator)
> > for webservice
calls. It's based on Jeff Tapper's DataManager
> class:
> >
> > http://jeff.mxdj.com/as3datamanagerfix.htm
>
<http://jeff.mxdj.com/as3datamanagerfix.htm>
> >
> > I changed the logic to get the wsdl, when the
application loads,
> to cut
> > a few seconds off of the initial
data call. It appears that once
> the
> > wsdl is loaded, the
webservice doesn't request it again for
> subsequent
> > calls.
If all of your calls are to the same webservice, there
> would
>
> only be one request for the wsdl. This would address your
client's
> > concern about network traffic.
> >
>
> -TH
> >
> > Note: You don't have to use AS. The same
thing can be done with
> mxml.
> >
> >
> >
--- In [EMAIL PROTECTED]ups.com
>
<mailto:flexcoders%40yahoogroups.com> , "Kelly Birr"
<kelly.fx@>
wrote:
> > >
> > > thanks, I'll
have to somehow centralize my web services into
one
> >
component,
> > > and find a way to mange getting the result events
to the
correct
> place
> > > depending on what the user
is doing.
> > >
> > > - Kelly
> > >
> > > _____
> > >
> > > From: [EMAIL PROTECTED]ups.com
>
<mailto:flexcoders%40yahoogroups.com>
> [mailto:[EMAIL PROTECTED]ups.com
<mailto:flexcoders%
40yahoogroups.com>
> ]
> >
On
> > > Behalf Of Matt Chotin
> > > Sent: Thursday,
June 29, 2006 12:06 AM
> > > To: [EMAIL PROTECTED]ups.com
<mailto:flexcoders%
40yahoogroups.com>
>
> > >
Subject: RE: [flexcoders] Re: Embedding WSDL?
> > >
> >
>
> > >
> > > We don't have WSDL caching right now.
It sounds like your app
> may call
> > for
> > > a
strategy like a ServiceLocator where you put the WebService
in
>
a
> > single
> > > location and refer to it from elsewhere.
If you have 15
> WebService
> > tags you
> > > will
get 15 WSDL requests even if they are for the same WSDL.
So
>
two
> > tags,
> > > less of a deal, 15, big pain. The
DataServices approach that
Tim
> has
> > here
> >
> is one example of a ServiceLocator.
> > >
> > >
> > >
> > > Matt
> > >
> > >
> > >
> > > _____
> > >
> >
> From: [EMAIL PROTECTED]ups.com
>
<mailto:flexcoders%40yahoogroups.com>
> [mailto:[EMAIL PROTECTED]ups.com
<mailto:flexcoders%
40yahoogroups.com>
> ]
> >
On
> > > Behalf Of Tim Hoff
> > > Sent: Wednesday, June
28, 2006 9:49 PM
> > > To: [EMAIL PROTECTED]ups.com
<mailto:flexcoders%
40yahoogroups.com>
>
> > >
Subject: [flexcoders] Re: Embedding WSDL?
> > >
> > >
> > >
> > > I have the same question as Kelly. It
seems that the initial
> call
> > > to a webservice is
slower because of the wsdl. Subsequent
calls
> are
> > >
fine, but there is always an initial delay. I know, switch to
> > >
HTTPService or RemoteObject.
> > >
> > > For the
following code, I'm thinking that I could override the
> > >
loadWSDL() function, but the mx.rpc.soap.WebService API
doesn't
> > > appear in the framework. Is the API final? Is there a
work-
> around
> > > here?
> > >
> >
> public function DataServices(pri:PrivateClass,
wsdl:String)
> > > {
> > > this.ws = new
WebService();
> > > ws.wsdl = wsdl;
> > >
ws.loadWSDL();
> > > ws.useProxy = false;
> > >
ws.makeObjectsBindable = false;
> > > }
> > >
> > > Thank you,
> > > -TH
> > >
>
> > --- In [EMAIL PROTECTED]
<mailto:flexcoders%
40yahoogroups.com>
> >
ups.com,
> > > "Kelly Birr" kelly.fx@ wrote:
> > >
>
> > > > Is it possible to somehow embed WSDL in the compiled
SWF, or
> > > read/write the
> > > > actual WSDL
directly to the web services without them having
> to
> > >
request it
> > > > via HTTP at runtime? Can I bind the WSDL to a
string that I
> > > manually
> > > > request via
UrlLoader?
> > > >
> > > > Along with that if I
have 15 different web service tags on
> > > different MXML
>
> > > components of my application that all call the same web
>
service
> > > with the
> > > > exact same WSDL Uri,
will the WSDL cache? or will each Web
> Service
> > >
instance
> > > > make a request for the WSDL via HTTP when it is
initialized.
> > > >
> > > > My client is very
concerned that the application may be
> > > too "chatty" on
>
> > > their network and it seems that these WSDL requests may be
> part of
> > > the
> > > > problem. I'm
using Flex 2.0 RTM.
> > > >
> > > > -
Kelly
> > > >
> > >
>
>
>