I think a quick PoC should answer your questions, but here is what I think -
> Still wondering, if it would be significantly slower than plain GWT-RPC? No reason for it to be slower than regular RPC. Thinking about it, you should be able to use the regular RPC payload wrapped in a JSONP style method call. This should make it work as good as regular RPC. I don't see any other overheads. One thing I must definitely make sure first, if this can be used together > with all important frameworks I plan to use in the future (will e.g. > gwt-log)... You will have to confirm it, but it should work. You are not changing the interface for RPC, so I see no reason for other frameworks to stop working. --Sri On 17 June 2010 03:49, Chris Lercher <[email protected]> wrote: > That was fast - awesome post. It sounds feasible, and I'm considering > to use it. Still wondering, if it would be significantly slower than > plain GWT-RPC? > The sending limit of 2kB Client->Server will be enough for at least > most of my queries - I must still evaluate, if it's enough for > absolutely all of them (or if I can split the others easily). > > One thing I must definitely make sure first, if this can be used > together with all important frameworks I plan to use in the future > (will e.g. gwt-log)... > > Thanks a lot for your answer! > Chris > > On Jun 16, 10:53 pm, Sripathi Krishnan <[email protected]> > wrote: > > Just did some digging in, and I *think* it is possible with some > > restrictions. The restrictions being - > > > > - No support for request headers > > - Reduced error handling. For example, a 404 cannot be detected > > easily... > > > > The basic idea is to use DeRPC infrastructure because it already returns > > JSON.. and try to override the RequestBuilder class so that the > > communication channel is a <script> tag instead of a XHR. > > > > *Client Side changes* > > > > 1. Inject a custom RpcRequestBuilder via > > RemoteServiceProxy.setRequestBuilder(). Lets call it > JSONPRpcRequestBuilder > > 2. In JSONPRpcRequestBuilder.doCreate(..) method, return a custom > > RequestBuilder. Lets call it JSONPRequestBuilder. > > 3. JSONPRequestBuilder class does all the heavy lifting. Override > > *all*public methods. The serialized RPC data is available to this > > class, so you > > just need to URL encode it and construct a url > > 4. Then just use built in JSONP classes to actually make the request > > 5. You'd have to write an adaptor between RequestCallback (from > > RequestBuilder) and AsyncCallback<T> (from JsonpRequestBuilder). > > 6. Not sure how you'd typecast to the correct response object though. > > Perhaps you may have to leverage the deRpc infrastructure - since it > already > > consumes JSON objects in its response. > > > > *Server side changes* > > This should be straighforward. The payload is present in a url parameter. > > Use RPC class to decode the request, invoke the method and get the data. > > Again, it would make sense to use deRpc as the starting point - since you > > need to return JSON. > > > > There may be unforeseen problems, but I think it is possible to get it > > working. And I guess there are advantages to it as well, you can truly > share > > you GWT services and no longer worry about cross domain issues. > > > > --Sri > > > > On 17 June 2010 01:21, Chris Lercher <[email protected]> wrote: > > > > > > > > > Hi Sri, > > > > > I mean of course, that there would have to be a component (e.g. > > > Servlet) on the server side, that re-translates the get request, and > > > then calls the RemoteServlet (or something underlying), as if a usual > > > GWT-RPC request had been issued. Se we would basically use JSONP as a > > > tunnel. > > > > > [The defense against CSRF would have to be done using a separate > > > technique, but let's forget about that for a moment.] > > > > > Chris > > > > > On Jun 16, 9:42 pm, Sripathi Krishnan <[email protected]> > > > wrote: > > > > No, it won't. > > > > > > 1. GWT RPC exclusively uses POST. JSONP uses a <script> tag, which > is > > > > essentially a GET request. You can't make a POST request using a > > > script tag. > > > > 2. RPC adds custom http headers to the request (X-GWT-Permutation, > or > > > > something like that). You cannot setup custom http headers using a > > > script > > > > tag, or anyother html tag. > > > > > > Because of these two, RPC cannot be wrapped in a JSONP call. > > > > > > The restrictions on the URL length are not that prohibitive. GWT > > > supported > > > > browsers allow atleast 2KB, with the newer ones allowing more. That > > > usually > > > > is sufficient for most RPC calls. > > > > > > --Sri > > > > > -- > > > You received this message because you are subscribed to the Google > Groups > > > "Google Web Toolkit" group. > > > To post to this group, send email to > [email protected]. > > > To unsubscribe from this group, send email to > > > [email protected]<google-web-toolkit%[email protected]><google-web-toolkit%2Bunsubs > [email protected]> > > > . > > > For more options, visit this group at > > >http://groups.google.com/group/google-web-toolkit?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Google Web Toolkit" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<google-web-toolkit%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/google-web-toolkit?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.
