Beiträge in Kategorie: Tech


Ich habe heute ein cooles Tool namens Fiddler gefunden. Fiddler, oder besser gesagt Fiddler2 ist ein Web Debugging Proxy. Mit ihm kann man allen HTTP Traffic auf seinem Rechner beobachten, Breakpoints setzen und ganz allgemein schauen was auf seinem Rechner so los ist. Ich nutze das Tool um mir die SOAP bzw. XMLA  Nachrichten die zwischen meinem Client und dem Server ausgetauscht werden anzusehen, wesentlich komfortabler als Wireshark, was ich zuvor verwendet habe. Hier ein Screenshot und der entsprechende Link zum kostenlosen Tool Fiddler.

fiddler

Ich sah mich in der letzten Woche damit konfrontiert, dass ich aus einer bestehenden unmanged C++ Anwenundung eine C# DLL aufrufen sollte, die wiederum auf einen Webservice zugreifen sollte. Ich habe für das Problem folgende Lösung gefunden:
Man kann aus C++ C# Komponenten aufrufen und diese verwenden. Im einfachsten Fall kann eine C# Komponente als COM Komponente realisiert werden. Auf diese Com-Komponente kann dann C++ zugreifen. Folgende Schritte sind hierfür notwendig:
Der C# Client

  1. In der C# Klasse ein Interface mit Funktionen für die Komponente erstellen
  2. Klasse realisieren, die das Interface erfüllt
  3. Klasse und Interface müssen ab VS05 als COM-Visible deklariert werden
  4. Der Klasse, die das Interface erfüllt muss zusätzlich den Interface Typen deklareien
  5. Damit Schnittstelle und realisierte Klasse im System eindeutig identifiziert werden können, werden diese mit einer GUID versehen.
  6. Damit die Klassen auch sichtbar in COM sind, muss man für das Erstellen “Für COM Interop regestrieren” aktivieren
  7. Meine Erfahrungen zeigen, dass bei der ersten Erstellung die tlb Datei nicht erstellt wird und die Kompoente nicht registriert wird, fesewgen muss diese manuell durch geführt werden
  1. Tlbexp XmlaService.dll
  2. regasm XmlaService.dll /tlb:com.XmlaService.tlb


Beispielhafte Realisierung:


using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace XmlaService
{
[ComVisible(true)]
[Guid("6F032C1C-B862-40dc-9DD2-78ADA8303176")]
public interface IDoService
{
string PerformRequest();
}
[ComVisible (true)]
[ClassInterface(ClassInterfaceType.None)]
[Guid("D4C231A6-1DFD-4add-8039-5B84A0BF0C40")]
public class DoXmlaService:IDoService
{
public DoXmlaService()
{ }

public string PerformRequest()
{
return "JUHU";
}
}
}

Ansprechen der Komponente in unmanged C++

  1. Die C++ KLasse muss einen Verweis auf den genauen Pfad der tlb-Datei besitzen
  2. Zusätzlich müssen noch die Argumente für den Inmport übergeben werden, einen Überblick gibt es unter http://msdn2.microsoft.com/en-us/library/8etzzkb6(VS.80).aspx
  3. Den Aufruf der Komponente muss immer einzeln erfolgen
  4. Ebenfalls sollte darauf geachtet werden, dass tlh, komplett erstellt wurde, Beispiel siehe unten


Beispielhafte Realisierung


#include "stdafx.h"
#import "C:\Dokumente und Einstellungen\yteiken\Desktop\ComZeug\ManagedCOM\MyInterop\bin\Debug\MyInterop.tlb" named_guids raw_interfaces_only
#import "C:\Dokumente und Einstellungen\yteiken\Eigene Dateien\Visual Studio 2005\Projects\XmlaService\XmlaService\bin\Debug\XmlaService.tlb" named_guids raw_interfaces_only

int _tmain(int argc, _TCHAR* argv[])
{
long result;
result = 5;

long parameter;
parameter = 5;
CoInitialize(NULL);
MyInterop::IMyDotNetInterfacePtr pDotNetCOMPtr;

HRESULT hRes = pDotNetCOMPtr.CreateInstance(MyInterop::CLSID_MyDotNetClass);
if (hRes == S_OK)
{
pDotNetCOMPtr->ShowDialog (parameter, &result);
}

CoUninitialize ();

BSTR string;
XmlaService::IDoServicePtr test;
//
//XMLA Interface
HRESULT hRes2 = test.CreateInstance(XmlaService::CLSID_DoXmlaService);
if(hRes2 == S_OK)
{
test->PerformRequest(&string);
}

CoUninitialize ();
return 0;
}

In nicht mal mehr vier tagen kommt das IPhone raus, und der erste scheint schon zu warten, und dass obwohl noch nicht mal die Tarife raus sind. Er wird bestimmt eine schöne Woche haben. Es könnte natürlich auch sein, dass er einfach nur so da ist, aber dem Stuhl nach zu urteilen….Der erste wartet schon
Schade, dass das IPhone nicht letztes Jahr erschienen ist, denn dann hätte ich ihn fragen können, was er da macht.
Gefunden im Iphoneblog

Ich habe beschlossen mich nun ein wenig mit Ruby zu beschäftigen. Zum Anfang ein paar Link- und eine Buchempfehlung:


Hier eine kleine Übersicht über die UML 2.0 Notation von OOSE. Ich finde es ganz nett mal alles so kompakt zu haben, vor allem wenn man die schicke UML-Tasse nicht hat.
Der Ausdruck hängt jetzt bei mir neben den VS Tastenkürzeln.

Mit iTextSharp lassen sich ganz passabel mit .NET PDFs generieren. iTextSparp ist ein Port einer Java-Komponente, und soll sich auch mit 2.0 und 3.0 betreiben lassen.

ITunes ist ein Programm mit dem man Musik hört. Ich frage mich warum er, wenn er die Podcast aktualisiert 80% der CPU braucht. Also mir fallen spontan 10 Sachen ein, wie man einen http-Zugriff so implementieren kann, dass er nicht so viel CPU braucht. Vielleicht sollte ich eine Bewerbung zu Apple schicken, oder ich mach mich auf die Suche nach einer Alternative.

Heute habe ich einige interessante Artikel für meine Diplomarbeit bei MS Research gefunden. Sie stellen eine Menge ihrer Veröffentlichen zur Verfügung.
Hier kann man nach Artikeln suchen.
Und ich habe endlich das MS Tutorial zu Bayeschen-Netzen gefunden, nämlich hier.

The Microsoft DSL Tools are now are of the Visual Studio SDK. It can be downloaded at Microsoft. I am exited about the new features, more in a few days.

Nachdem es danach aussieht als würde ich meine Diplomarbeit mit Hilfe der DSL Tools von MS realisieren werde, werde ich demnächst an dieser Stelle über meine Erfahrungen berichten.
Hier erstmal der Link zur Microsoft Seite.
http://msdn.microsoft.com/vstudio/DSLTools/

Next Page »