[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