Что такое Ajax, действительно?

Как впервые предположил Джон, вы можете попробовать создать мьютекс. Звоните CreateMutex . Если вы получите ненулевой дескриптор, позвоните GetLastError . Он скажет вам, был ли вы тем, кто создал мьютекс, или мьютекс уже был открыт ранее (Error_Already_Exists). Обратите внимание, что не необходимо приобретать право собственности на мьютекс. Мьютекс не используется для взаимного исключения. Он используется, потому что это именованный объект ядра. Событие или семафор тоже могут сработать.

Техника мьютекса дает логический ответ: да, есть другой экземпляр, или нет, нет.

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

Будьте осторожны при выборе названия мьютекса. Внимательно прочитайте документацию и помните, что некоторые символы (например, обратная косая черта) недопустимы в некоторых версиях ОС, но необходимы для определенных функций в других версиях ОС.

Также помните о проблеме других пользователей. Если ваша программа может быть запущена через удаленный рабочий стол или с помощью быстрого переключения пользователей, то могут быть другие пользователи, уже запускающие вашу программу, и вы, возможно, не захотите ограничивать текущий запуск программы вашим пользователем. В этом случае не используйте глобальное имя. Если вы действительно хотите ограничить доступ для всех пользователей, то убедитесь, что атрибуты безопасности объекта мьютекса таковы, что каждый сможет открыть для него дескриптор. Использование нулевого указателя для параметра lpSecurityAttributes недостаточно для этого; «дескриптор безопасности по умолчанию», который упоминает MSDN, предоставляет полный доступ текущему пользователю и не дает доступа другим.

Вам разрешено редактировать файл DPR вашей программы. Обычно это хорошее место для подобных вещей. Если вы подождете до события OnCreate одной из ваших форм, то ваша программа уже наберет импульс для нормального запуска, поэтому неуместно пытаться завершить программу в этот момент. Лучше прекратить работу до того, как будет выполнена слишком большая работа с пользовательским интерфейсом Например:

var
  mutex: THandle;
  mutexName: string;
begin
  mutexName := ConstructMutexName();

  mutex := CreateMutex(nil, False, PChar(mutexName));

  if mutex = 0 then
    RaiseLastOSError; // Couldn't open handle at all.

  if GetLastError = Error_Already_Exists then begin
    // We are not the first instance.
    SendDataToPreviousInstance(...);
    exit;
  end;
  // We are the first instance.

  // Do NOT close the mutex handle here. It must
  // remain open for the duration of your program,
  // or else later instances won't be able to
  // detect this instance.

  Application.Initialize;
  Application.CreateForm(...);
  Application.Run;
end.

Существует вопрос о том, когда закрывать дескриптор мьютекса. Вам не нужно закрывать это. Когда ваш процесс окончательно завершается (даже если происходит сбой), ОС автоматически закрывает все оставшиеся дескрипторы, а когда больше нет открытых дескрипторов, объект мьютекса будет уничтожен (что позволит запустить другой экземпляр вашей программы и считать себя быть первым экземпляром).

Но вы все равно можете закрыть ручку. Предположим, вы решили реализовать функцию SendDataToPreviousInstance, о которой я упоминал в коде. Если вы хотите стать модным, то вы можете учесть, что предыдущий экземпляр уже закрывается и не может принять новые данные. Тогда вам не захочется закрывать второй экземпляр. Первый экземпляр может закрыть дескриптор мьютекса, как только узнает, что завершает работу, и фактически становится экземпляром «хромой утки». Второй экземпляр попытается создать дескриптор мьютекса, преуспеть и считать себя настоящим первым экземпляром. Предыдущий экземпляр будет закрыт непрерывно. Используйте CloseHandle, чтобы закрыть мьютекс; вызывайте его из обработчика событий вашей основной формы OnClose или откуда угодно, например, Application.Terminate.

19
задан Shog9 5 June 2009 в 21:00
поделиться

20 ответов

A синхронный J avaScript A nd X ml. Метод достижения двунаправленной связи на основе сценариев между веб-браузерами и серверами через HTTP.

См. Также:

Редактировать: Как указывает Носредна, JSON является часто используется вместо XML.

