惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google Online Security Blog
Google Online Security Blog
博客园_首页
Martin Fowler
Martin Fowler
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
阮一峰的网络日志
阮一峰的网络日志
WordPress大学
WordPress大学
人人都是产品经理
人人都是产品经理
宝玉的分享
宝玉的分享
博客园 - 叶小钗
Jina AI
Jina AI
罗磊的独立博客
Simon Willison's Weblog
Simon Willison's Weblog
Scott Helme
Scott Helme
D
DataBreaches.Net
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Project Zero
Project Zero
Know Your Adversary
Know Your Adversary
博客园 - Franky
AWS News Blog
AWS News Blog
S
Schneier on Security
K
Kaspersky official blog
I
Intezer
P
Proofpoint News Feed
云风的 BLOG
云风的 BLOG
L
LINUX DO - 热门话题
GbyAI
GbyAI
月光博客
月光博客
C
Cisco Blogs
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
G
GRAHAM CLULEY
P
Privacy International News Feed
P
Privacy & Cybersecurity Law Blog
Hugging Face - Blog
Hugging Face - Blog
P
Proofpoint News Feed
T
Tor Project blog
F
Fortinet All Blogs
博客园 - 三生石上(FineUI控件)
T
Threat Research - Cisco Blogs
IT之家
IT之家
H
Hackread – Cybersecurity News, Data Breaches, AI and More
H
Help Net Security
S
Security Affairs
V
Visual Studio Blog
C
CERT Recently Published Vulnerability Notes
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google DeepMind News
Google DeepMind News
S
SegmentFault 最新的问题
MongoDB | Blog
MongoDB | Blog
T
Troy Hunt's Blog

博客园 - 同洲共际海让路

国内首本全面深入介绍.NET互操作技术(P/Invoke『或PInvoke,平台调用』,C++ Interop『C++/CLI』,COM Interop)的参考书籍 博客园开发者征途系列图书——《你必须知道的.NET》 一站式查询八字、五行、星座、五格——美名腾人名解析 一句话让别人立马记住你的名字——美名腾智能人名解析 何谓智能起名? 美名腾智能起名系统有了新界面 千名万名,到美名腾来试金。【写在美名腾起名系统Beta版成功发布】 [原]Bug Report,已提交给微软。平台调用调试时,无法对非托管函数进行单步的错误 [原]动态平台调用 part 3 (Final) [原]动态平台调用 part 2 [原]动态平台调用 part 1 JavaScript Debugging and Intellisense, JavaScript obfuscator etc from VS 2005 to VS 2008 (VS2005到2008的变迁,JavaScript调试,智能感知/智能感应功能,JavaScript的混淆、压缩等功能的海变桑田) 终于见到了传说中的Scott Guthrie 如何为Team Foundation Server的Daily Build添加自定义操作 客户端安装Team Explorer 2005后,使用时出现package load failure错误的修正 WCF Part 7 : Bindings WCF Part 6 : Address 推荐一个好玩的好东西,ILMerge,微软出的,合并多个.NET组件成一个 [译]WCF Part 4 : Make your service visible through metadata
WCF Part 5 : Consuming the service
同洲共际海让路 · 2007-11-29 · via 博客园 - 同洲共际海让路

     上篇文章中,我们讲述了如何创建客户端和配置文件。使用asmx,就必须有一个代理类。要使用这些配置文件以及其他文件,就需要一个新的控制台应用程序,并将这些文件添加进去。注意不要忘了添加System.ServiceModel引用。一旦做完了上面的步骤,就能顺利编译了。
     首先,创建一个HelloClient的实例,这样,就能读取客户端上的应用程序配置信息了。但是,连接只会在第一次调用的时候进行。创建完实例时候,就能调用HelloWorld的操作了。注意,HelloComputer是没有暴露出来的,因为我们并没有在接口中给他加上OperationContractAttribute属性。除了产生的这些配置文件,不需要再写任何代码,我们就能进行调用了。

    1 static void Main(string[] args)
    2 {
    3   Console.WriteLine("Press any key when the service is available...");
    4   Console.ReadKey();
    5 
    6   HelloClient client = new HelloClient();
    7 
    8   string msg = client.HelloWorld();
    9 
   10   Console.WriteLine("The message is : {0}", msg);
   11   Console.WriteLine("Press any key to quit...");
   12   Console.ReadKey();
   13 }

    第六行创建了一个HelloClient的实例,在第8行我们调用了这个服务。第10行在控制台窗口中显示出调用服务得到的信息。注意第3行和第4行,在运行两个组件(注:一个服务,一个客户端)时,需要一种手段,在等候直到用户交互后,才允许服务开始和运行。有两种方法运行这个组件,第一种方法就是在Project上点击右键,选择Debug, 再选择Start new instance;第二种方法是右键点击解决方案,选择Set StartUp Projects...,然后选择单选选项Multiple startup projects。然后让两个项目一并运行。这样的话,只要按了F5键,两个项目就会同时运行了。

客户端程序配置
   
查看一下客户端程序(就是调用服务的这个控制台应用程序啦)的配置,就能看到许多关于basicHttpBinding的信息,但是此时这个并非最重要的。其他诸如timeouts, message encoding等等之类的配置,也可以暂且抛之脑后,采用缺省值即可。最重要的就是“client”节点下的信息,如下所示。

<client>
    <endpoint address="http://localhost:8080/HelloService/" binding="basicHttpBinding"
        bindingConfiguration="BasicHttpBinding_IHello" contract="IHello"
        name="BasicHttpBinding_IHello" />
</client>

    WCF ABC又来了,哈哈,这些信息都是由Service Utility (svcutil.exe)自动导入的,现在他们都在客户端类里了。这样我们就设置好了一个服务和一个客户端。注意,二者目前都运行在同一台机器上,但是我们可以把二者中的任意一个放置到世界上任何一台电脑上,也能实现自由连通,但是可能会因为网络等问题感觉有些延迟。

    你可以下载完整的源代码, 自己试着去探究一下。在继续探索Windows Communication Foundation的世界并搞定WCF ABC之前,我们还是回头看看之前的预热一下吧。:)

    注:要查看原始文章,请看这里的全部索引