In letzter Zeit stelle ich immer wieder verwundert fest, dass mein Hinterhof und auch die Hinterhöfe der umliegenden Häuser mehr und mehr zu einem Aufenthaltsort für alle möglichen Hobbyfotografen (und betagtere Herren(-Grüppchen)), werden. Der Volkswohl Bund will am Standort seiner alten Firmenzentrale nämlich ein neues Hochhaus bauen. Wie das aussehen soll, kann man sich auf der Website von “nps Tchoban Voss” anschauen. Dafür muss das alte Hochhaus aber erstmal verschwinden. Scheinbar scheint die bevorstehende Sprengung und der Abriss des Hochhauses den einen oder anderen Baustellentouristen anzuziehen.
Das Interesse scheint immer größer zu werden. Mittlerweile gibt es sogar im Internet ganze Foren-Threads über das Thema und auch in meiner Nachbarschaft wird bereits darüber gebloggt. Hier daher für alle Interessierten ein paar Fotos der Rückansicht der Baustelle:
Zugegeben, so eine Sprengung direkt im Hinterhof ist schon spannend. Leider darf ich mich während der Sprengung nicht in meiner Wohnung aufhalten um das Schauspiel aus nur ein paar Metern Entfernung zu bestaunen. Ich denke allerdings derzeit über die Installation einer Webcam nach, um das Schauspiel wenigstens online verfolgen zu können. Ggf. wird es dann auch ein Video geben, dass ich dann natürlich ebenfalls hier veröffentlichen werde.
Categories: Real Life.
Tags: fotos, hochhaus, sprengung, video, volkswohlbund
By stj
—
January 17, 2008 at 2:20 pm
David Turner asks in a comment on the blog post Polymorphism in WCF contracts if it’s possible to deliberately “slice” an instance of the derived type. Instead of passing an instance of a base type to a method he wants to pass an instance of a derived type. When the instance is send to the server he only wants the part (members) of the base type to be serialized. So he asks:
How do I instruct it to just serialize the base?
Ok, here is how you can accomplish this:
Continued…
Categories: Programming.
Tags: Polymorphism, serialization, WCF
By stj
—
January 13, 2008 at 3:57 pm
Heute hatte ich eher zufällig das Buch Head First Design Patterns in der Hand. Auch eher zufällig bin ich dabei im Kapitel über das Singleton-Pattern beim Double-Checked Locking hängen geblieben. Dort wird darauf aufmerksam gemacht, dass dieses Pattern unter Java 1.4 und früheren Versionen nicht funktioniert.
Da ich dieses Pattern bereits einige male in C# verwendet habe, wurde ich doch etwas neugierig und habe ein bischen nach den Gründen dafür gesucht. Dabei bin ich auf den Artikel The "Double-Checked Locking is Broken" Declaration aufmerksam geworden. In diesem werden alle Probleme mit diesem Pattern detailiert erläutert.
Mein C#-Code für dieses Pattern sah bis jetzt immer folgendermaßen aus (stark abstrahiert):
C#:
-
public sealed class Singleton
-
{
-
private static Singleton instance = null;
-
private static object syncRoot =
new object();
-
public string value;
-
-
private Singleton()
-
{
-
value = "test123";
-
}
-
-
public static Singleton Instance
-
{
-
get
-
{
-
if (null == instance) // first check
-
{
-
lock (syncRoot)
-
{
-
if (null == instance) // second (double) check
-
instance =
new Singleton
();
-
}
-
}
-
return instance;
-
}
-
}
-
}
Stellt sich die Frage, ob mit diesem Code in C# bzw. unter .Net auch Probleme bestehen.
Continued...
Categories: Programming.
Tags: .Net, c#, patterns, singleton
By stj
—
January 10, 2008 at 2:08 am
Die Lösung für ein Problem bin ich noch schuldig geblieben. Die beim letzten mal vorgestellte Lösung hatte den Nachteil, dass ein wichtiges Prinzip der Serviceorientierung nicht eingehalten wurde - Services share schema and contract, not class.
Die Lösung hierfür ist es die möglichen ServiceKnownTypes erst zur Laufzeit zu bestimmen. Folgendes Beispiel erläutert, wie es funktioniert:
Continued...
Categories: Programming, Web.
Tags: Polymorphism, serialization, SOA, WCF, Web Services
By stj
—
October 22, 2007 at 8:27 am
Gestern habe ich im ersten Teil ein Problem geschildert, das auftritt, wenn man versucht Polymorphismus im Zusammenhang mit WCF-Services einzusetzen. Dabei ging es konkret darum Interfaces oder abstrakte Klassen als Parameter an Service-Methoden zu übergeben.
Die vorgestellte Lösung für das Problem mittels des ServiceKnownType-Attributs hatte den Nachteil, dass "echter" Polymorphismus nicht unterstützt wurde und somit ein weiteres Problem geschaffen war bzw. das eigentlich Problem nicht richtig gelöst war.
Um in unserem Beispiel "echten" Polymorphismus zu unterstützen, muss es möglich sein, beliebige Instanzen von Klassen an den Service zu übermitteln, die entweder das Interface ICustomer implementieren oder von der abstrakten Klasse CustomerBase abgeleitet sind. Möglich ist dies durch den Einsatz des NetDataContractSerializers. Wie das im Detail funktioniert beschreibt Aaron Skonnard in seinem Blogeintrag WCF's NetDataContractSerializer.
Mit Hilfe des dort vorgestellten NetDataContractFormat-Attributs sieht die Beschreibung unseres Service somit folgendermaßen aus:
C#:
-
[ServiceContract]
-
public interface ICustomerService
-
{
-
[OperationContract]
-
[NetDataContractFormat]
-
void AddCustomerInterface(ICustomer customer);
-
-
[OperationContract]
-
[NetDataContractFormat]
-
void AddCustomerBase(CustomerBase customer);
-
}
OK, alles ist super. Polymorphismus wird unterstützt und wir sind glücklich.
Naja, leider nicht wirklich ...
Continued...
Categories: Programming, Web.
Tags: NetDataContractSerializer, Polymorphism, serialization, SOA, WCF, Web Services
By stj
—
October 20, 2007 at 12:13 pm