<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.de.xsl"?>
<modulesynopsis metafile="mod_isapi.xml.meta">

<name>mod_isapi</name>
<description>ISAPI-Erweiterungen f&uuml;r Windows</description>
<status>Base</status>
<sourcefile>mod_isapi.c</sourcefile>
<identifier>isapi_module</identifier>
<compatibility>Win32 only</compatibility>

<summary>
    <p>Dieses Modul implementiert das Internet-Servererweiterungs-API.
    Das bedeutet, dass die Internet-Servererweiterungen (die ISAPI-.dll-Module)
    von Apache f&uuml;r Windows genutzt werden k&ouml;nnen.</p>

    <p>ISAPI-Erweiterungsmodule (<code>.dll</code>-Dateien) werden
    von ditter Seite entwickelt. Sie stammen nicht von der Apache Group
    und werden von dieser nicht unterst&uuml;tzt. Bei Problemen mit 
ISAPI-Erweiterungen
    sollten Sie direkt Kontakt mit dem ISAPI-Entwickler aufnehmen.
    <strong>Bitte <em>wenden Sie sich mit solchen Problemen nicht</em> an
    das Apache-Serverprojekt.</strong></p>
</summary>

<section id="usage"><title>Verwendung</title>

    <p>Verbinden Sie in der Server-Konfigurationsdatei
    mit Hilfe der
    <directive module="mod_mime">AddHandler</directive>-Direktive
    die ISAPI-Dateien und ihre Dateinamenserweiterungen
    mit dem <code>isapi-isa</code>-Handler. Damit <code>.dll</code>-Dateien
    als ISAPI-Erweiterung verarbeitet werden, muss der Datei
    <code>httpd.conf</code> folgende Zeile hinzugef&uuml;gt werden:</p>
    <example>
        AddHandler isapi-isa .dll
    </example>

    <p>Beim Apache-Server gibt es keine M&ouml;glichkeit, ein angefordertes
    Modul geladen zu lassen. Sie k&ouml;nnen ein bestimmtes Modul aber vorab 
laden
    und geladen lassen, wenn Sie folgende Anweisung in die
    <code>httpd.conf</code>-Datei einf&uuml;gen:</p>
    <example>
        ISAPICacheFile c:/WebWork/Scripts/ISAPI/mytest.dll
    </example>

    <p> Unabh&auml;ngig davon, ob eine ISAPI-Erweiterung vorab geladen wurde,
    gelten f&uuml;r alle ISAPI-Erweiterungen die gleichen Berechtigungen und
    Einschr&auml;nkungen wie f&uuml;r CGI-Skripte. Deshalb mu&szlig; f&uuml;r 
das Verzeichnis mit
    den <code>.dll</code>-Dateien der ISAPI-Erweiterung
    <directive module="core">Options</directive> <code>ExecCGI</code>
    gesetzt werden.</p>

    <p>In den Abschnitten <a href="#notes">Erg&auml;nzende Hinweise</a> und
    <a href="#journal">F&uuml;r den Programmierer</a> finden Sie weitere 
Einzelheiten
    und Erkl&auml;rungen zur ISAPI-Unterst&uuml;tzung durch
    <module>mod_isapi</module>.</p>
</section>

<section id="notes"><title>Erg&auml;nzende Hinweise</title>

    <p>Die ISAPI-Implementierung des Apache stimmt mit Ausnahme einiger
    "Microsoft-spezifischer" Erweiterungen f&uuml;r die asynchrone
    Ein- und Ausgabe mit der ISAPI-Spezifikation 2.0
    &uuml;berein. Das Ein- und Ausgabemodell des Apache erlaubt das
    asynchrone Lesen und Schreiben nicht in der Weise, wie es die
    ISAPI-Spezifikation vorschreibt. Versucht eine ISA auf nicht
    unterst&uuml;tzte Eigenschaften wie die asynchrone Ein- und Ausgabe
    zuzugreifen, wird eine Meldung in das Fehlerprotokoll eingetragen, die die
    Fehlersuche erleichtern soll. Da es sich dabei um sehr viele Meldungen 