27
ответ дан 30 November 2019 в 01:53
поделиться

Это чистящее средство.

Это также означает что-то очень крутое, созданное с использованием ненавистного языка программирования.

-3
ответ дан 30 November 2019 в 01:53
поделиться

Я попробую и скажу, что "это концепция решения на основе W3C (JavaScript, HTML и CSS) для создания многофункциональных приложений для работы в Интернете в браузер "

Все остальное просто" технические подробности "наверное ...;)

PS! - УДИВИТЕЛЬНЫЙ вопрос ... !! ;)

0
ответ дан 30 November 2019 в 01:53
поделиться

AJAX - действительно интересный термин для предоставления браузеру возможности обновлять части своего контента с необходимостью перезагружать всю страницу. Как многие уже сказали, для его реализации не требуется XML или даже Javascript. Фактически, в первые дни это было сделано с помощью VBScript и Jscript и просто называлось DHTML. Джесси Джеймс Гаррет, возможно, изобрел термин AJAX , но на самом деле Microsoft изобрела концепцию, лежащую в его основе.

В этом источнике говорится, что Microsoft начала его в 1999 году , но я бы датировал рождение эта технология даже дальше. Эта статья , вероятно, более точна в отношении даты появления этой технологии в конце 90-х, большая часть этого исходит из старых дней MSDN DHTML Dude columns , написанных Майклом Валлентом из Microsoft, которые начались еще в 1997 году. Большая часть истории также рассказана в этом замечательном видео здесь самим Майклом: http://channel9.msdn.com/posts/Charles/Michael-Wallent-Advent-and-Evolution-of-WPF/ Меган по-прежнему работает в Microsoft, кстати, в настоящее время работает в команде Silverlight, Замена Microsoft ActiveX .

Вернемся к AJAX ... когда Джесси Джеймс Гарретт в 2005 году в основном говорил об использовании XMLHTTPRequest в коде Javascript и щепотку соли. Позже это стало модным словом, которое начали использовать многие люди, даже не зная, что это такое, и подумали, что это действительно что-то новенькое и модное,

0
ответ дан 30 November 2019 в 01:53
поделиться

AJAX очень прост: кто-то где-то подумал, что было бы круто иметь возможность отправлять что-то на сервер и получать от него что-то без перезагрузки страницы.

AJAX - это не революция. , это просто название чего-то простого: веб-страница может отправлять запрос на сервер без перезагрузки - здесь просто асинхронный материал.

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

Но учтите: мошеннический веб-браузер обычно не говорит на том же языке AJAX, что и IE ...

: )

0
ответ дан 30 November 2019 в 01:53
поделиться

Творческое использование ранее известных технологий. Как сценарии на стороне браузера, так и программный доступ к данным на сервере были известны раньше. В AJAX он был создан для новаторского использования и поддержки новых приложений известной ранее хологии. REST приходит на ум как подобный тип продвижения ...

0
ответ дан 30 November 2019 в 01:53
поделиться

I read Head First AJAX as my first AJAX reference and I found it to give a simple and practical overview of AJAX.

0
ответ дан 30 November 2019 в 01:53
поделиться

AJAX stands for asynchronous JavaScript and XML, though it doesn't always deal with XML data anymore. Essentially it boils down to using the XMLHttpRequest object through JavaScript running on the client to make a web request and retrieve some information that you use to update the state of your page without requiring a page refresh.

Start with a basic tutorial that shows you how to use bare bones Ajax to make asynchronous requests such as http://www.w3schools.com/Ajax/Default.asp before moving on to using it in a production level application.

When using it in an application you're far better off investigating one of the common JavaScript frameworks that abstract away the differences between the various browsers and make it easy to manipulate the page after the request returns. I personally recommend http://www.jquery.com/

0
ответ дан 30 November 2019 в 01:53
поделиться

I believe the fastest and easiest way to get started is with jQuery:

http://jquery.com/

http://docs.jquery.com/Ajax/jQuery.ajax#examples

0
ответ дан 30 November 2019 в 01:53
поделиться

It's JavaScript, but it works.

0
ответ дан 30 November 2019 в 01:53
поделиться

