2009-06-10 11 views
0

www.whatpub.org ist eine von mir in VB.NET geschriebene ASP.NET v2-Webanwendung. Es ist derzeit auf www.webhost4life.com gehostet - billig, viele Funktionen, aber nicht gerade schnell, aber das ist eine Nebensache. Die Datenbank für die Pubs befindet sich in einer SQL 2005-Datenbank. Es gibt zwei grundlegende Teile des Systems. Das Frontend "Suche nach Pubs und Display Guide" und das Backend "Administrations- und Management-Applikation" heißen HOPS. Ziemlich viel Lauf der Mühle ASP.NET Web App.Verfügbarmachen von Daten vom Webserver zu anderen Anwendungen

Es gibt jedoch eine neue Anforderung. Eine der CAMRA-Niederlassungen möchte HOPS verwenden und obwohl sie nichts dagegen haben, dass die Einträge über www.whatpub.org zugänglich sind, möchten sie auch eine statische Liste der Pubs auf ihrer eigenen Website erstellen.

Im Moment ist ihr Handbuch eine Reihe von statischen Webseiten, die vom Webmaster manuell bearbeitet werden müssen. Nicht ideal ...

Die naheliegende Lösung ist, dass sie etwas Ähnliches tun, was www.whatpub.org bereits tut - entweder die Seiten spontan erzeugen, wenn sie angefordert werden oder eine Routine schreiben, um die ausgelösten statischen HTML-Seiten zu erzeugen durch eine Änderung der Pub-Aufzeichnung. Dies würde PHP oder ASP.NET Programmierung erfordern - das ist gegeben.

Allerdings (und um schließlich zu dem Grund für meine Post zu bekommen), was ist der beste Weg, um die Daten in der HOPS-Datenbank zu einer anderen Anwendung auf dem anderen Webserver verfügbar zu machen?

WebHost4Life stellen die SQL-Datenbank im Internet zur Verfügung, aber das fühlt sich nicht ganz richtig und vielleicht ein bisschen gefährlich. Bleibt auch nicht bei webhost4life und ein anderer Anbieter kann den SQL Server im Internet nicht verfügbar machen.

Ich habe viel über Webdienste gelesen. Ich mag die Idee von diesem, weil es bedeutet, dass ich eine Zwischenschicht schreiben könnte, die die exponierte Schnittstelle konsistent halten kann, selbst wenn ich mich dazu entschloss, die zugrunde liegende Datenbankstruktur zu ändern (in Grenzen).

Ich habe auch HTTP-POST-Anfragen verwendet, die XML-Dokument zurückgeben, was eine andere Option ist.

Wo passt SOAP in all das?

Alle Beratung dankbar erhalten!

Prost, Rob.

Antwort

1

Ich denke, Ihre beste Wahl wäre die Offenlegung Ihrer HOPS-Daten mit einem ASP.NET-Webdienst. Ihr CAMRA-Partner kann auf den Webservice zugreifen, so gut er es für richtig hält. Zum Beispiel könnten sie JQuery verwenden, um Ihren Webservice aufzurufen und mit den Daten im JSON-Format zu arbeiten (ein alternatives Datenformat, das in JavaScript anstelle von XML gut funktioniert). Als Warnung ist dieser Artikel sehr hilfreich beim Beheben häufiger Probleme beim Aufrufen eines ASP.NET-Webdiensts mit JQuery und möglicherweise anderen JavaScript-Frameworks.

http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

Hier einige Beispiel JQuery-Code für eine ASP.NET Web-Service-Aufruf:

jQuery.ajax({ 
type: "POST", 
contentType: "application/json", 
beforeSend: function(x) { 
    x.setRequestHeader("Content-Type","application/json"); 
}, 
url: "/services/MyService.asmx/GetRandomPubName", 
error: function (XMLHttpRequest, textStatus, errorThrown) { 
    // handle your error here 
}, 
dataType: "json", 
data: {}, 
success: function(msg) { 
    // handle the successful web service call 
    $('.responseDiv').html('Random Pub Name found in the database: '+msg.PubName); 
} 

});

+0

Entschuldigen Sie meinen Mangel an Wissen über Web-Services (müssen nachlesen, denke ich), aber ich nehme an, dass sie über Standard-Web-Protokolle wie HTTP funktionieren? Also keine Firewall und Port Probleme? Ich frage mich, wie hoch die Chancen sind, dass ein Webdienst auf einer gehosteten Website arbeitet? –

+0

Ja, ein Web-Service verwendet HTTP. Ein ASP.NET-Webdienst (Seite) würde beim Erstellen eines neuen Webdienstprojekts in Visual Studio standardmäßig den Namen Service1.asmx erhalten.Ich hatte es immer schwer, eine wirklich gute Webservices-Einführung und Muster zu finden, aber denke an deinen Webservice als eine Seite/einen Service innerhalb deines Webserverdienstes (IIS, Apache, etc.). – Jon

+0

Es ist einfacher, Ihren "Web-Service" als eine .asmx-Seite innerhalb von IIS zu visualisieren, genau wie Ihre normale ASPX-Seite. Ein Webdienst wird von einer anderen Anwendung aufgerufen, um Daten im XML- oder JSON-Format abzurufen. SOAP und WSDL sind nur ein Protokoll und ein Modell zur Beschreibung des Webdienstes für die Clientanwendung, z. B. welche Funktionen in Ihrem Webdienst verfügbar sind. – Jon

Verwandte Themen