MIX07 - WCF adding System.UriTemplate, [WebGet], and [WebInvoke]

System.UriTemplate

Build and parse URI's

System.UriTemplate (Orcas) - runtime support for URI template syntax
UriTemplate.Bind - A safe, smart string.format for URI construction
UriTemplate.Match - Extracts URI to dictionary
UriTemplateTable - One or more template, best match wins

HTTP GET - bound semantics, expectation of idempotency, generally "safe" Chaos - HTTP POST, PUT, DELETE, others


WebHttpClient client = new WebHttpClient()
{
  UriTemplate = "http://localhost/mix/data/symbols{0}";
}
MixData = client.Get(StockSymbol).GetBody();
return data;

WCF adds [WebGet] and [WebInvoke]


[OperationContract]
[WebGet( UriTemplate = "data/symbols/{symbol}")]
public MixData GetCurrentData(int index)
{
  MixLogic logic = new MixLogic();
  return logic.GetData();
}

[OperationContract]
[WebGet( UriTemplate = "data/results/{index}")]
public MixData GetCachedResults(string index)
{
int i = int.Parse(index);
if(i >= IMDB.Conptents.Length)
{
  // Not found logic;
}
[OperationContract]
[WebGet ( UriTemplate = "data/feeds/{format}" )]
public object GetFeeds(string format)
{
  int i = 0;
  syndicationFeed feed = new SyndicationFeed (Mix Data", "some results",
  new Uri ("http://microsoft.com"),
  from data in IMDB.contents
  select new SyndicationItem (data.StockSymbol, data.Price, etc.)...
}

There was cooler code which consumes an RSS feed as well

XML, JSON, or opaque binary formats (V1 already included SOAP and POX

SyndicationFeed / SyndicationItem provide rich programming model for dealing with RSS / ATOM

In Orcas:

  • UriTemplate
  • [WebGet]
  • SyndicationFeed
  • LINQ fro XML
  • JSON formatter

WebHttpClient is speculative, not in Orcas

1 Comment

  • Haytham it has to be a string in your GetData(string value)

    for it to work

    One important limitation with UriTemplate to keep in mind that parameter mapping ( inside of {} ) only works with string parameters, so even simple type mapping like int, bool, or dates don’t work with them.

Comments have been disabled for this content.