Archiv

Artikel Tagged ‘API’

Microsoft SDK für Facebook

1. Januar 2010 juergen79 Keine Kommentare

Anfang November erschien schon die FacebookSDK von Microsoft und wurde auch im Silverlight Team Blog angekündigt. Während ich mir das Visual Studio 2010 Beta 2 installiert habe, fand ich endlich Zeit mir dieses SDK mal genauer anzuschauen.

Diese SDK bietet einen Facebook Client Library ähnlich der Facebook PHP Client Library bzw. Facebook JavaScript Library. Es soll den .NET Entwicklern die Möglichkeit geboten werden schnell und leicht Einfluss auf die Zahlreichen Features der Facebook Plattform zu nehmen. Dieses Toolkit wurde im Laufe der Zeit gemeinsam mit der Communit und von Microsoft entwickelt. Dieses Toolkit für Silverlight und WPF stehlt ein asynchrones Interface zur Verfügung.

Der Haupteinstiegspunkt ist das API (Facebook.Rest.Api) Class in der Facebook.dll assembly. Diese Klasse enthällt die Facebook REST API und stellt ein Interface zum Aufruf der verschiedenen Methoden der Facebook API bereit. Es werden außerdem Beispiele und Tools für die Entwicklung von Facebook Applikationen auf den verschiedenen .NET Plattformen (inkl. ASP.NET, Silverlight, WPF und WinForms) zur Verfügung gestellt.

Das Toolkit enthält folgende Kern-Assemblies:

  • Facebook.dll: Das ist die Haupt-Assembly, welche von allen Applikationen verwendet wird. Diese hat die Logik, um die Kommunikation mit der Facebook Applikation zu steuern.
  • Facebook.Silverlight.dll: Das ist die Silverlight Version der Haupt-Assembly, welche für Silverlightapplikationen Verwendet wird.
  • Facebook.Web.dll: Dieses Assembly wird von Canvas Applikationen verwendet.
  • Facebook.Web.mvc.dll: bietet Unterstützung für die Erstellung von Canvas Applikationen unter der Verwendung von ASP.NET MVC.
  • Facebook.Winforms.dll: Dieses Assambly bietet Unterstützung für schreibende Facebook Applikationen unter Verwendung von Winform-Teechnologie. Diese enthälte eine Komponente, welche die API umhüllt und es einfacher macht Winforms zu verwenden. Sie enthält auch einige Usercontrols, um die Facebook-Daten einfacher darzustellen.

Als erstes soll man die SDK downloaden und sich mit den QuickStart Guides  (How to Use the Facebook Developer Toolkit 2.0 & Facebook application development in ASP.NET) vertraut machen.

In weiterer Folge sollte man sich auch mit den detailierten Instruktion des Facebook Developer WIKI anschauen, besonders empfehlenswert:

Weitere nützliche Informationen:

Tutorial: .NET RIA Services – Bing Search APIs

18. Dezember 2009 juergen79 Keine Kommentare

Mit LINQ kann man für die Suche nach Webseiten und Bilder die Bing-Search-API verwenden.

Bing hat eine Search-API, welche ein REST Interface (XML oder JSON) oder ein SOAP Interface bereitstellt. LINQ bietet mehrere natürliche LINQ Syntax, dann braucht man sich keine Sorgen machen über die Protokolldetails, Webrequest, URIs usw.. Unter der LINQ-Funktionalität  baut es auf einer REST/XML API.

Hier ein Beispiel für die Grundsuche von seiten unter der Verwendung von BLinq:

BingContext bing = <span style="color: rgb(0, 0, 255);">new</span> BingContext(appKey);
IQueryable<PageSearchResult> pagesQuery =
    <span style="color: rgb(0, 0, 255);">from</span> p <span style="color: rgb(0, 0, 255);">in</span> bing.Pages
    <span style="color: rgb(0, 0, 255);">where</span> p.Query == <span style="color: rgb(0, 96, 128);">"lacrosse"</span>
    <span style="color: rgb(0, 0, 255);">select</span> p;
<span style="color: rgb(0, 0, 255);">foreach</span> (PageSearchResult page <span style="color: rgb(0, 0, 255);">in</span> pagesQuery) {
    <span style="color: rgb(0, 128, 0);">// Write out page members (title, uri, description, display URL and date)</span>
}

BingContext ist sehr ähnlich dem Linq-to-SQL DataContext. Es hat eine Seiteneigenschaft von IQueryable . Da es sich um LINQ handelt kann man natürlich die Standard LINQ Konstrukte wie Skip und Take verwenden, um durch die Seiten zu blättern.