Просто добавлю .. может быть не актуален для вопроса .. хотя Gmail прославил AJAX в электронной почте своих браузеров ... заслуга AJAX принадлежит Microsoft ... они создали AJAX ...

1
ответ дан 30 November 2019 в 01:53
поделиться

From the man that coined the term - http://adaptivepath.com/ideas/essays/archives/000385.php

2
ответ дан 30 November 2019 в 01:53
поделиться

"Ajax" is the successfull marketing term introduced back in 2005 to replace the the older term "DHTML" that did not stick well. "Ajax" today is part of the history too as the new word - "HTML5" emerge. Still "HTML5" is pretty much what original "DHTML" used to be.

Ajax is also reffered to as "the new approach to the application development" where a web page is created on the server initially but later on, during its lifetime, the updates are being done on the client as the data or partial content gets communicated to the server in a background.

Hope this clarifies.

2
ответ дан 30 November 2019 в 01:53
поделиться

http://www.w3schools.com/Ajax/Default.Asp

, это хорошее место для начала. Это должно ответить на все ваши вопросы.

3
ответ дан 30 November 2019 в 01:53
поделиться

Ajax - немного неправильное название. Процитируем статью в вики:

Несмотря на название, использование JavaScript и XML на самом деле не требуется, и запросы не должны быть асинхронным.

В то время как сейчас большинство людей называют "ajax" любой тип

веб-приложения, которое обменивается данными с сервером в фоновом режиме

3
ответ дан 30 November 2019 в 01:53
поделиться

Как уже упоминалось во многих ответах выше внутренние функции не поддерживаются в C, однако внутренние классы могут использоваться в C ++ для выполнения аналогичных задач. К сожалению, они немного громоздки в использовании, но это может быть вариант для вас, если вы не против компиляции на C ++.

Непроверенный пример:

double some_function( double x, double y)
{
  struct InnerFuncs
  {
    double inner_function(double x)
    { 
      // some code
      return x*x;
    }
    // put more functions here if you wish...
  } inner;

  double z;
  z = inner.inner_function(x);
  return z+y; 
}

Обратите внимание, что этот ответ не должен подразумевать, что я думаю, что внутренние функции хорошая идея в показанном вами использовании.

Редактирование спустя годы:

C ++ теперь позволяет нам использовать лямбды в качестве внутренних функций. один лайнер. Причина, по которой это так сложно, потому что у него есть две стороны:

  • Ajax можно рассматривать как набор технологии.
  • Ajax можно просмотреть как архитектура.

Ajax: асинхронный JavaScript и XML

Название Ajax произошло от пакета его поддерживающих технологий: асинхронный канал связи между браузером и сервером, JavaScript и XML. Когда это было определено, это было задумано как следующее:

  • Презентация на основе стандартов с использованием XHTML и CSS
  • Динамическое отображение и взаимодействие с использованием DocumentObject браузера Модель (DOM)
  • Обмен данными и манипулирование с использованием XML и XSLT
  • Асинхронное извлечение данных с использованием XMLHttpRequest или XMLHTTP (из Microsoft)
  • JavaScript связывает все вместе

Хотя обычно разработка с использованием эти стимулирующие технологии, он может быстро стать больше проблем, чем вознаграждение.

Именно по этим причинам больше важное определение Ajax - это ...

Ajax: архитектура

Захватывающая эволюция Ajax - это в том, как вы разрабатываете веб-приложения. Давайте сначала посмотрим на обычные веб-архитектура:

  1. Определите страницу для каждого события в приложении: просмотр товаров, покупка элементы, выписка и т. д.
  2. Каждое событие или действие возвращает полную страницу обратно в браузер.
  3. Эта страница отображается для пользователя.

Сейчас это кажется нам естественным. Это сделало смысл в начале Интернета, поскольку Интернет на самом деле не о Приложения. Интернет начинался как больше хранилища документов; это было мир, в котором вы могли бы просто связать между документами произвольным образом. Это был о совместном использовании документов и данных, не интерактивность в любом значимом смысл.

Представьте себе многофункциональное настольное приложение для момент. Представьте, что вы думаете если при каждом нажатии все компоненты на экране приложения перерисовал с нуля. Кажется немного орехи, не так ли? В Интернете это было мир, в котором мы жили до прихода Аякса вместе.

