Title: Re: [flexcoders] Re: Embedding WSDL?

DLL = DII


Carson

____________________________________________

Carson Hager
Cynergy Systems, Inc.
http://www.cynergysystems.com

Email:  [EMAIL PROTECTED]
Office: 866-CYNERGY ext. 89
Mobile: 1.703.489.6466



-----Original Message-----
From: flexcoders@yahoogroups.com <flexcoders@yahoogroups.com>
To: flexcoders@yahoogroups.com <flexcoders@yahoogroups.com>
Sent: Thu Jun 29 16:43:04 2006
Subject: RE: [flexcoders] Re: Embedding WSDL?

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:  [EMAIL PROTECTED]
Office:  866-CYNERGY
Mobile: 1.703.489.6466



________________________________

From: flexcoders@yahoogroups.com [mailto:flexcoders@yahoogroups.com] On Behalf Of Tim Hoff
Sent: Thursday, June 29, 2006 3:10 PM
To: flexcoders@yahoogroups.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 flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> , "Andrew Trice" <[EMAIL PROTECTED]>
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: [EMAIL PROTECTED]
>
> Office: 866-CYNERGY
>
>
>
> ________________________________
>
> From: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com
[mailto:flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> ] On
> Behalf Of Tim Hoff
> Sent: Thursday, June 29, 2006 4:16 AM
> To: flexcoders@yahoogroups.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 flexcoders@yahoogroups.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: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com
[mailto:flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> ]
> On
> > Behalf Of Matt Chotin
> > Sent: Thursday, June 29, 2006 12:06 AM
> > To: flexcoders@yahoogroups.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: flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com
[mailto:flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> ]
> On
> > Behalf Of Tim Hoff
> > Sent: Wednesday, June 28, 2006 9:49 PM
> > To: flexcoders@yahoogroups.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
> > >
> >
>




__._,_.___

--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com





YAHOO! GROUPS LINKS




__,_._,___

Reply via email to