<span style="color: rgb(0, 128, 0);">// Get the first search result...</span><br />pagesQuery = pagesQuery.Take(1);<br />

BLinq stellt aber auch laufend Interface bereit um eine oder mehrere zusätzliche Optionen zu konfigurieren wenn eine Suchanfrage gestartet wurde. Zum Beispiel ich suche nach einem Restaurant in Graz:

IQueryable<PageSearchResult> pagesQuery =<br />    <span style="color: rgb(0, 0, 255);">from</span> p <span style="color: rgb(0, 0, 255);">in</span> bing.Pages.LocalResults(<span style="color: rgb(0, 96, 128);">"Graz"</span>)<br />    <span style="color: rgb(0, 0, 255);">where</span> p.Query == <span style="color: rgb(0, 96, 128);">"restaurant"</span><br />    <span style="color: rgb(0, 0, 255);">select</span> p;<br />

Andere Optionen um Ergebnisse einer Seite abzugrenzen, wenn man z.B. Silverlight relevanten Inhalt einer Seite will:

IQueryable<PageSearchResult> pagesQuery =<br />    <span style="color: rgb(0, 0, 255);">from</span> p <span style="color: rgb(0, 0, 255);">in</span> bing.Pages.ScopeResults(<span style="color: rgb(0, 96, 128);">"ebnerj.at/blog"</span>)<br />    <span style="color: rgb(0, 0, 255);">where</span> p.Query == "silverlight"<br />    <span style="color: rgb(0, 0, 255);">select</span> p;<br />

Das waren einige Beispiele für Seitensuche. BLinq unterstützt auch die Suche nach Bildern. Wenn man Bilder vom Grand Canyon will:

IQueryable<ImageSearchResult> imagesQuery =<br />    <span style="color: rgb(0, 0, 255);">from</span> img <span style="color: rgb(0, 0, 255);">in</span> bing.Images.SafeResults()<br />    <span style="color: rgb(0, 0, 255);">where</span> img.Query == <span style="color: rgb(0, 96, 128);">"Grand Canyon"</span><br />    <span style="color: rgb(0, 0, 255);">select</span> img;<br /><span style="color: rgb(0, 0, 255);">var</span> imagesPage1 = imagesQuery.Take(10).ToList();<br /><span style="color: rgb(0, 0, 255);">var</span> imagesPage2 = imagesQuery.Skip(10).Take(10).ToList();<br /><span style="color: rgb(0, 0, 255);">foreach</span> (ImageSearchResult img <span style="color: rgb(0, 0, 255);">in</span> imagesPage1.Union(imagesPage2)) {<br />    <span style="color: rgb(0, 128, 0);">// Write out image title, image URI, image size, containing page URI,</span><br />    <span style="color: rgb(0, 128, 0);">// thumbnail URI, and thumbnail size.</span><br />}<br />

Zusammenfassend gesagt, BLinq arbeitet wie jeder LINQ-Provider für den Satz der Ressourcen welche der darunterliegenden API. Der Code sieht nicht nur gleich konsistent wie anderer LINQ Code sondern funktioniert auch mit Standardtools für LINQ, wie z.B. LINQPad Tool.

Um einen Überblick über die LINQ-Expressions zu bekommen kann empfiehlt es sich die Bücher “LINQ Programming” von Joe Mayo oder “LINQ in Action” von F. Marguerie, S. Eichert und J. Wooley von Manning Pubn zu werfen.

Das ist erst der Start. Es gibt noch viele Möglichkeiten, wie Searching nach Rechtschreibung, relevante Suche, Anzeigen, usw.der Bing API. Ein Beispiel-Framework für LINQ Funktionalitäten gibt es bei Nikhilk.net. Wie auch bei Flickr benötigt man für die Verwendung des Service einen registrierten API key.

Einfügen der REST API Deinition als strong types

Tim Heuer hat eine Erweiterung für Visual Studio in seinem Blog vorgestellt, welches einem die Verwendung vo REST API erleichtern soll – WCF REST Starter Kit Preview 2.

Einen kurzen Überblick erhält man in seinem Eintrag “Paste your REST API definition as strong types” , am Beispiel der gut dokumentierten Flickr API.

Silverlight Apps mit Facebook OpenStreams API

Im Silverlight Blog wurde gezeigt, welche Möglichkeiten die OpenStream API von Facebook bietet.

Microsoft und Facebook arbeiten seit 2007 zusammen mittels dem Facebook Developer Toolkit. Beispiele und Ressourcen gibt es auch auf der Expression Seite von Microssoft.