开发者社区> 杰克.陈> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

关于WCF的引用,添加服务和添加web服务的区别

简介: 原文:关于WCF的引用,添加服务和添加web服务的区别  本章内容主要是根据我做的实验来阐述这2种添加服务针对WCF的不同之处,我们按照示例一步一步来看。   如下是工程的结构: 该WCF服务是通过控制台程序(Host)以自宿的形式发布的,绑定使用wsHttpBinding。
+关注继续查看
原文:关于WCF的引用,添加服务和添加web服务的区别

 本章内容主要是根据我做的实验来阐述这2种添加服务针对WCF的不同之处,我们按照示例一步一步来看。

 

如下是工程的结构:

该WCF服务是通过控制台程序(Host)以自宿的形式发布的,绑定使用wsHttpBinding。我们在Client端分别添加

服务引用(add service references)和添加Web引用(add Web Reference )来引用WCF服务。

 

以下是客户端的代码,分别使用添加服务引用和添加Web引用的服务代理来调用WCF的方法: 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Yingchao.Client.localhost;
using Yingchao.Client.ServiceReference1;

namespace Yingchao.Client
{
    class Program
    {
        static void Main(string[] args)
        {
            // add service reference's proxy
            Service1Client client = new Service1Client();
            Console.WriteLine(client.GetData(111));

            // add web reference's proxy
            Service1 s = new Service1();
            Console.WriteLine(s.GetData(1234, true));

            Console.Read();
        }
    }
}

 

客户端配置文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="Yingchao.Client.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        </sectionGroup>
    </configSections>
  <system.serviceModel>
    <client>
      <!-- 添加服务引用时自动生成 -->
      <endpoint address="http://localhost:8732/service" binding="wsHttpBinding"
          contract="ServiceReference1.IService1" name="WSHttpBinding_IService1">
        <identity>
          <dns value="localhost" />
        </identity>
      </endpoint>
    </client>
  </system.serviceModel>
    <applicationSettings>
      <!-- 添加Web服务引用时自动生成 -->
        <Yingchao.Client.Properties.Settings>
            <setting name="Yingchao_Client_localhost_Service1" serializeAs="String">
                <value>http://localhost:8732/service</value>
            </setting>
        </Yingchao.Client.Properties.Settings>
    </applicationSettings>
</configuration>

服务端配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <system.web>
    <compilation debug="true" />
  </system.web>
    <system.serviceModel>
    <services>
      <service name="Yingchao.Service.Service1">
        <host>
          <baseAddresses>
            <add baseAddress = "http://localhost:8732/service" />
          </baseAddresses>
        </host>
        <!-- Service Endpoints -->
        <!-- 除非完全限定,否则地址将与上面提供的基址相关 -->
        <endpoint address ="" binding="wsHttpBinding" contract="Yingchao.Contract.IService1">
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <!-- Metadata Endpoints -->
        <!-- 元数据交换终结点供相应的服务用于向客户端做自我介绍。 -->
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

</configuration>

 

我们启动服务后,运行客户端,我们看看结果是什么:

 

我们看到这里添加Web服务代理调用WCF的方法的结果没有显示出来,而是出现了"操作超时"错误。

 

那我们更改服务端配置文件的绑定:wsHttpBinding 改成 basicHttpBinding,编译后更新引用的服务。

然后再次运行客户端,我们看看结果:

 我们看到这次2个引用服务都成功调用。可见添加Web服务应该只能使用basicHttpBinding,也许微软是为了向前兼容留下的。

然后,分别添加的服务引用生成的Reference.cs里面生成的代码也不一样。添加服务引用更偏向WCF规则。

 

我查资料也发现跟我想的差不多.(http://social.microsoft.com/Forums/zh-CN/xmlwebserviceszhchs/thread/808d870b-49f1-47ac-b105-4beb580bcec6)

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Tomcat 应用服务器如何设置 Web 服务目录精讲
Tomcat 应用服务器如何设置 Web 服务目录精讲
0 0
《使用CNFS搭建弹性Web服务》电子版地址
一步一步搭建容器弹性 Web 与内容管理系统
0 0
Python3,网站搭建之构建Flask项目,带你启动web服务! !
Python3,网站搭建之构建Flask项目,带你启动web服务! !
0 0
如何将模型可视化工具Netron改造为通用的WEB服务(Flask)?
很多时候,我们需要复现人家的工程。因此,需要了解人家的网络结构。但不同框架之间可视化网络层方法不一样,这样给研究人员造成了很大的困扰。模型可视化工具Netron很好的解决了上述问题。Netron是微软小哥lutzroeder的一个广受好评的开源项目。目前,Netron支持各种主流机器学习、深度学习框架的模型结构可视化工作。
0 0
MongoDB v4.4.6安装、创建服务及Web客户端访问MongoDB详解
MongoDB v4.4.6安装、创建服务及Web客户端访问MongoDB详解
0 0
Gradio快速搭建ML/DL Web端服务
Gradio快速搭建ML/DL Web端服务
0 0
使用 RESTful Web 服务
本指南将引导您完成创建使用 RESTful Web 服务的应用程序的过程。
0 0
构建 RESTful Web 服务
本指南将引导您完成使用 Spring 创建“Hello, World”RESTful Web 服务的过程。
0 0
从零搭建Web所需服务(五)& 从零搭建微服务SpringCloud(番外)微服务集成ES分词服务
本文作为从零搭建Web所需服务系列的第五篇及从零搭建微服务SpringCloud系列的番外篇,捞干介绍如何通过微服务集成ES分词服务。
0 0
+关注
杰克.陈
一个安静的程序猿~
文章
问答
文章排行榜
最热
最新
相关电子书
更多
WEB浏览器中即将发生的安全变化
立即下载
如何利用Redisson分布式化传统Web项目
立即下载
Web应用系统性能优化
立即下载