Есть ли какие-либо веб-платформы MVC, которые поддерживают несколько типов запроса?

Размер структуры больше, чем сумма ее частей из-за того, что называется упаковкой. У конкретного процессора есть предпочтительный размер данных, с которым он работает. Большинство современных процессоров предпочитают размер, если 32 бит (4 байта). Доступ к памяти, когда данные находятся на этом типе границы, более эффективен, чем те, которые охватывают эту границу размера.

Например. Рассмотрим простую структуру:

struct myStruct
{
   int a;
   char b;
   int c;
} data;

Если машина является 32-разрядной машиной, а данные выровнены по 32-битной границе, мы видим немедленную проблему (при отсутствии выравнивания структуры). В этом примере предположим, что данные структуры начинаются с адреса 1024 (0x400 - обратите внимание, что младшие 2 бита равны нулю, поэтому данные выравниваются с 32-разрядной границей). Доступ к data.a будет работать нормально, потому что он начинается на границе - 0x400. Доступ к data.b также будет работать нормально, поскольку он находится по адресу 0x404 - еще одна 32-разрядная граница. Но неуравновешенная структура поставит data.c по адресу 0x405. 4 байта данных.c находятся в 0x405, 0x406, 0x407, 0x408. На 32-битной машине система считывала data.c в течение одного цикла памяти, но получала бы только 3 из 4 байтов (четвертый байт находится на следующей границе). Таким образом, системе потребуется второй доступ к памяти для получения 4-го байта,

Теперь, если вместо того, чтобы поместить data.c по адресу 0x405, компилятор заполнил структуру на 3 байта и поместил данные. c по адресу 0x408, тогда системе потребуется всего 1 цикл, чтобы прочитать данные, сократив время доступа к этому элементу данных на 50%. Заполняет эффективность памяти для эффективности обработки. Учитывая, что компьютеры могут иметь огромные объемы памяти (много гигабайт), компиляторы считают, что своп (скорость над размером) является разумным.

К сожалению, эта проблема становится убийцей при попытке отправить структуры по сети или даже записать двоичные данные в двоичный файл. Прокладка, вставленная между элементами структуры или класса, может нарушить данные, отправленные в файл или сеть. Чтобы написать переносимый код (тот, который будет использоваться для нескольких разных компиляторов), вам, вероятно, придется обращаться к каждому элементу структуры отдельно, чтобы обеспечить надлежащую «упаковку».

С другой стороны, разные компиляторы имеют разные возможности для управления упаковкой структуры данных. Например, в Visual C / C ++ компилятор поддерживает команду #pragma pack. Это позволит вам настроить упаковку и выравнивание данных.

Например:

#pragma pack 1
struct MyStruct
{
    int a;
    char b;
    int c;
    short d;
} myData;

I = sizeof(myData);

Теперь я должен иметь длину 11. Без прагмы я мог бы быть чем угодно из 11 до 14 (а для некоторых систем - до 32), в зависимости от стандартной упаковки компилятора.

11
задан James A. Rosen 22 September 2008 в 15:52
поделиться

4 ответа

Вы, кажется, работаете главным образом с Java и/или Ruby, поэтому простите мне, что этот ответ основан на Perl :-).

Я очень люблю Катализатор Платформа MVC (http://www.catalystframework.org/). Это делегирует фактическое отображение запросов (в общем, универсальном смысле) для кодирования через механизмы. Предоставленный, все классы механизма в настоящее время основаны на HTTP, но я играл с идеей попытаться записать класс механизма, который не был основан на HTTP (или был, возможно, связан с чем-то как Твиттер, но был разделен от взаимодействий HTTP, которые Твиттер использует). По крайней мере я убежден, что это может быть сделано, даже если я еще не нашел время для попытки его.

0
ответ дан 3 December 2019 в 12:17
поделиться

Я не видел тот. Проблема - то, что запрос также связывается с хостом, и ответ связывается с запросом.

Таким образом, если бы Вы получаете запрос на пути электронная почта, и контроллер говорит для рендеринга представления "aboutus", Вам была бы нужна платформа MVC, чтобы знать как к:

  • получите запрос во-первых - платформа MVC должна была бы почти быть хостом (IIS не становится уведомленным относительно новых электронных писем, поэтому как Ваша электронная почта, опрашивающая код, становится запущенной?)
  • позвольте гибкий маршрут, соответствующий - соответствие путем/URL не работало бы на все, таким образом, определенная для запроса маршрутизация контроллера будет необходима
  • используйте aboutus почтовое представление, а не представление SMS или HTTP, названное "aboutus"
  • отошлите ответ по электронной почте корректному получателю

Веб-платформа MVC не собирается сокращать его - Вам будет нужен MVC "хост", который может обработать активацию через сеть, SMS, электронную почту, безотносительно.

1
ответ дан 3 December 2019 в 12:17
поделиться

Спецификация Сервлета Java была разработана, чтобы Сервлеты были нейтральным протоколом, и быть расширенными в особенном методе протокола - HttpServlet, являющийся определенным для протокола расширением Сервлета. Я всегда предполагал, что Sun или другая треть poarty поставщики платформы, придумает другие определенные для протокола расширения как FtpServlet или MailServlet, или в этом случае SmsServlet и TwitterServlet.

Вместо этого то, что произошло, - то, что люди или полностью обошли платформу Сервлета или создали их протоколы сверху HTTP.

Конечно, если бы Вы хотите реализовать определенное для протокола расширение для своих требуемых протоколов, необходимо было бы разработать целый стек - объект запроса, объект ответа, механизм идентификации сессий (например, использующий MSISDN в SMS вместо cookie), шаблонная обработка и рендеринг платформы (эквивалентный из JSP) - и затем создать платформу MVC сверху его.

1
ответ дан 3 December 2019 в 12:17
поделиться

Вы могли реализовать основанный на REST Адаптер по своему веб-сайту, который заменяет шаблоны и перенаправления согласно входным параметрам.

Все запросы, входящие на api.yourhost.com, будут обработаны остальными базирующийся адаптер.

Этот адаптер позволил бы называть Ваш веб-сайт программно и иметь результат в parseable формате.

Практически это означает: Это заменяет Шаблоны собственным Движком шаблонов, на котором это вещи происходят:

  • вместо присвоенного шаблона называют универсальный шаблон xml/json, который просто производит xml, который содержит весь шаблон Вар

затем можно сделать Poller Твиттера, Шлюз SMS или даже назвать его из JavaScript.

0
ответ дан 3 December 2019 в 12:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: