开发者

System.Reflection.Emit to Implement a WebChannelFactory for Silverlight 4?

This question follows upon someone else's question because the asker never accepted or said the solution to his problem, if he found one.

What's the most portable way to make a Si开发者_开发百科lverlight & Regular .NET REST client

If you're familiar with WebChannelFactory from .NET, it provides a clean way to create a client to access WCF Web Http (REST) services. There is no such class in Silverlight 4, so it might be worth creating a class that acts like it.

How would you get started in creating such as class, that creates a client that implements your service's contract (TChannel)? I don't know how Microsoft did this, but it looks like they somehow create a new Type at runtime to implement the interface. Would you approach doing this in Silverilght? Maybe by looking at System.Reflection.Emit and TypeBuilder.AddInterfaceImplementation?

A more specific-to-System.Reflection.Emit question I have is, what's the simplest way to use MethodBuilder to create a method for your TypeBuilder, if you want to use existing compiled code? It looks like you could use MethodBuilder.CreateMethodBody, however, in Silverlight 4 this does not exist.


First of all WebChannelFactory is not a clean way to build REST client - that is completely RESTless approach because it requires you to share all contracts between service and client. WebChannelFactory exists to provide compatibility with standard WCF service clients and somehow (wrongly) simplify calling REST services written in .NET. That is also the answer how MS did it - there is no runtime creation of the type. Types are defined at design time.


That's a nice article. I decided to create a class which simplifies calling REST WCF services and more closely meets my needs. Maybe others will find it useful.

WebHttpClient

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