handeln
    kann, l&auml;sst sich eine Flut von Meldungen mit der Option
    <code>ISAPILogNotSupported Off</code> unterdr&uuml;cken.</p>

    <p>Einige Server, wie zum Beispiel der IIS von Microsoft, laden
    die ISAPI-Erweiterung in den Server und behalten sie solange im
    Arbeitsspeicher, bis der Speicherplatz knapp wird (falls keine anderen
    Optionen angegeben wurden). Zur Zeit l&auml;dt und entl&auml;dt der Apache
    die ISAPI-Erweiterung bei jeder Anforderung, es sei denn, die
    <directive module="mod_isapi">ISAPICacheFile</directive>-Direktive
    wird angegeben. Das ist zwar nicht effizient, f&uuml;r das Speichermodell 
des
    Apache ist dies jedoch das effektivste Verfahren. Viele ISAPI-Module
    zeichnen sich durch geringf&uuml;gige Abweichungen aus, die zur 
Inkompatibilit&auml;t
    mit dem Apache-Server f&uuml;hren k&ouml;nnen, so dass das Entladen dieser 
Module
    die Stabilit&auml;t des Servers verbessert.</p>

    <p>Ferner ist zu beachten, dass der Apache zwar ISAPI-Erweiterungen
    jedoch <strong>keine ISAPI-Filter</strong> unterst&uuml;tzt.
    Dies kann zu einem sp&auml;teren Zeitpunkt m&ouml;glich sein, zur Zeit ist 
es jedoch nicht
    geplant.</p>
</section>

<section id="journal"><title>F&uuml;r den Programmierer</title>

    <p>Wenn Sie <module>mod_isapi</module>-Module f&uuml;r den Apache 2.0
    programmieren, m&uuml;ssen Sie die Aufrufe von 
    <code>ServerSupportFunction</code> auf folgende Direktiven
    beschr&auml;nken:</p>

    <dl>
      <dt><code>HSE_REQ_SEND_URL_REDIRECT_RESP</code></dt>
      <dd>Umleitung des Benutzers an eine andere Position.<br />
      Es muss sich um eine vollst&auml;ndige URL handeln
      (<code>http://Server/Position</code>).</dd>

      <dt><code>HSE_REQ_SEND_URL</code></dt>
      <dd>Umleitung des Benutzers an eine andere Position.<br />
      Hier darf es sich nicht um eine vollst&auml;ndige URL handeln, Protokoll
      oder Servername d&uuml;rfen nicht angegeben werden, sondern nur
      kurz <code>/Position</code>).<br />
      Diese Umleitung wird vom Server und nicht vom Browser
      vorgenommen.<br />
      <note type="warning"><title>Achtung</title>
        <p>In der aktuellen Dokumentation scheint  Microsoft die Unterscheidung
        zwischen diesen beiden <code>HSE_REQ_SEND_URL</code>-
        Funktionen aufgegeben zu haben. Der Apache behandelt sie weiterhin
        als zwei eigenst&auml;ndige Funktionen mit unterschiedlichen 
