Странно, что никто не упомянул LINQBridge. Этот небольшой потрясающий проект является бэкпортом LINQ (IEnumerable, но без IQueryable) и его зависимости (Func, Действие, и т.д.) к.NET 2.0. И:
, Если Ваши ссылки проекта LINQBridge во время компиляции, то это свяжет с операторами запроса LINQBRIDGE; если это ссылается на Систему. Ядро во время компиляции, тогда это свяжет с Платформой 3.5's операторы запроса.
Современные телефоны имеют это большая мощность процессора и сеть относительно медленная, поэтому сжатие имеет смысл. Это также довольно легко сделать.
На стороне J2ME вы делаете что-то вроде этого (при условии, что вы используете HttpConnection),
hc.setRequestProperty("Accept-Encoding", "gzip, deflate");
if (hc.getResponseCode() == HttpConnection.HTTP_OK) {
InputStream in = hc.openInputStream();
if ("gzip".equals(hc.getEncoding()))
in = new GZIPInputStream(in);
...
Мы используем GZIPInputStream из tinyline, но я уверен, что есть и другие,
http: // www.tinyline.com/utils/index.html
На стороне сервера все встроено. Просто добавьте следующие атрибуты к коннектору в server.xml на Tomcat,
<Connector
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,application/json"
... />
Вы можете сжимать содержимое HTTP-запроса или ответа, но не заголовки. См. Раздел 3.6 спецификации HTTP 1.1 и последующий раздел, описывающий заголовок Content-Encoding.
РЕДАКТИРОВАТЬ: Обратной стороной этого является то, что нет гарантии, что сторона HTTP-сервера примет какой-либо конкретный формат сжатия. И в зависимости от качества реализации HTTP на стороне сервера, он может даже не распознать, что содержимое запроса было сжато. Поэтому вам не стоит этого делать, если вы не знаете, что серверная сторона поддерживает сжатое содержимое запроса.
Поскольку вы используете Tomcat, рассмотрите возможность размещения экземпляра HTTP-сервера Apache перед сервером Tomcat.
Это можно сделать с помощью mod_jk модуль для HTTP-сервера Apache. Как только вы это сделаете, вы можете использовать mod_gzip / mod_deflate в Apache.
Конечно, ваш клиент должен иметь возможность обрабатывать сжатые ответы, чтобы это работало. Если вы заставите своего клиента работать со сжатыми ответами, он в конечном итоге будет отображать тарабарщину, поскольку (обычно) ожидал ответов в виде простого текста. Вы найдете определенный индикатор способности клиента обрабатывать сжатые ответы в заголовках клиента Accept-Encoding.
Это можно сделать программно, используя сервлет или фильтр сервлетов, который записывает в ZipOutputStream или GZipOutputStream, если вы хотите избежать появления HTTP-сервера Apache в сети. Вы найдете несколько указателей на , как это сделать, на сайте OReilly OnJava.com .
На стороне сервера вы можете включить его, как описано здесь , но мобильному приложению потребуется библиотека, которая может распаковывать gzip, например этот . Хотя, возможно, придется немного поработать ...