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

推荐订阅源

博客园 - Franky
有赞技术团队
有赞技术团队
宝玉的分享
宝玉的分享
雷峰网
雷峰网
Hugging Face - Blog
Hugging Face - Blog
V
V2EX
大猫的无限游戏
大猫的无限游戏
博客园 - 司徒正美
D
Docker
T
The Blog of Author Tim Ferriss
罗磊的独立博客
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
Blog — PlanetScale
Blog — PlanetScale
月光博客
月光博客
J
Java Code Geeks
Jina AI
Jina AI
博客园 - 【当耐特】
C
Check Point Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
腾讯CDC
Last Week in AI
Last Week in AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio 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 5 : Consuming the service
[译]WCF Part 4 : Make your service visible through metadata
同洲共际海让路 · 2007-11-29 · via 博客园 - 同洲共际海让路

    上篇文章中讲述了如何创建一个服务,并且如何通过设置app.config中的某些信息来host这个服务。这一章我们接着这个例子来说明如何使用metadata来暴露这个服务。方法很简单,只要加上一个暴露他的端点(endpoint)即可,这次又是老话重提,ABC。这个endpoint被称为MEX endpoint, 是Metadata EXchange两个单词的首字母合起来的缩写。实现这个也不用写任何代码,只要对配置文件进行一些配置即可。在app.config上打开“Service Configuration Editor”,打开"Advanced"文件夹,然后选中"Service Behaviors",选择添加一个新的service behavior。将NewBehavior改成HelloServiceBehavior,再点击添加按钮,选择'ServiceMetadata'选项。

 

    下面我们为endpoint配置新的行为(behavior)。再次在数节点中选中创建的这个服务。这部分可能是最容易被遗忘的,但是必须将刚刚配置好的行为绑定到这个服务上。其实非常容易,只需要从服务的BehaviorConfiguration属性的列表中选择即可。
    接下来就该是添加MEX endpoint了,选择服务下面的"Endpoints"文件夹,右键点击,然后选择添加新endpoint。将地址设置为http://localhost:8080/HelloService/MEX/, 选择绑定方式为"mexHttpBinding",在契约(contract)中填写"IMetadataExchange"。保存,退出配置文件编辑器,就能看到如下的配置信息:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 
    <system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <behavior name="HelloServiceBehavior">
                    <serviceMetadata />
                </behavior>
            </serviceBehaviors>
        </behaviors>
        <services>
            <service behaviorConfiguration="HelloServiceBehavior" name="Classa.Wcf.Samples.Hello">
                <endpoint address="http://localhost:8080/HelloService/" binding="basicHttpBinding"
                    bindingConfiguration="" contract="Classa.Wcf.Samples.IHello" />
                <endpoint address="http://localhost:8080/HelloService/MEX/" binding="mexHttpBinding" bindingConfiguration=""
                    contract="IMetadataExchange" />
            </service>
        </services>
    </system.serviceModel>
</configuration>

    按F5运行这个服务,虽然看起来和之前并无太大分别,但是现在我们就能创建一个代理了。打开Visual Studio Command Prompt (打开菜单Visual Studio 2005/Visual Studio Tools就能找到)并执行如下命令:
    svcutil.exe /o:client.cs /config:app.config http://localhost:8080/HelloService/MEX/
    打开产生的文件,尤其是app.config,就会发现,这个配置文件包含了一份对之前创建的那个服务的一个ABC引用。

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