Anforderungen
        und unterschiedlichem Verhalten.</p>
      </note></dd>

      <dt><code>HSE_REQ_SEND_RESPONSE_HEADER</code></dt>
      <dd>Der Apache akzeptiert den Rumpf einer Antwort nach dem Header,
      wenn eine Leerzeile im String-Argument des Headers folgt (zwei aufeinander
      folgende Zeilenumbr&uuml;che). <code>NULL</code> darf nicht im Rumpf
      enthalten sein, weil damit das Argument beendet wird.</dd>

      <dt><code>HSE_REQ_DONE_WITH_SESSION</code></dt>
      <dd>Der Apache betrachtet dies als No-Option-Flag, da die Sitzung
      beendet wird, wenn ISAPI von der Verarbeitung zur&uuml;ckkehrt.</dd>

      <dt><code>HSE_REQ_MAP_URL_TO_PATH</code></dt>
      <dd>Der Apache wandelt einen virtuellen Namen in einen realen
      Namen um.</dd>

      <dt><code>HSE_APPEND_LOG_PARAMETER</code></dt>
      <dd>
        Diese protokollierte Meldung kann wie folgt aufgezeichnet werden:

        <ul>
          <li>In der <code>\"%{isapi-parameter}n\"</code>-Komponente
          einer <directive module="mod_log_config">CustomLog</directive>-
          Anweisung</li>

          <li>In der <code>%q</code>-Komponente mit der
          <directive module="mod_isapi">ISAPIAppendLogToQuery</directive>
          <code> On</code>-Direktive</li>

          <li>Im Fehlerprotokoll mit der 
          <directive module="mod_isapi">ISAPIAppendLogToErrors
          </directive> <code>On</code>-Direktive</li>
        </ul>

        <p>Die erste Option (<code>%{isapi-parameter}n</code>-Komponente)
        steht immer zur Verf&uuml;gung und ist vorzuziehen.</p>
      </dd>

      <dt><code>HSE_REQ_IS_KEEP_CONN</code></dt>
      <dd>Gibt den ausgehandelten Keep-Alive-Status zur&uuml;ck.</dd>

      <dt><code>HSE_REQ_SEND_RESPONSE_HEADER_EX</code></dt>
      <dd>Verh&auml;lt sich wie dokumentiert, wenngleich auch das
      <code>fKeepConn</code>-Flag ignoriert wird.</dd>

      <dt><code>HSE_REQ_IS_CONNECTED</code></dt>
      <dd>Gibt <code>FALSE</code> zur&uuml;ck, wenn die Anfrage abgebrochen
      wurde.</dd>
    </dl>

    <p>Bei unbekannten <code>ServerSupportFunction</code>-Aufrufen
    gibt der Apache <code>FALSE</code> zur&uuml;ck und setzt
    <code>GetLastError</code> auf
    <code>ERROR_INVALID_PARAMETER</code>.</p>

    <p><code>ReadClient</code> ermittelt den &uuml;ber den Anfangspuffer
    hinausgehenden Anfragerumpf (definiert mit <directive module="mod_isapi"
    >ISAPIReadAheadBuffer</directive>). Basierend auf der
    <directive>ISAPIReadAheadBuffer</directive>-Einstellung (Anzahl der Bytes,
    die vor dem Aufruf des ISAPI-Handlers gepuffert werden) werden
    k&uuml;rzere Anfragen beim Aufruf vollst&auml;ndig an die Erweiterung 
gesendet.
    Handlet es sich um eine l&auml;ngere Anfrage, muss die ISAPI-Erweiterung
    mit <code>ReadClient</code> den verbleibenden Teil des Anfragerumpfs
    lesen.</p>

    <p><code>WriteClient</code> wird unterst&uuml;tzt, allerdings nur mit dem
    <code>HSE_IO_SYNC</code>- oder dem No-Option-Flag (Wert
    <code>0</code>). Alle &uuml;brigen <code>WriteClient</code>-Anfragen
    werden mit dem R&uuml;ckgabewert <code>FALSE</code> und dem Wert
    <code>GetLastError</code> f&uuml;r
    <code>ERROR_INVALID_PARAMETER</code> zur&uuml;ckgewiesen.</p>

    <p><code>GetServerVariable</code> wird unterst&uuml;tzt, obwohl die
    erweiterten Servervariablen (wie sie von anderen Servern definiert werden),
    nicht vorhanden sind. Alle &uuml;blichen CGI-Umgebungsvariablen sowie die
    <code>ALL_HTTP</code>- und <code>ALL_RAW</code>-Werte
    stehen zur Verf&uuml;gung.</p>

    <p>Das Modul <module>mod_isapi</module> von Apache 2.0
    unterst&uuml;tzt weitere M&ouml;glichkeiten, die mit sp&auml;teren 
Versionen der 
    ISAPI-Spezifikation eingef&uuml;hrt wurden, sowie eine eingeschr&auml;nkte 
Emulation
    der asynchronen I/O und die <code>TransmitFile</code>-Semantik. 
Au&szlig;erdem
    unterst&uuml;tzt der Apache das vorgezogene Laden von ISAPI-dlls zur 
Verbesserung
    der Serverleistung, was f&uuml;r die Version 1.3 des Moduls
    <code>mod_isapi</code> nicht gilt.</p>
</section>

<directivesynopsis>
<name>ISAPICacheFile</name>
<description>ISAPI -dlls werden beim Start geladen</description>
<syntax>ISAPICacheFile <var>Dateipfad</var> [<var>Dateipfad</var>]
...</syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>

