2009-07-06 1 views
2

Ich erstellte einen WCF-Dienst, der TagLib # (http://developer.novell.com/wiki/index.php/TagLib_Sharp) verwendet, die auf einer nicht verwalteten DLL (Win32, denke ich) beruht, um viel von dem schweren Heben zu tun. Gibt es eine Chance, diesen WCF-Dienst in Azure zu hosten?Kann ein Azure-Dienst nicht verwalteten Code ausführen?

Ich fand diese in der .csdef Datei:

<WebRole name="WebRole" enableNativeCodeExecution="true"> 

, dass das tut, was ich hoffe, es tut?

Wie wichtig ist ein Addendum, wenn der nicht verwaltete Code 32 oder 64 Bit ist? Ich weiß aus Erfahrung, dass der Versuch, eine 32-Bit-Dll von einem 64-Bit-WCF-Dienst aufzurufen, nicht funktioniert, und ich glaube, Azure ist eine 64-Bit-Plattform.

Antwort

3

Auf der 32-Bit-Plattform kann P/Invoke verwendet werden. Aber nicht auf der 64-Bit-Plattform. Werfen Sie einen Blick auf this article für weitere Informationen. Aber Sie können den Dienst selbst hosten und die service bus-Funktion von Azure verwenden, wenn Sie möchten.

+0

Perfekt, danke! –

5

Ich glaube eigentlich, JP hat es umgekehrt. P/Invoke in der Cloud funktioniert mit 64-Bit, aber nicht mit 32-Bit, da alle unsere VMs standardmäßig Win 2k8 x64 ausführen. Sie können natürlich immer einen neuen Prozess starten.

Beachten Sie auch, dass die Registrierung von COM-Servern heute nicht funktioniert - ich bin mir nicht sicher, wie Taglib COM verwendet.

+0

Es scheint die Problemumgehung zu sein, einen 32-Bit-Subprozess in Azure zu erstellen und dann p/aufzurufen. –

+0

Yup. In diesem Fall ist der Unterprozess auf WOW64, also sollte alles 32 Bit sein –