<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>ccBoy's WebLog : WCF(Indigo)</title><link>http://blogs.msdn.com/ccboy/archive/tags/WCF_2800_Indigo_2900_/default.aspx</link><description>Tags: WCF(Indigo)</description><dc:language>zh-CHS</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>WCF Web Programming Model Documentation</title><link>http://blogs.msdn.com/ccboy/archive/2008/01/22/wcf-web-programming-model-documentation.aspx</link><pubDate>Tue, 22 Jan 2008 07:41:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7205083</guid><dc:creator>ccBoy</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ccboy/comments/7205083.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ccboy/commentrss.aspx?PostID=7205083</wfw:commentRss><description>&lt;p&gt;&lt;strong&gt;Conceptual Overviews:&lt;/strong&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://hyperthink.net/blog/ct.ashx?id=f366e9bf-b498-43c9-a00e-76c360630534&amp;amp;url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fbb412169.aspx"&gt;Web Programming Model&lt;/a&gt; &lt;li&gt;&lt;a href="http://hyperthink.net/blog/ct.ashx?id=f366e9bf-b498-43c9-a00e-76c360630534&amp;amp;url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fbb412202.aspx"&gt;AJAX and JSON&lt;/a&gt; &lt;li&gt;&lt;a href="http://hyperthink.net/blog/ct.ashx?id=f366e9bf-b498-43c9-a00e-76c360630534&amp;amp;url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fbb412202.aspx"&gt;WCF Syndication&lt;/a&gt; (Atom and RSS)  &lt;li&gt;&lt;a href="http://hyperthink.net/blog/ct.ashx?id=f366e9bf-b498-43c9-a00e-76c360630534&amp;amp;url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fbb412175.aspx"&gt;Partial Trust&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Class Library Reference (not exhaustive):&lt;/strong&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://hyperthink.net/blog/ct.ashx?id=f366e9bf-b498-43c9-a00e-76c360630534&amp;amp;url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fbb514905.aspx"&gt;System.ServiceModel.Web Namespace&lt;/a&gt; &lt;li&gt;&lt;a href="http://hyperthink.net/blog/ct.ashx?id=f366e9bf-b498-43c9-a00e-76c360630534&amp;amp;url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fbb357210.aspx"&gt;System.ServiceModel.Syndication Namespace&lt;/a&gt; &lt;li&gt;&lt;a href="http://hyperthink.net/blog/ct.ashx?id=f366e9bf-b498-43c9-a00e-76c360630534&amp;amp;url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fbb907644.aspx"&gt;System.Runtime.Serialization.Json Namespace&lt;/a&gt; &lt;li&gt;&lt;a href="http://hyperthink.net/blog/ct.ashx?id=f366e9bf-b498-43c9-a00e-76c360630534&amp;amp;url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fbb348994.aspx"&gt;SyndicationFeed Class&lt;/a&gt; &lt;li&gt;&lt;a href="http://hyperthink.net/blog/ct.ashx?id=f366e9bf-b498-43c9-a00e-76c360630534&amp;amp;url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fbb357133.aspx"&gt;SyndicationItem Class&lt;/a&gt; &lt;li&gt;&lt;a href="http://hyperthink.net/blog/ct.ashx?id=f366e9bf-b498-43c9-a00e-76c360630534&amp;amp;url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fbb515847.aspx"&gt;WebOperationContext Class&lt;/a&gt; &lt;li&gt;&lt;a href="http://hyperthink.net/blog/ct.ashx?id=f366e9bf-b498-43c9-a00e-76c360630534&amp;amp;url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fbb515827.aspx"&gt;WebServiceHost Class&lt;/a&gt; &lt;li&gt;&lt;a href="http://hyperthink.net/blog/ct.ashx?id=f366e9bf-b498-43c9-a00e-76c360630534&amp;amp;url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fbb536021.aspx"&gt;WebGetAttribute Class&lt;/a&gt; &lt;li&gt;&lt;a href="http://hyperthink.net/blog/ct.ashx?id=f366e9bf-b498-43c9-a00e-76c360630534&amp;amp;url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fbb515593.aspx"&gt;WebInvokeAttribute Class&lt;/a&gt; &lt;li&gt;&lt;a href="http://hyperthink.net/blog/ct.ashx?id=f366e9bf-b498-43c9-a00e-76c360630534&amp;amp;url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fbb536047.aspx"&gt;WebHttpBehavior Class&lt;/a&gt; &lt;li&gt;&lt;a href="http://hyperthink.net/blog/ct.ashx?id=f366e9bf-b498-43c9-a00e-76c360630534&amp;amp;url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fbb348930.aspx"&gt;WebScriptEnablingBehavior Class&lt;/a&gt; &lt;li&gt;&lt;a href="http://hyperthink.net/blog/ct.ashx?id=f366e9bf-b498-43c9-a00e-76c360630534&amp;amp;url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fbb908432.aspx"&gt;DataContractJsonSerializer Class&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Configuration Schema:&lt;/strong&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://hyperthink.net/blog/ct.ashx?id=f366e9bf-b498-43c9-a00e-76c360630534&amp;amp;url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fbb675191.aspx"&gt;enableWebScript&lt;/a&gt; &lt;li&gt;&lt;a href="http://hyperthink.net/blog/ct.ashx?id=f366e9bf-b498-43c9-a00e-76c360630534&amp;amp;url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fbb924425.aspx"&gt;webHttp&lt;/a&gt; &lt;li&gt;&lt;a href="http://hyperthink.net/blog/ct.ashx?id=f366e9bf-b498-43c9-a00e-76c360630534&amp;amp;url=http%3a%2f%2fmsdn2.microsoft.com%2fen-us%2flibrary%2fbb412176.aspx"&gt;webHttpBinding&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Source: &lt;a title="WCF Web Programming Model Documentation" href="http://hyperthink.net/blog/2008/01/18/WCF+Web+Programming+Model+Documentation.aspx"&gt;WCF Web Programming Model Documentation&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7205083" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ccboy/archive/tags/WCF_2800_Indigo_2900_/default.aspx">WCF(Indigo)</category></item><item><title>ASMX Proxy 比WCF Proxy要简单？</title><link>http://blogs.msdn.com/ccboy/archive/2007/10/29/asmx-proxy-wcf-proxy.aspx</link><pubDate>Mon, 29 Oct 2007 09:06:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5757086</guid><dc:creator>ccBoy</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ccboy/comments/5757086.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ccboy/commentrss.aspx?PostID=5757086</wfw:commentRss><description>&lt;p&gt;&lt;br&gt;ASMX Proxy没有ServiceContract和Channel stack的概念，ASMX直接使用SoapHttpClientProtocol，SoapHttpClientProtocol则完全是客户端的技术，其是对System.Net的HttpWebRequest的封装。而WCF proxy内部则是一个.NET Remoting的级别的地传输接口，最主要是是因为ASMX是一个“horizontal”的编程模型，更多时支持和实现Web Service的协议，而WCF是一个“Vertical” 的编程模型而，则要考虑和支持用户在客户端可以像在服务器端一样的操作和编程模型。&lt;br&gt;&lt;/p&gt; &lt;p&gt;所以的ASMX Proxy的速度要快，在.NET 3.5中，对WCF优化后，BasicHttpBinding,类似和接近ASMX Proxy的性能，并且Wenlong也说，.NET 3.0 SP也就包含在.NET 3.5中了。 &lt;/p&gt; &lt;p&gt;· Reuse the same proxy &lt;p&gt;· Use proxy that enables caching &lt;p&gt;· Disabling caching &lt;p&gt;· Proxy/Channel pooling &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;原文详见：&lt;br&gt;&lt;strong&gt;Performance Improvement for WCF Client Proxy Creation in .NET 3.5 and Best Practices&lt;/strong&gt; &lt;br&gt;http://blogs.msdn.com/wenlong/archive/2007/10/27/performance-improvement-of-wcf-client-proxy-creation-and-best-practices.aspx&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5757086" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ccboy/archive/tags/WCF_2800_Indigo_2900_/default.aspx">WCF(Indigo)</category></item><item><title>WCF Messaging Fundamentals 的学习笔记</title><link>http://blogs.msdn.com/ccboy/archive/2007/03/25/wcf-messaging-fundamentals.aspx</link><pubDate>Sun, 25 Mar 2007 12:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1946168</guid><dc:creator>ccBoy</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/ccboy/comments/1946168.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ccboy/commentrss.aspx?PostID=1946168</wfw:commentRss><description>&lt;DIV&gt;读了&lt;A class="" title="aaron Skonnard" href="http://www.pluralsight.com/aaron" mce_href="http://www.pluralsight.com/aaron"&gt;Aaron Skonnard&lt;/A&gt; MSDN杂志的文章，做一些记录，文笔很不错，将WCF的许多概念讲得简单明了，看完了，让人感觉意犹未尽的感觉&lt;/DIV&gt;
&lt;DIV&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;1. 建立一个MTOM的消息&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;// write to MTOM representation&lt;BR&gt;FileStream custMtomStream = new FileStream(&lt;BR&gt;"customer.mtom", FileMode.Create);&lt;BR&gt;using (XmlWriter xw = &lt;STRONG&gt;XmlDictionaryWriter.CreateMtomWriter&lt;/STRONG&gt;(&lt;BR&gt;custMtomStream, Encoding.UTF8, 1024, "text/xml"))&lt;BR&gt;{&lt;BR&gt;doc.WriteTo(xw);&lt;BR&gt;}&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;// read from MTOM representation&lt;BR&gt;XmlDocument doc = new XmlDocument();&lt;BR&gt;FileStream custMtomStream = new FileStream(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "customer.mtom", FileMode.Open);&lt;BR&gt;using (XmlReader xr = &lt;STRONG&gt;XmlDictionaryReader.CreateMtomReader&lt;/STRONG&gt;(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; custMtomStream, Encoding.UTF8, XmlDictionaryReaderQuotas.Max))&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; doc.Load(xr);&lt;BR&gt;}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;// write to text (XML 1.0) representation&lt;BR&gt;doc.Save("customer.xml");&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;2. Message(System.ServiceModel.Channels.Message) 类在本质上模拟消息正文以及消息标头和属性的集合。可用方法主要用于创建消息、读写消息正文以及操作标头和属性的集合。&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;3. WS-Addressing 是一种规范，用于扩展 SOAP 以提供与传输无关的机制来寻址/路由 SOAP 消息&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;4. 通过调用各种静态 CreateMessage重载之一创建 Message 对象，并使用 IDisposable 或通过显式调用 Close 处理 Message 对象。可以从头开始创建新的 Message 对象，在发送消息时通常这样做。也可以从消息流创建新的 Message 对象，在接收消息时通常这样做。&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;5. 如果从头开始创建消息，则必须指定操作、消息版本以及要在消息中使用的正文。操作唯一地标识消息的目的或语义。WCF 服务依赖于将传入消息分派给相应方法的操作。消息版本标识传输时使用的 SOAP 和 WS-Addressing 版本（如果有）。指定消息版本时可以选择各种不同的选项&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;6. 在希望写入消息时，可以通过分别调用 WriteMessage 或 WriteBody 方法写入整个消息或仅写入正文。这两种方法都具有允许提供 XmlDictionaryWriter 或 XmlWriter 对象的重载&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;7. 通过 MessageVersion 类，可以指定要使用的 SOAP 和 WS-Addressing 版本。通过调用 CreateVersion 并提供 EnvelopeVersion 对象（用于标识 SOAP 版本）和 AddressingVersion 对象（用于标识 WS-Addressing 版本），可以创建 MessageVersion 对象&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;8. EnvelopeVersion.None 指定在传输过程中您不希望使用 SOAP，它还要求您使用 AddressingVersion.None。这是希望在传统的 XML 消息传递方案中利用 Windows Communication Foundation 时的常见设置。Soap11 表示 SOAP 1.1 规范，该规范目前得到广泛使用，而 Soap12 表示 SOAP 1.2 W3C 推荐标准（有关指向这两种规范的链接，请参阅 &lt;A href="http://www.w3.org/TR/soap"&gt;www.w3.org/TR/soap&lt;/A&gt;）。&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;9. WSAddressingAugust2004 表示 2004 年 8 月开始提交的 WS-Addressing W3C 提案（请参阅 &lt;A href="http://www.w3.org/Submission/ws-addressing"&gt;www.w3.org/Submission/ws-addressing&lt;/A&gt;），目前得到广泛支持。而 WSAddressing10 表示最终的 WS-Addressing 1.0 W3C 推荐标准（请参阅 &lt;A href="http://www.w3.org/2002/ws/addr"&gt;www.w3.org/2002/ws/addr&lt;/A&gt;）。&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;10. Message 对象在开始时处于 Created 状态，该状态是处理正文的唯一有效状态。处理正文有以下几种不同的方式：可以对其进行读取、写入或复制。调用 GetReaderAtBodyContents 或 GetBody&amp;lt;T&amp;gt; 可将状态更改为 Read。调用 WriteMessage 或 WriteBody 可将状态更改为 Written。调用 CreateBufferedCopy 可将状态更改为 Copied&lt;BR&gt;在 Message 对象不再处于 Created 状态后，需要访问正文的任何方法都将引发异常。例如，首次调用 GetBody&amp;lt;T&amp;gt; 后再次调用它将导致异常。在需要多次处理正文的情况下，可以创建缓冲副本（通过调用 CreateBufferedCopy）或者将正文加载到 XmlDocument 中或将它反序列化为 .NET 对象以便在内存中使用。&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;11. 与标头（它始终在消息中传输）不同，消息属性通常仅在本地处理期间使用（它们可能不对通信时发生的情况产生影响，尽管有时它们会产生影响）。例如，使用 HTTP 时，Windows Communication Foundation 在传入 Message 对象的 Properties 集合中存储 HTTP 请求详细信息。详细信息存储在 HttpRequestMessageProperty 类型的对象（可以使用属性名的 httpRequest 访问它）中。还可以通过用 HttpReponseMessageProperty 类型的对象填充名为 httpResponse 的属性，影响 HTTP 响应详细信息。&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;12. Windows Communication Foundation 通道（尤其是实现各种 WS-* 规范的内置协议通道）层中的组件频繁使用标头和属性是很常见的。&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;13. 将消息映射到方法-必须首先定义将传入消息映射到方法的服务约定，才能开始使用WCF发送或接收消息。通过使操作值与方法签名关联，可以做到这一点&lt;BR&gt;[OperationContract(Action="*")]&lt;BR&gt;void ProcessMessage(Message msg);&lt;BR&gt;此定义使 ProcessMessage 与所有传入消息关联，而不管其操作值如何（由于使用了 Action= "*" 子句）&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;还可以通过将 Action 属性设置为特定值（如 urn:add-customer）使方法与特定操作值关联&lt;BR&gt;[OperationContract(Action="urn:add-customer")]&lt;BR&gt;void AddCustomer(Message msg);&lt;BR&gt;在WCF收到传入消息时，它将查看操作以确定要调度的方法，然后它再执行任何必要的序列化。对请求/响应类型使用消息时，WCF不执行任何序列化，而是由您决定如何处理消息。但是，使用键入的签名时，WCF使用序列化方法在后台自动执行读写消息正文的过程&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;[OperationContract(Action="urn:add-customer")]&lt;BR&gt;void AddCustomer(Customer cust);&lt;BR&gt;在这种情况下，WCF负责在调用 AddCustomer之前将传入消息的正文反序列化为 Customer 对象。&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;14. 为了设置WCF 服务&lt;BR&gt;1.必须通知它要使用的传输和地址。&lt;BR&gt;2.必须指定所需的 XML 表示形式和消息版本。&lt;BR&gt;3.必须配置采用哪些 WS-* 协议。&lt;BR&gt;4.必须提供传入消息和服务方法之间的映射&lt;BR&gt;在WCF中是使用Endpoints&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;15. 端点(Endpoint)配置仅仅是地址、绑定和约定的组合(an address, binding, and contra)。约定(contract)定义消息和方法之间的映射。绑定(binding)指定剩余的消息传递详细信息。它指定在传递期间要使用的传输、XML 表示形式和消息版本。它还确定生成通道堆栈时应该包括的 WS-* 协议。&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;绑定还指定消息编码器(message encoder)；它实际上控制 XML 表示形式和消息版本详细信息。在运行时，消息编码器是传输通道从数据流读取和向其写入消息所用的组件。WCF提供了三个内置的消息编码器实现：TextMessageEncoder、BinaryMessageEncoder 和 MtomMessageEncoder&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;原文：&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/msdnmag/issues/07/04/ServiceStation/default.aspx?loc=en"&gt;http://msdn.microsoft.com/msdnmag/issues/07/04/ServiceStation/default.aspx?loc=en&lt;/A&gt;&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/msdnmag/issues/07/04/ServiceStation/default.aspx?loc=zh"&gt;http://msdn.microsoft.com/msdnmag/issues/07/04/ServiceStation/default.aspx?loc=zh&lt;/A&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1946168" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ccboy/archive/tags/WCF_2800_Indigo_2900_/default.aspx">WCF(Indigo)</category></item><item><title>Indigo Beta1 -&gt; WCF Beta2 </title><link>http://blogs.msdn.com/ccboy/archive/2005/10/18/481841.aspx</link><pubDate>Mon, 17 Oct 2005 18:14:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:481841</guid><dc:creator>ccBoy</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/ccboy/comments/481841.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ccboy/commentrss.aspx?PostID=481841</wfw:commentRss><description>&lt;P&gt;Omri Gazitt's 的Weblog 指出了Indigo Beta1 -&amp;gt; WCF Beta2 的一些改动和变化，&lt;BR&gt;&lt;A href="http://www.gazitt.com/Blog/PermaLink,guid,1ff8c791-2c1c-4192-9614-3cf79e90867d.aspx"&gt;http://www.gazitt.com/Blog/PermaLink,guid,1ff8c791-2c1c-4192-9614-3cf79e90867d.aspx&lt;/A&gt;&lt;BR&gt;摘要如下: &lt;BR&gt;对象模型/API方面&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;ServiceHost&amp;lt;T&amp;gt; -&amp;gt; ServiceHost &lt;BR&gt;ServiceSite -&amp;gt; InstanceContext &lt;BR&gt;InstanceModeAttribute -&amp;gt; InstanceContextModeAttribute &lt;BR&gt;InstanceModeAttribute.Singleton -&amp;gt; InstanceContextModeAttribute.Single&lt;BR&gt;typeof(ChannelFactory.Description.Address) -&amp;gt; EndpointAddress (from Uri) &lt;BR&gt;IProxyChannel -&amp;gt; IClientChannel &lt;BR&gt;ProxyBase -&amp;gt; ClientBase&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;配置方面&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;@bindingSectionName on &amp;lt;endpoint&amp;gt; -&amp;gt; @binding&lt;BR&gt;@contractType on &amp;lt;endpoint&amp;gt; -&amp;gt; @contract&lt;BR&gt;&amp;lt;netProfileTcpBinding&amp;gt; -&amp;gt; &amp;lt;netTcpBinding&amp;gt;&lt;BR&gt;&amp;lt;wsProfileBinding&amp;gt; -&amp;gt; &amp;lt;wsHttpBinding&amp;gt;&lt;BR&gt;&amp;lt;basicProfileBinding&amp;gt; -&amp;gt; &amp;lt;basicHttpBinding&amp;gt;&lt;BR&gt;@serviceType on &amp;lt;service&amp;gt; -&amp;gt; @type&lt;BR&gt;Also, all the customPeerResolver stuff goes away, becomes netPeerTcpBinding.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;试了一下David Pallmann的&lt;A href="http://www.microsoft.com/mspress/companion/0-7356-2151-9"&gt;Programming "Indigo"&lt;/A&gt;第二章最简单的Hello World 1例子，在WCF Beta2 上果然不能编译，按照Omri Gazitt的Blog进行修改&lt;BR&gt;服务器端: &lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;ServiceHost&amp;lt;HelloService&amp;gt; serviceHost = new ServiceHost&amp;lt;HelloService&amp;gt;()-&amp;gt;&lt;BR&gt;ServiceHost serviceHost = new ServiceHost(typeof(HelloService), uri)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;AddEndpoint-&amp;gt; AddServiceEndpoint&lt;BR&gt;WSProfileBinding -&amp;gt; WSHttpBinding&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;客户端的变化&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;IHello proxy = ChannelFactory.CreateChannel&amp;lt;IHello&amp;gt;(uri, binding); -&amp;gt; &lt;BR&gt;EndpointAddress endpoint = new EndpointAddress(uri);&lt;BR&gt;ChannelFactory&amp;lt;IHello&amp;gt; factory = new ChannelFactory&amp;lt;IHello&amp;gt;(binding, endpoint);&lt;BR&gt;IHello proxy = factory.CreateChannel();&lt;/FONT&gt; &lt;/P&gt;
&lt;P&gt;完整的代码&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff&gt;services sides&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;using System;&lt;BR&gt;using System.ServiceModel;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;namespace ProgrammingIndigo&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Contract definition.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ServiceContract]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public interface IHello&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double Add(double n1, double n2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double Subtract(double n1, double n2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double Multiply(double n1, double n2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double Divide(double n1, double n2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Service implementation.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class HelloService : IHello&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public double Add(double n1, double n2)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Add called");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return n1 + n2;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public double Subtract(double n1, double n2)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Subtract called");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return n1 - n2;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public double Multiply(double n1, double n2)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Multiply called");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return n1 * n2;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public double Divide(double n1, double n2)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Divide called");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return n1 / n2;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Host the service.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void Main()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create a ServiceHost.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Uri uri = new Uri("&lt;/FONT&gt;&lt;A href="http://localhost:8000/hello1/"&gt;&lt;FONT face="Courier New" size=2&gt;http://localhost:8000/hello1/&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New" size=2&gt;");&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (ServiceHost serviceHost = new ServiceHost(typeof(HelloService), uri))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Add an endpoint.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WSHttpBinding binding = new WSHttpBinding(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; serviceHost.AddServiceEndpoint(typeof(IHello), binding, uri); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Open the service.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; serviceHost.Open();&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The service can now be accessed. Hold it open until user presses ENTER.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("The service is ready");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Press ENTER to shut down service.");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.ReadLine();&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Close the service.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; serviceHost.Close();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/FONT&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#0000ff&gt;client sides&lt;/FONT&gt;&lt;BR&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;using System;&lt;BR&gt;using System.ServiceModel;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;namespace ProgrammingIndigo&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Contract definition.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ServiceContract]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public interface IHello&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double Add(double n1, double n2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double Subtract(double n1, double n2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double Multiply(double n1, double n2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [OperationContract]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double Divide(double n1, double n2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Client implementation code.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class Client&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void Main()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create a proxy.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WSHttpBinding binding = new WSHttpBinding();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Uri uri = new Uri("&lt;/FONT&gt;&lt;A href="http://localhost:8000/hello1/"&gt;&lt;FONT face="Courier New" size=2&gt;http://localhost:8000/hello1/&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face="Courier New" size=2&gt;");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EndpointAddress endpoint = new EndpointAddress(uri);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ChannelFactory&amp;lt;IHello&amp;gt; factory = new ChannelFactory&amp;lt;IHello&amp;gt;(binding, endpoint);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IHello proxy = factory.CreateChannel(); &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //IHello proxy = ChannelFactory.CreateChannel&amp;lt;IHello&amp;gt;(uri, binding);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Call the Add service operation.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double value1 = 100.00D;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double value2 = 15.99D;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Calling Add({0},{1})", value1, value2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double result = proxy.Add(value1, value2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("&amp;nbsp; Result: {0}", result);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Call the Subtract service operation.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value1 = 145.00D;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value2 = 76.54D;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Calling Subtract({0},{1})", value1, value2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = proxy.Subtract(value1, value2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("&amp;nbsp; Result: {0}", result);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Call the Multiply service operation.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value1 = 9.00D;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value2 = 81.25D;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Calling Multiply({0},{1})", value1, value2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = proxy.Multiply(value1, value2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("&amp;nbsp; Result: {0}", result);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Call the Divide service operation.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value1 = 22.00D;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value2 = 7.00D;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Calling Divide({0},{1})", value1, value2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = proxy.Divide(value1, value2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("&amp;nbsp; Result: {0}", result);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; finally&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((IChannel)proxy).Close();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((IChannel)proxy).Dispose();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Press ENTER to shut down client");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.ReadLine();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=481841" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ccboy/archive/tags/WCF_2800_Indigo_2900_/default.aspx">WCF(Indigo)</category></item><item><title>Indigo - A First Look</title><link>http://blogs.msdn.com/ccboy/archive/2005/02/10/370434.aspx</link><pubDate>Thu, 10 Feb 2005 17:27:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:370434</guid><dc:creator>ccBoy</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/ccboy/comments/370434.aspx</comments><wfw:commentRss>http://blogs.msdn.com/ccboy/commentrss.aspx?PostID=370434</wfw:commentRss><description>&lt;DIV&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;Managing the Software Lifecycle&lt;/STRONG&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;A href="http://www.ftponline.com/reports/vslivesf/2005/sudan/"&gt;&lt;FONT size=2&gt;http://www.ftponline.com/reports/vslivesf/2005/sudan/&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;&lt;FONT size=2&gt;Ajay Sudan&lt;BR&gt;Product Manager for Visual Studio Team System Developer Division at Microsoft &lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;Introducing Indigo: An Early Look&lt;/STRONG&gt;&lt;BR&gt;David Chappell &lt;BR&gt;Chappell &amp;amp; Associates&lt;BR&gt;&lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/longhorn/default.aspx?pull=/library/en-us/dnlong/html/introindigov1-0.asp"&gt;&lt;FONT size=2&gt;http://msdn.microsoft.com/longhorn/default.aspx?pull=/library/en-us/dnlong/html/introindigov1-0.asp&lt;/FONT&gt;&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;Indigo "Hello World"&lt;/STRONG&gt; &lt;BR&gt;Clemens Vasters&lt;BR&gt;&lt;/FONT&gt;&lt;A href="http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=d678ab54-9d39-4fc9-82c0-4e03382d457f"&gt;&lt;FONT size=2&gt;http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=d678ab54-9d39-4fc9-82c0-4e03382d457f&lt;/FONT&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=370434" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/ccboy/archive/tags/WCF_2800_Indigo_2900_/default.aspx">WCF(Indigo)</category></item></channel></rss>