You are not logged in.

1

Friday, August 3rd 2012, 8:01pm

CoreObject und ObjectType

Hallo zusammen,

ich wollte mal wissen, für das im WCF 2.0 die CoreObject und ObjectTypes sind?
Wann werden diese benutzt?

Viele Grüße
Philipp :)


Netzwerg

Member

  • "Netzwerg" is male

Posts: 5,552

Location: Ruhrpott

Occupation: Student

  • Send private message

2

Friday, August 3rd 2012, 8:09pm

Ein Core-Object ist ein Objekt, was direkt im WCF verankert und geladen wird.
Du kannst anschließend über WCF:.get<Core-Object>() darauf zugreifen.

So ist z.B. wcf\system\menu\page\PageMenu als Core-Object registriert, wodurch man via WCF::getPageMenu() darauf zugreifen kann. Ein Core-Object muss afaik von SingeltonFactory erben.

ObjectTypes werden benutzt, um eine einheitliche API anzubieten um damit etwas anzustellen. So kannst du ein korrekt definiertes Objekt sehr einfach taggen, dafür Notifications erstellen u.v.m.
Best regards,
Sebastian Teumert

  • "frmwrk_123" is male

Posts: 1,121

Location: Hamburg

Occupation: Informatikstudent

  • Send private message

3

Saturday, August 4th 2012, 9:58am

Man kann aber genauso gut PageMenu::getInstance() benutzen, denn nichts anderes passiert da beim WCF. Der große Vorteil liegt bei Templates, da man dort eine Instanz des WCF zur Verfügung hat und somit ziemlich einfach auf diese CoreObjects zugreifen kann.
Mit freundlichen Grüßen
frmwrk_123

Nützliche Plugins zum Selberbauen

4

Saturday, August 4th 2012, 10:02am

Also könnte man grob sagen, dass man Core-Object für ein Objekt verwenden soll, welches Application übergreifend verfügbar sein soll?


  • "frmwrk_123" is male

Posts: 1,121

Location: Hamburg

Occupation: Informatikstudent

  • Send private message

5

Saturday, August 4th 2012, 10:16am

CoreObject lohnt sich dann, wenn man nur eine Instanz des Objektes im gesamten WCF (schließt alle Applikationen mit ein) erlauben will. Die Begrenzung beschränkt sich natürlich nur auf einen Request. Bei einem neuen Request werden auch wieder neue Objekte erzeugt. Jeder Nutzer der Website hat dann also ein Objekt zur Verfügung.
Wenn man sich mal die bereits mitgelieferten CoreObjekte anschaut, dann wird auch deutlich, welche Funktion sie erfüllen sollten. PageMenu, ACPMenu, Benchmark, Breadcrumbs und LinkHandler haben alle eine Funktion, die für alle Applikationen gleich ist, aber pro Aufruf unterschiedliche Werte haben kann.

Um deine Frage zu beantworten: Es kann dazu benutzt werden (muss dann ein normales WCF-Paket sein). Es kann aber auch für Objekte benutzt werden, die in einer Applikation einzigartig sind (wenn sie mit einer Applikation mitgeliefert werden).
Mit freundlichen Grüßen
frmwrk_123

Nützliche Plugins zum Selberbauen

Netzwerg

Member

  • "Netzwerg" is male

Posts: 5,552

Location: Ruhrpott

Occupation: Student

  • Send private message

6

Saturday, August 4th 2012, 10:29am

Ich würde mich hier nicht auf die Einzigartigkeit versteifen. Denn per definitionem ist ein Singleton eben einzigartig (deswegen nennt man das ja auch "Highlander--Pattern"). Es gibt sicherlich viele Anwendungsfälle, in denen man ein Singelton benutzt, aber wo es kaum Mehrwert gibt, dies als Core-Object zu registrieren.

Viel wichtiger ist, dass man eben über eine Instanz des WCFs den Zugriff bekommt (und so, wie du bereits gesagt hast, auch im Template daran kommt, das ist imho der viel wichtigere Punkt).

Quoted

Wenn man sich mal die bereits mitgelieferten CoreObjekte anschaut, dann wird auch deutlich, welche Funktion sie erfüllen sollten. PageMenu, ACPMenu, Benchmark, Breadcrumbs und LinkHandler haben alle eine Funktion, die für alle Applikationen gleich ist, aber pro Aufruf unterschiedliche Werte haben kann.

So wie PHP funktioniert wird eben bei jedem Aufruf jedes Objekt neu erzeugt, PHP arbeitet die Requests eben so ab. Anders ist das z.B. bei Java Server Pages, wo der Servlet Container die ganze Zeit läuft und man somit Objekte wiederverwenden kann (oder bei vergleichbaren Archtiekturen, siehe IIS + C#). Das hat aber wenig mit Singletons etc. zu tun sondern ist bei PHP + Webserver achitekturbedingt.
Best regards,
Sebastian Teumert