<usage>
    <p>&Uuml;bernimmt eine durch Leerzeichen getrennte Liste mit den Namen
    der Dateien, die beim Serverstart geladen werden und bis zum
    Herunterfahren des Servers zur Verf&uuml;gung stehen. Diese Direktive kann
    f&uuml;r jede <code>.dll</code>-Datei wiederholt werden. Dabei sollte der
    vollst&auml;ndige Pfad angegeben werden. Handelt es sich nicht um eine 
absolute
    Pfadangabe, wird der Pfad relativ zu 
    <directive module="core">ServerRoot</directive> interpretiert.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>ISAPIReadAheadBuffer</name>
<description>Die Gr&ouml;&szlig;e des Read-Ahead-Puffers, der an
ISAPI-Erweiterungen gesendet wird.</description>
<syntax>ISAPIReadAheadBuffer <var>Gr&ouml;&szlig;e</var></syntax>
<default>ISAPIReadAheadBuffer 49152</default>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>FileInfo</override>

<usage>
    <p>Legt die maximale Gr&ouml;&szlig;e des Read-Ahead-Puffers fest, der an
    ISAPI-Erweiterungen beim ersten Aufruf gesendet wird. Die restlichen
    Daten m&uuml;ssen mit der <code>ReadClient</code>-Funktion abgefragt
    werden. Einige ISAPI-Erweiterungen unterst&uuml;tzen die
    <code>ReadClient</code>-Funktion m&ouml;glicherweise nicht. Wenden
    Sie sich bei Fragen an den Entwickler der ISAPI-Erweiterung.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>ISAPILogNotSupported</name>
<description>Fehlermeldungen bei unbekannten ISAPI-Funktionen</description>
<syntax>ISAPILogNotSupported on|off</syntax>
<default>ISAPILogNotSupported off</default>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>FileInfo</override>

<usage>
    <p>Protokolliert alle unbekannten ISAPI-Aufrufe im Fehlerprotokoll des
    Servers. Eine Aktivierung dieser Anweisung kann bei der Fehlersuche
    hilfreich sein. Funktionieren alle ISAPI-Module, sollte sie wieder auf
    <code>off</code> gesetzt werden.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>ISAPIAppendLogToErrors</name>
<description>Zeichnet <code>HSE_APPEND_LOG_PARAMETER</code>-
Anforderungen von ISAPI-Erweiterungen im Fehlerprotokoll auf.</description>
<syntax>ISAPIAppendLogToErrors on|off</syntax>
<default>ISAPIAppendLogToErrors off</default>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>FileInfo</override>

<usage>
    <p>Zeichnet <code>HSE_APPEND_LOG_PARAMETER</code>-
    Anforderungen von ISAPI-Erweiterungen im Fehlerprotokoll des
    Servers auf.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>ISAPIAppendLogToQuery</name>
<description>Zeichnet <code>HSE_APPEND_LOG_PARAMETER</code>-Anforderungen von 
ISAPI-Erweiterungen im Abfragefeld auf.</description>
<syntax>ISAPIAppendLogToQuery on|off</syntax>
<default>ISAPIAppendLogToQuery on</default>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>FileInfo</override>

<usage>
    <p>Zeichnet <code>HSE_APPEND_LOG_PARAMETER</code>-Anforderungen von 
ISAPI-Erweiterungen im Abfragefeld auf. Die Aufzeichnungen
werden an die <directive module="mod_log_config">CustomLog
</directive> <code>%q</code>-Komponente angeh&auml;ngt.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>ISAPIFakeAsync</name>
<description>Simulation einer asynchronen Unterst&uuml;tzung f&uuml;r 
ISAPI-Callbacks</description>
<syntax>ISAPIFakeAsync on|off</syntax>
<default>ISAPIFakeAsync off</default>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>FileInfo</override>

<usage>
    <p>Wird die Anweisung auf <code>on</code> gesetzt, wird eine
    asynchrone Unterst&uuml;tzung f&uuml;r ISAPI-Callbacks simuliert.</p>
</usage>
</directivesynopsis>

</modulesynopsis>


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to