Announcement

Collapse
No announcement yet.

mit using ein assembly eines fremden rechners einbinden?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • mit using ein assembly eines fremden rechners einbinden?

    hallo,

    ich möchte eine Methode ausführen bzw. ein Objekt erzeugen. Das Objekt bzw. die Methoden sind in einer KLasse definiert, die sich wiederum auf einem anderen Rechner befindet.
    Um also die Methode auszuführen bzw. das Objekt zu erzeugen, müsste ich die Klasse des anderen Rechners zunächst über "using ... " einbinden.
    Wie sieht diese using Anweisung konkret aus?
    using http:// IP des Rechners/Ordner/...

    Selbstverständlich möchte ich mich vorab noch beim anderen REchner anmelden und über den Austaushc von Serverzertifikaten eine sichere IP Verbindung gewährleisten...wie das alles geht weiss ich schon...is halt nur die frage offen, wie die using direktive ausehen muss und was onst noch zuu beachten ist...vielen dank...

    resi

  • #2
    Hallo,

    das Einbinden eines Namespaces über <i>using</i> ist nur ein optionaler Vorgang, der zur Bequemlichkeit vorgenommen wird (d.h. der Entwickler will nicht jedes Mal den vollständigen Typenamen mit seinen Bestandteilen <i>Namespace</i>.<i>Klasse</i> eintippen). Das Hinzufügen einer Assembly zur <i>References</i>Auflistung im Solution-Explorer (alias Projektgruppe) ist hingegen Pflicht, wenn das Programm auf einen Type aus dieser Assembly zugreifen soll. Wenn die eigene .NET-Anwendung zur Laufzeit einen Type aus einer Assembly nachladen will, die sich auf einem anderen Rechner befindet, könnte das so aussehen:
    <br>
    <code><b>private</b> <b>const</b> <b>string</b> sURL = <font color="#9933CC">&quot;http://192.168.10.1/VS/LoadFormAssembly.dll&quot;</font>;
    <b>private</b> <b>const</b> <b>string</b> sTypeName = <font color="#9933CC">&quot;LoadFormAssembly.AssemblyFor m&quot;</font>;
    <br>
    <b>private</b> <b>void</b> buttonLoadFrom_Click(<b>object</b> sender, System.EventArgs e)
    {
    statusBar1.Text = sURL;
    System.Reflection.Assembly aFrmAsm;
    aFrmAsm = System.Reflection.Assembly.LoadFrom(sURL);
    Type aFrmType = aFrmAsm.GetType(sTypeName);
    <b>Object</b> aFrmObj = Activator.CreateInstance(aFrmType);
    Form aFrm = (Form)aFrmObj;
    aFrm.ShowDialog();
    }
    </code>
    Die Methode <b>LoadFrom</b> der Assembly-Klasse kann eine Assembly direkt über eine URL laden

    Comment


    • #3
      Frage mal als Zaungast:

      Das würde jetzt vermutlich dazu führen, dass er die Assembly jedesmal von dieser Internet-Adresse lädt.
      Wie kriegt man denn hin, dass es dort nur guckt, ob's etwas Neues gibt, das ggf. lokal holt und sonst ganz normal lokal arbeitet (Performance)

      Comment


      • #4
        Hallo,
        <br>
        &gt; ..dass er die Assembly jedesmal von dieser Internet-Adresse lädt..
        <br>
        Nein - die CLR ist clever genug, die über die URL nachgeladenen Assemblies in dem <i>Application Download Cache</i>-Bereich der lokalen Festplatte (siehe <b>Download</b>-Unterverzeichnis vom GAC) zwischenzupuffern. Wenn die CLR einmal eine Assembly über eine URL geladen hat und das Programm danach eine andere Klasse aus einer anderen Assembly anfordert, schaut die CLR automatisch immer dann an der gleichen URL nach, wenn diese Assembly lokal nicht vorgefunden wird. Auch dann, wenn die Anwendung bereits erfolgreich gestartet werden konnte und alle beiden Assemblies im Application Download Cache der lokalen Festplatte liegen, löst die CLR immer dann eine <i>File... not found</i>-Exception aus, wenn die URL nicht auf neue Assembly-Versionen geprüft werden kann. Dies bedeutet, dass die Anwendung bei jedem Start auch dann eine Verbindung zum Webserver haben muss, wenn alle Assemblies bereits lokal verfügbar sind. Auf diesem Weg verhindert .NET in der Voreinstellung, dass eine Anwendung mit "alten" Teilen ausgeführt wird, obwohl bereits neue Teile auf dem momentan nicht erreichbaren Server rumliege

        Comment


        • #5
          Kannst Du zu diesem Thema Literatur für Forgeschrittene empfehlen, wo Dinge wie Remoting und die .NET-Klassenbilbiothek vertieft & advanced durchgenommen werden ?
          Vieleicht hast Du auch sogar selbst was dazu geschrieben ;-

          Comment

          Working...
          X