Ajax - это новая архитектура. В важные части этой архитектуры являются:

  • Небольшие события на стороне сервера: Теперь компоненты веб-приложения могут делать небольшие запросы к серверу, получить некоторую информацию и настроить страницу, просматриваемую при изменении ДОМ. Нет полного обновления страницы.

  • Асинхронный: Запросы, отправленные обратно на сервер, не вызывают браузер, который нужно заблокировать. Пользователь может продолжать использовать другие части приложение, и пользовательский интерфейс может быть обновлен чтобы предупредить пользователя о том, что запрос происходит.

  • onAnything: Мы можем взаимодействовать с сервером практически на чем угодно пользователь делает. Ловушка современных браузеров большинство тех же пользовательских событий, что и операционная система: наведения, мышь щелчки, нажатия клавиш и т. д. Любой пользователь событие может вызвать асинхронный просьба.

Все это звучит здорово, не так ли? С этим изменением мы должны быть хотя осторожно. Один из величайших в Интернете то, что кто-то можно использовать. Простая семантика помогает этому случиться. Если мы переборщим, мы можем начать удивлять пользователей с новыми абстракциями пользовательского интерфейса. Это распространенная жалоба на пользовательские интерфейсы Flash, где пользователи сталкиваются с новыми символами, метафоры и необходимые действия для достичь полезных результатов.

5
ответ дан 30 November 2019 в 01:53
поделиться

Чаще всего это относится к использованию объекта XMLHttpRequest через JavaScript * в браузере.

В зависимости от того, кого вы спросите, его можно использовать для описания почти любого типа клиента / связь с сервером через HTTP, кроме простого ввода URL-адреса в браузер.

* jQuery предоставляет неплохой код-оболочку для обработки различий между браузерами и т. д.

5
ответ дан 30 November 2019 в 01:53
поделиться

Это модное слово, суть его в следующем:

Использование Javascript для создания асинхронного HTTP-запроса (в фоновом режиме) .

Когда поступает контент , выполняется действие, обычно выполняющее некоторую логику, а затем обновляющее внешний вид страницы, манипулируя деревом DOM; то есть вставка новых элементов HTML, удаление некоторых элементов HTML и т. д.

X в AJAX означает XML, но это не имеет значения. XML - это всего лишь один из многих способов форматирования данных, отправляемых сервером. JSON - гораздо лучшая альтернатива (IMNSHO). Кроме того, сервер может отправлять простой текст или обычный HTML.

Ключевое слово здесь - асинхронный запрос. Запрос, который выполняется в фоновом режиме, без необходимости перезагрузки страницы браузером.

6
ответ дан 30 November 2019 в 01:53
поделиться

Not to be confused with the cleaner, AJAX, the technology term, is really describing a framework or better stated as a technique for using XML and JavaScript to make asynchronous calls to server side code...

Here are some good code samples. And some more.

While many of these samples above show how to create all of the XML Request objects, if you look into the AJAX Control Toolkit from Microsoft for ASP.NET applications or jQuery, you'll find these easier to work with.

jQuery Sample (from jQuery site):
when code is hit, the some.php file is hit passing the name and location values in.

    <script type="javascript">
        function saveDataAjax(){ 
        $.ajax({
           type: "POST",
           url: "some.php",
           data: "name=John&location=Boston",
           success: function(msg){
             alert( "Data Saved: " + msg );
           }
         });
       }
   </script>
   <input type="submit" onClick="saveDataAjax();" value="submit" />
15
ответ дан 30 November 2019 в 01:53
поделиться

The rough idea in English:

You have a web page. Some event (can be a button press or other form event, or just something triggered by a timer) occurs and triggers JavaScript code that asks the server for fresh information (like the latest value of GOOG stock).

There's a piece of code on the server that collects the info you passed and sends some info back. That's different from the page-serving job the server usually has.

When the server answers, a callback function (that you specified in the JavaScript call to the server) is called with the info from the server. Your JavaScript code uses the info to update something--like a GOOG stock chart.

18
ответ дан 30 November 2019 в 01:53
поделиться
Другие вопросы по тегам:

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