Working together on a generic Proxy, was: Netty 3.2.0.BETA1 released: zero-copy file transfer

Adam Fisk a at littleshoot.org
Wed Mar 10 01:35:40 EST 2010


Thanks for your thoughts, Leandro, and for testing out LittleProxy.
I'm a big fan of dependency injection as a general methodology for
decoupling code, although I'm significantly less enthusiastic about
XML and annotation-based injection. To me, straight coding to
interfaces and injecting the dependencies in your high level wiring
*Java* code gives you both compile-time checking and clear, easily
understandable code. I've grown to feel the benefits of annotations
and XML injection don't outweigh the downsides, but I'd love to be
wrong.

As far as header parsing goes, I agree minimizing parsing is ideal.
Early versions of LittleProxy experimented with this, and it would be
a nice optimization. Ideally LittleProxy would simply parse the
request line and would switch to forwarding bytes whenever requests
did not match the HttpRequestMatchers.

I'm about to add caching as the final addition before releasing 0.3,
however, but I've added this as an issue for LittleProxy 0.4 here:

http://dev.littleshoot.org:8081/browse/LP-17

Let's take this off list from now on.

Thanks again Leandro!

-Adam


On Tue, Mar 9, 2010 at 11:38 AM, Leandro Cruz <leandro.saad at gmail.com> wrote:
> Great.
> I'm testing LittleProxy right now.
> One of my goals is to not parse the entire message (not always). Most of the
> time handling just the headers is okay (url/host blocking).
> My current strategy is to save the original ChannelBuffer and write it as-is
> to the new destination/connection, reducing I/O and memory allocation.
> Other thing I was working on, and is implemented in Uxy (our generic proxy)
> is IOC and DI using annotations. We have a really small container (GPL) that
> starts the proxy and handles depency injection, configuration, component
> lifecyle, etc. This approach works really nice and enables richer
> customization of Uxy, since you can change any of the core components just
> by changing the component impl in your config.
> In LittleProxy case, I see many components that could be changed/replaced
> according to your end user needs. For
> instance: ProxyAuthorizationManager, HttpRequestMatcher, etc...
> What do you think?
> PS: we can move this discussion out of the list if it´s considered off
> toppic
> --
> Leandro Rodrigo Saad Cruz
>
>
> On Tue, Mar 9, 2010 at 5:36 AM, Adam Fisk <a at littleshoot.org> wrote:
>>
>> Happy to team up from my end. The LittleProxy code is all licensed
>> under Apache 2 and is described at:
>>
>>
>> http://dev.littleshoot.org:8084/display/proxy/LittleShoot+Java+HTTP+Proxy+-+LittleProxy
>>
>> I'm about to release the 0.3 version with much better performance,
>> decompression and filtering of responses if desired, and better
>> documentation. All the latest development is happening on trunk, and
>> you should be able to run it really easily using the run.bash script.
>>
>> LittleProxy is very much focused on HTTP, but I'd certainly be open to
>> supporting more protocols.
>>
>> All the Best,
>>
>> -Adam
>>
>>
>> On Mon, Mar 8, 2010 at 12:10 PM, Leandro Cruz <leandro.saad at gmail.com>
>> wrote:
>> > Hi Adam, Trustin and others.
>> > I thinks there is a growing interest in implementing proxies with Netty.
>> > I'm working on a generic Proxy that should be able to filter http and im
>> > traffic.
>> > Do you think we could work together on a unified project/codebase?
>> > Maybe our requirements are not equal, but I'm sure there is a lot of
>> > commonality.
>> > Please drop me a line if you are interested. I'm more than willing to
>> > share
>> > my code (MSN protocol filter running with netty using IOC and DI) and
>> > have
>> > more eyes on the project.
>> > leandro.saad (at) gmail
>> > --
>> > Leandro Rodrigo Saad Cruz
>> >
>> >
>> > On Sat, Mar 6, 2010 at 7:13 PM, Adam Fisk <a at littleshoot.org> wrote:
>> >>
>> >> Congrats on this, Trustin, especially the zero-copy transfers! The
>> >> "Transfer-Encoding: chunked" semantics are working great on
>> >> LittleProxy so far, and a new version should be coming out soon with
>> >> the beta incorporated.
>> >>
>> >> Thanks for your hard work as always.
>> >>
>> >> -Adam
>> >>
>> >>
>> >> On Fri, Mar 5, 2010 at 7:33 AM, jfarcand <jfarcand at ning.com> wrote:
>> >> > Awesome work, Trustin!
>> >> >
>> >> > -- Jeanfrancois
>> >> >
>> >> > On 10-03-04 8:51 PM, "Trustin Lee (이희승)" wrote:
>> >> >> Hi folks,
>> >> >>
>> >> >> Netty 3.2.0.BETA1, the first beta release in 3.2 branch, has been
>> >> >> released after long awaits.
>> >> >>
>> >> >> The Netty project is an effort to provide an asynchronous,
>> >> >> event-driven
>> >> >> network application framework and tools for rapid development of
>> >> >> maintainable, high-performance, high-scalability protocol servers
>> >> >> and
>> >> >> clients.
>> >> >>
>> >> >> In other words, Netty is an NIO client server framework that enables
>> >> >> quick and easy development of network applications such as protocol
>> >> >> servers and clients. It simplifies and streamlines network
>> >> >> programming
>> >> >> such as TCP and UDP socket servers
>> >> >>
>> >> >> Please visit our web site to get more information and download it.
>> >> >>  Your
>> >> >> feed back is more than appreciated - please visit the discussion
>> >> >> forum
>> >> >> and leave some comments and questions:
>> >> >>
>> >> >>    * http://www.jboss.org/netty/
>> >> >>
>> >> >> New Related Project: Ning's Asynchronous HTTP Client
>> >> >> ====================================================
>> >> >> Ning, one of the largest social platform provider, open-sourced
>> >> >> their
>> >> >> asynchronous HTTP client which uses Netty (and its HTTP codec) as
>> >> >> its
>> >> >> primary transport.  If you were using Netty directly to write an
>> >> >> HTTP
>> >> >> client, you might want to give this library a try because its API is
>> >> >> very clean, simple and more HTTP-centric.
>> >> >>
>> >> >>    * announcement: http://is.gd/9ImoW
>> >> >>    *  github repo: http://github.com/ning/async-http-client
>> >> >>    * google group: http://groups.google.com/group/asynchttpclient
>> >> >>
>> >> >> Notable changes since 3.2.0.ALPHA4
>> >> >> ==================================
>> >> >>
>> >> >>    * Zero-copy file transfer: http://is.gd/8Z7dI
>> >> >>    * The number of I/O threads has been doubled for better out-of-
>> >> >>      the-box performance.
>> >> >>    * Fixed performance regression in the NIO transport
>> >> >>    * SslHandler became more secure by disabling renegotiation by
>> >> >> default.
>> >> >>
>> >> >> For the complete list of resolved issues, visit the issue tracker:
>> >> >>
>> >> >>    * http://is.gd/9InDn
>> >> >>
>> >> >> Notable changes since 3.1.5.GA
>> >> >> ==============================
>> >> >>
>> >> >>    * Overall performance improvement in NIO transport
>> >> >>
>> >> >>    * @ChannelPipelineCoverage annotation has been deprecated by the
>> >> >>      @Sharable annotation to reduce beginner confusion
>> >> >>
>> >> >>    * ChannelBuffer improvements
>> >> >>      * New access methods for float, double, and char
>> >> >>      * New method: ensureWritableBytes(int)
>> >> >>      * New method: bytesBefore() for easier variable length string
>> >> >> decode
>> >> >>      * All string conversion methods now use Charset instead of
>> >> >> String.
>> >> >>
>> >> >>    * Channel API improvements
>> >> >>      * Zero-copy file transfer in NIO transport: http://is.gd/8Z7dI
>> >> >>      * StaticChannelPipeline: an alternative pipeline implementation
>> >> >>
>> >> >>    * HTTP codec improvements
>> >> >>      * WebSocket support
>> >> >>      * Complete trailing header support
>> >> >>      * More robust CookieDecoder
>> >> >>      * More convenience methods in HttpMessage
>> >> >>
>> >> >>    * Zlib-based compression handlers
>> >> >>    * RTSP codec
>> >> >>
>> >> >> For the full changelog, please visit the issue tracker:
>> >> >>
>> >> >>    * http://jira.jboss.org/jira/browse/NETTY
>> >> >>
>> >> >> Upcoming Releases
>> >> >> =================
>> >> >> Since the HTTP tunneling transport has been rescheduled to the next
>> >> >> major feature release (3.3), all planned features have been
>> >> >> implemented.
>> >> >>   Unless there is a critical issue, I will proceed to release
>> >> >> candidate
>> >> >> phase.
>> >> >>
>> >> >> Although 3.2 has been feature-frozen, the road map for 3.3 release
>> >> >> is
>> >> >> wide open.  Please keep posting new ideas so that we can pick them
>> >> >> up
>> >> >> for 3.3.
>> >> >>
>> >> >> Cheers,
>> >> >> Trustin
>> >> >>
>> >> >
>> >> > _______________________________________________
>> >> > netty-users mailing list
>> >> > netty-users at lists.jboss.org
>> >> > https://lists.jboss.org/mailman/listinfo/netty-users
>> >>
>> >>
>> >>
>> >> --
>> >> Adam Fisk
>> >> http://www.littleshoot.org | http://adamfisk.wordpress.com |
>> >> http://twitter.com/adamfisk
>> >>
>> >> _______________________________________________
>> >> netty-users mailing list
>> >> netty-users at lists.jboss.org
>> >> https://lists.jboss.org/mailman/listinfo/netty-users
>> >
>> > _______________________________________________
>> > netty-users mailing list
>> > netty-users at lists.jboss.org
>> > https://lists.jboss.org/mailman/listinfo/netty-users
>> >
>>
>>
>>
>> --
>> Adam Fisk
>> http://www.littleshoot.org | http://adamfisk.wordpress.com |
>> http://twitter.com/adamfisk
>>
>> _______________________________________________
>> netty-users mailing list
>> netty-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/netty-users
>
> _______________________________________________
> netty-users mailing list
> netty-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/netty-users
>



-- 
Adam Fisk
http://www.littleshoot.org | http://adamfisk.wordpress.com |
http://twitter.com/adamfisk



More information about the netty-users mailing list