[prev in list] [next in list] [prev in thread] [next in thread] 

List:       httpcomponents-commits
Subject:    svn commit: r381534 - in /jakarta/httpcomponents/trunk/src/site/apt:
From:       mbecke () apache ! org
Date:       2006-02-28 1:52:01
Message-ID: 20060228015201.94517.qmail () minotaur ! apache ! org
[Download RAW message or body]

Author: mbecke
Date: Mon Feb 27 17:51:58 2006
New Revision: 381534

URL: http://svn.apache.org/viewcvs?rev=381534&view=rev
Log:
Added HttpClient lessons learned

Added:
    jakarta/httpcomponents/trunk/src/site/apt/commons-httpclient-lessons.apt   (with \
props) Modified:
    jakarta/httpcomponents/trunk/src/site/apt/goals-scope.apt

Added: jakarta/httpcomponents/trunk/src/site/apt/commons-httpclient-lessons.apt
URL: http://svn.apache.org/viewcvs/jakarta/httpcomponents/trunk/src/site/apt/commons-httpclient-lessons.apt?rev=381534&view=auto
 ==============================================================================
--- jakarta/httpcomponents/trunk/src/site/apt/commons-httpclient-lessons.apt (added)
+++ jakarta/httpcomponents/trunk/src/site/apt/commons-httpclient-lessons.apt Mon Feb \
27 17:51:58 2006 @@ -0,0 +1,52 @@
+   ----------
+    Lessons Learned - Jakarta Commons HttpClient
+    ----------
+    ----------
+    ----------
+
+Lessons Learned
+
+    The HttpComponents project was undertaken following our experience in developing \
and  +    supporting Jakarta Commons HttpClient. The shortcomings and inefficiencies 
+    listed below emerged during our work with HttpClient and prompted our action. \
HttpComponents  +    is an attempt to address these issues.
+
+* Monolithic design of Commons HttpClient
+
+    * The use patterns of Commons HttpClient have evolved much since its first \
release. We  +    have found HttpClient used in applications it was never \
specifically designed  +    for: in spiders, in server side services such as HTTP \
proxies or light-weight HTTP  +    connectors. Essentially we saw HttpClient users \
trying to use it as a toolkit of generic  +    HTTP components. In some areas the \
original monolithic design of Commons HttpClient  +    proved quite lacking.
+
+    * HttpClient has a rich set of features. Some of them, however, are used \
infrequently in  +    a limited number of specific cases, and represent unnecessary \
code bloat for a sizable  +    percentage of HttpClient users. Moreover, some of \
those infrequently used features in  +    Commons HttpClient were introduced at the \
expense of the API clarity. There are some  +    core HTTP components that are \
required by all HTTP services whether they be on the client or on the  +    server \
side. More application specific aspects of HTTP, however, cannot be adequately  +    \
represented by one monolithic library.  +
+* Inherent API deficiencies of Commons HttpClient
+
+    * HttpMethod interface, one of the most fundamental interfaces in Commons \
HttpClient,  +    is inherently flawed. It tightly couples the HTTP request and HTTP \
response and implies one  +    to one relationship between the two, which is not \
always the case. +
+    * Abuse of inheritance. HttpMethodBase class contains the greatest chunk of \
processing  +    logic in HttpClient. It inseparably couples the logic of generating \
HTTP requests and  +    processing HTTP responses. This makes it virtually impossible \
to create a custom  +    implementation of an HttpMethod interface, essentially \
rendering it useless. In practice all  +    HTTP methods must be derived from \
HttpMethodBase class. +
+    * The fact that all HTTP methods in practical terms must be derived from one \
common  +    base (HttpMethodBase) has a number of side effects. For instance, if one \
needs to +    introduce a common behavior across all standard HTTP methods, one would \
have to  +    subclass all the existing subclasses of the HttpMethodBase: GetMethod, \
PostMethod, etc. +
+* External dependencies
+
+    * One of the most frequently cited complaints is its dependency on Commons \
Logging and  +    Commons Codec. We would like to give the users an option to use \
core HTTP components  +    without any external libraries and a minimal footprint.
\ No newline at end of file

Propchange: jakarta/httpcomponents/trunk/src/site/apt/commons-httpclient-lessons.apt
------------------------------------------------------------------------------
    svn:executable = *

Modified: jakarta/httpcomponents/trunk/src/site/apt/goals-scope.apt
URL: http://svn.apache.org/viewcvs/jakarta/httpcomponents/trunk/src/site/apt/goals-scope.apt?rev=381534&r1=381533&r2=381534&view=diff
 ==============================================================================
--- jakarta/httpcomponents/trunk/src/site/apt/goals-scope.apt (original)
+++ jakarta/httpcomponents/trunk/src/site/apt/goals-scope.apt Mon Feb 27 17:51:58 \
2006 @@ -10,6 +10,8 @@
     developing and supporting Jakarta Commons HttpClient. The following set of goals \
                are
     derived from our experience with HttpClient and serve as the philosophical \
foundation   to HttpComponents.
+    
+    {{{commons-httpclient-lessons.html}Lessons Learned - Jakarta Commons \
HttpClient}}  
 * Componentized design
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic