精华内容
下载资源
问答
  • WCF服务

    2017-09-12 21:44:39
    什么是WCF Windows Communication Foundation(WCF)是由微软研发的一组数据... WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Internet收发客户和服务之间的消息。  WCF合并了Web服务、.net Remoting

    什么是WCF

    Windows Communication
    Foundation(WCF)是由微软研发的一组数据通信的应用程序开发接口,它是.NET框架的一部分。由 .NET Framework
    3.0 开始引入。

      
      WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Internet收发客户和服务之间的消息。
      WCF合并了Web服务、.net Remoting、消息队列和Enterprise Services的功能并集成在Visual Studio中,专门用于面向服务开发。

    Demo

    1.新建WCF服务应用程序

    2.删除系统生成的两个文件IService1.cs与Service1.svc。

    3.添加自定义的WCF服务文件——User.svc,此时vs2010会自动生成WCF接口文件IUser.cs.

    4.在IUser中定义WCF方法PrintName,在User.svc.cs对该接口的方法进行实现。

    using System.ServiceModel;
    
    namespace WCFService
    {
        [ServiceContract] //定义服务契约,表示该接口可以被外部调用
        public interface IUser
        {
            [OperationContract] //操作契约,表示该方法可以被外部调用
            string PrintName(string name);
        }
    }
    
    
    namespace WCFService
    {
        public class User : IUser
        {
            public string PrintName(string name)
            {
                string resName = string.Format("WCF服务demo,Name:{0}", name);
                return resName;
            }
        }
    }

    5.F5可以在WCF测试客户端打开该服务,也可以在IIS中创建该服务。

    6.像发布网站一样在IIS中发布该服务
    WCF服务

    7.新建一个Web Form项目命名为“WCFClient”,添加一个asp.Net页面Test.aspx

    8.在WCFClient项目中添加IIS中发布的WCF服务的引用。

    9.在Test.aspx页面中添加以下代码:

    <form id="form1" runat="server">
         <asp:TextBox ID="txtName" runat="server"></asp:TextBox><br />
        <asp:Button ID="submit" runat="server" Text="请输入Name" OnClick="btnClick" />
    </form>

    10.在Test.aspx后台添加点击事件代码

    protected void btnClick(object sender, EventArgs e)
            {
                UserClient user = new UserClient();
                string result = user.PrintName(this.txtName.Text);
                Response.Write(result);
            }

    11.F5运行打开Test.aspx页面,输入Name:“Mark”,即可在页面显示:

    WCF服务demo,Name:Mark

    服务调用成功。

    通信过程

    WCF能够建立一个跨平台的安全、可信赖、事务性的解决方案,是一个WebService,.Net Remoting,Enterprise Service,WSE,MSMQ的并集。

    技术对比

    技术对比表

    WCF中的 Endpoint(终结点)

    Endpoint = “A”+”B”+”C”

    1. A(Address):”地址”。这是一个URI地址标识,通过这个地址可以找到要调用的WCF服务。

    2. B(Binding):”绑定”。 Binding实现在Client和Service通信的所有底层细节。如:通信采用的编码(XML?Text?二进制?)、采用的传输协议(TCP?Http?)、采用的解决安全问题的机制(SSL?加密?)

    3. C(Contract):”契约”。 Contract暴露某个WCF 服务所提供的所有有效的方法。

    配置文件

    服务端的config

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
    
      <appSettings>
        <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
      </appSettings>
      <system.web>
        <compilation debug="true" targetFramework="4.5" />
        <httpRuntime targetFramework="4.5"/>
      </system.web>
      <system.serviceModel>
        <behaviors>
          <serviceBehaviors>
            <behavior>          
              <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>    
              <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <protocolMapping>
            <add binding="basicHttpsBinding" scheme="https" />
        </protocolMapping>    
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
      </system.serviceModel>
      <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
        <directoryBrowse enabled="true"/>
      </system.webServer>
    </configuration>

    客户端的config

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <system.web>
          <compilation debug="true" targetFramework="4.5" />
          <httpRuntime targetFramework="4.5" />
        </system.web>
    
        <system.serviceModel>
            <bindings>
                <basicHttpBinding>
                    <binding name="BasicHttpBinding_IUser" />
                </basicHttpBinding>
            </bindings>
            <client>
                <endpoint address="http://localhost:8020/User.svc" binding="basicHttpBinding"
                    bindingConfiguration="BasicHttpBinding_IUser" contract="WCFService.IUser"
                    name="BasicHttpBinding_IUser" />
            </client>
        </system.serviceModel>
    </configuration>

    为何客户端有endpoint节点,而服务端没有该节点呢?

    答案是:我们把WCF寄宿在IIS上,而IIS默认监听的就是Http协议——[B确定了]并且地址也是相对于IIS上的文件地址——[A确定了],契约就更不用说了,找到User.svc什么都有了——[C确定了],所以在服务端就没有必要显示的写出endpoint节点。
    服务器端的endpoint确定了,客户端的endpoint自然要和服务端去对应,所以IDE在生成客户端的配置文件里endpoint写的很详细的,而服务端却没有endpoint。

    WCF宿主

    WCF本身不能够独自运行,WCF在运行时必寄宿在“宿主程序”之上

    WCF的宿主:可以是 Windows 服务、COM+应用程序、WAS(Windows Activation Services,Windows进程激活服务)、IIS、Windows应用程序,或简单的控制台应用程序及任何.net程序。

    WCF服务应用程序与WCF服务库

    WCF服务应用程序:是一个可以执行的程序,它有独立的进程,WCF服务类契约的定义,可以直接看到运行的效果,此项目模板基于IIS托管的程序。

    WCF服务库:可以认为是一个包含WCF服务以及契约定义的类库。不能直接运行,但可以在其他项目里引用,有点类似于在Web项目中应用的类库。

    控制台宿主

    (1)WCF 服务类库(WCFLibrary),和创建WCF服务应用程序过程差不多。

    (2)在解决方案下新建控制台输出项目 WCFConsole。

    (3)添加 System.ServiceModel.dll 的引用。

    (4)添加 WCF 服务类库(WCFLibrary)的项目引用。

    using System;
    using WCFLibrary;
    using System.ServiceModel;
    using System.ServiceModel.Description;
    
    namespace WCFConsole
    {
        class Program
        {
            static void Main(string[] args)
            {
                //创建宿主的地址
                Uri baseAddress = new Uri("http://localhost:8010/User");
                //创建宿主
                using (ServiceHost host = new ServiceHost(typeof(User), baseAddress))
                {
                    //向宿主中添加终结点
                    host.AddServiceEndpoint(typeof(IUser), new WSHttpBinding(), "");
                    //将HttpGetEnabled属性设置为true
                    ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
                    smb.HttpGetEnabled = true;
                    //将行为添加到Behaviors中
                    host.Description.Behaviors.Add(smb);
                    //打开宿主
                    host.Open();
                    Console.WriteLine("开启WCF的HTTP监听...");
                    Console.ReadLine();
                    host.Close();
                }
            }
        }
    }

    至此,控制台宿主创建完毕,他和IIS宿主功能一样,这样客户端就可以通过添加服务引用来使用WCF服务了。

    winform宿主

    (1)新建Windows窗体应用程序项目 WCForm。

    (2)添加 System.ServiceModel.dll 的引用。

    (3)添加 WCF 服务类库(WCFLibrary)的项目引用。

    (4)添加应用程序配置文件App.config。

    (5)创建宿主程序MainForm窗体,并修改App.config

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <system.serviceModel>
        <services>
          <service name="WCFLibrary.User">
            <host>
              <baseAddresses>
                <add baseAddress="http://localhost:8010/User"/>
              </baseAddresses>
            </host>
            <endpoint address="" binding="wsHttpBinding" contract="WCFLibrary.IUser"></endpoint>
          </service>
        </services>
        <behaviors>
          <serviceBehaviors>
            <behavior>
              <serviceMetadata httpGetEnabled="True"/>
              <serviceDebug includeExceptionDetailInFaults="False"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
      </system.serviceModel>
    </configuration>

    (6)winform后台代码

    using System;
    using WCFLibrary;
    using System.ServiceModel;
    using System.Windows.Forms;
    using System.Configuration;
    
    namespace WCFForm
    {
        public partial class MainForm : Form
        {
            ServiceHost host;
    
            public MainForm()
            {
                InitializeComponent();
            }
    
            //应用程序加载
            private void MainForm_Load(object sender, EventArgs e)
            {
                host = new ServiceHost(typeof(User));
                //打开宿主
                host.Open();
                this.lblState.Text = "启动WCF的HTTP监听....";
            }
    
            //应用程序关闭
            private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
            {
                host.Close();
                this.lblState.Text = "关闭WCF的HTTP监听....";
            }
        }
    }
    展开全文
  • 自己用WCF做的一个简单例子WCF服务例题WCF服务例题WCF服务例题WCF服务例题WCF服务例题WCF服务例题
  • WCF服务编程

    2018-02-27 11:51:32
    WCF服务编程WCF服务编程WCF服务编程WCF服务编程WCF服务编程
  • WCF服务学习1,2WCF服务学习1,2WCF服务学习1,2WCF服务学习1,2WCF服务学习1,2WCF服务学习1,2
  • JS调用WCF服务实例(WCF服务宿主到控制台),解决Js跨域调用问题 源码实例 wcf宿主到控制台上,并内置js调用服务的源码
  • 【WCF】WCF服务库和WCF服务应用程序的区别

    千次阅读 热门讨论 2019-02-15 10:42:43
    WCF服务WCF服务库可以认为是一个包含WCF服务以及契约定义的类库。这里的库不能直接运行,需要一个程序来引用并托管它。也就是说,你可以在其他项目里引用,在宿主里启用托管这个库。 WCF应用程序 WCF应用程序...

    WCF服务库

    WCF服务库可以认为是一个包含WCF服务以及契约定义的类库。这里的库不能直接运行,需要一个程序来引用并托管它。也就是说,你可以在其他项目里引用,在宿主里启用托管这个库。

    WCF应用程序


    WCF应用程序,是一个可以执行的程序,它有独立的进程,WCF服务类契约的定义,可以直接看到运行的效果。此项目模板应该是基于IIS托管的程序。


    WCF服务库一般考虑WCF服务设计的时候,服务类的定义为单独的库,可以为其它项目使用。提高代码的复用性。
    WCF应用程序在开发基于IIS托管的WCF服务程序时,比较多见,自学的时候也可以使用这种类型。(我就是使用的这种类型)


    当然你也可以修改这些代码,比如把WCF服务程序里的类,移到一个单独的类库里。
    应用程序是有Main函数的 服务库其实就是个函数集合


    类库只是类的集合,不能单独运行。

    WCF服务程序项目是可以直接托管执行的,svc文件属于WCF服务的特定文件扩展名,IIS里有对应的处理程序。

    展开全文
  • WCF服务编程中文版

    千次下载 热门讨论 2014-02-16 10:34:30
    WCF服务编程中文版
  • WcfServiceLibrary1--- wcf服务:生成dll文件给宿主引用 WinFormsWcfService--- 宿主 WcfClient---调用wcf服务客户端
  • wcf服务代理层可以通过basichttpbanding,wshttpbanding等绑定, 也可以通过引用wcf服务,生成异步代理 1, 2, 点击高级 转载于:https://www.cnblogs.com/relang99/archive/2008/09/05/1285166.html...

    wcf服务代理层可以通过basichttpbanding,wshttpbanding等绑定,

    也可以通过引用wcf服务,生成异步代理

    1,

     

    2, 点击高级

     

    转载于:https://www.cnblogs.com/relang99/archive/2008/09/05/1285166.html

    展开全文
  • WCF 服务 资料

    2015-06-05 14:43:00
    WCF 服务 资料,学习资料,希望对大家有帮助
  • WCF SERVICE PROGRAMMING
  • WCF服务配置

    2021-01-20 17:07:46
    在学习WPF 中常用的项目C/S架构,其中服务端又采用DAL数据层,BLL逻辑层,WcfService wcf服务应用程序。下面来说说如何在服务端配置wcf服务。在wcf服务端:WcfService 引用BLL、BLL引用DAL,当请求数据时,请求数据...

    在学习WPF 中常用的项目C/S架构,其中服务端又采用DAL数据层,BLL逻辑层,WcfService wcf服务应用程序。下面来说说如何在服务端配置wcf服务。在wcf服务端:WcfService 引用BLL、BLL引用DAL,当请求数据时,请求数据:页面层UI-> BLL逻辑层 -> 数据层SQL
    返回:数据层SQL-逻辑层BLL-UI页面层,
    在这里插入图片描述在这里插入图片描述

    首先,在wcfsevice服务应用程序中找到web.config,右键打开操作菜单,选择编辑wcf配置,进入wcf配置页在这里插入图片描述
    点击图中的红色部分,创建一个新的服务,进入服务所在路径,选择browse,浏览目录,在目录中选择服务所在路径。在这里插入图片描述
    以我的项目为例,我的项目服务端是三层架构,BLL逻辑端,DAL则是数据层,有关项目操作逻辑的在BLL类下的Bin\Debug\的目录下在这里插入图片描述
    选择完目录后,选择下一部,为了方便后续操作,Ctrl+C复制服务名称,去除http://后选择确认,知道出现完成。这时候服务新建完成,对于新建的服务还需进一步具体配置,分别是配置终结点,服务行为以及宿主环境,下图为服务终结点,在图中Name配置项中输入终结点名称。在这里插入图片描述
    在服务行为中,有两项服务行为需要进行配置,
    在serviceMetadata中,将默认的配置更改为,True、False、Default,
    在serviceDebug中,将默认的配置更改为,True、True、True,
    在这里插入图片描述
    在这里插入图片描述
    在相关服务配置配置完成后,需要激活服务,在宿主环境的最后一项中新建服务激活,在新建项中配置相对地址与服务,相对地址默认下在路径添加.svc,如相对地址为BLL.Login.svc,服务名称则简写

    在这里插入图片描述

    展开全文
  • WCF服务建立

    2014-04-25 23:20:20
    这是一个WCF建立服务的小程序例子,通过这个程序就能理解契约和WCF服务的基本要点
  • WCF服务实例

    2013-03-16 22:14:11
    一个简单的ASP.NET+WCF服务实例,相信对你学会使用WCF服务大有帮助
  • 恩,在由瘦客户端转换成胖浏览器端的“潮流”下,必然要使用JavaScript调用后台的各种...我们需要将WCF服务的配置文件(注意如果有其他启动WCF服务的项目应该修改该项目的app.config文件)修改,将serviceHostEnvironm
  • 《微软WCF分布式开发与SOA架构设计之:WCF实战开发、部署WCF服务计算器、跨机器调用WCF服务》 微软实战训练营 上海交大(A)实验班、(X)重点班 内部课程资料(软件工程师 架构师 开发经理) 链接:...
  • Web服务和WCF服务

    2010-03-25 13:06:42
    Web服务和WCF服务 Web服务和WCF服务
  • WCF服务编程09

    2011-09-16 11:07:28
    WCF服务编程09WCF服务编程09WCF服务编程09WCF服务编程09WCF服务编程09WCF服务编程09WCF服务编程09
  • WCF服务概述

    2020-04-29 09:20:15
    一.WCF服务 1.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分。由 .NET Framework 3.0 开始引入。 WCF的最终目标是...
  • WCF服务应用程序与WCF服务

    千次阅读 2013-03-15 18:12:26
    我们在平时开发的过程中常用的项目类型有“WCF 服务应用程序”和“WCF服务库”。  WCF服务应用程序,是一个可以执行的程序,它有独立的进程,WCF服务类契约的定义,可以直接看到运行的效果。此项目模板基于IIS托管...
  • wcf,c#调用wcf 服务

    2012-05-05 14:10:53
    wcf,c#调用wcf 服务,包括 服务器端,客服端 简单示例供参考
  • Wcf服务的建立测试源码,帮助初学者快速理解WCF服务和应用。
  • 该资源为WCF服务寄宿于控制台应用程序的案例,展示了如何编写WCF服务,开启WCF并且调用WCF服务等内容。
  • 写在前面:笔者马上毕业了,也要开始准备做毕业设计了。...系统准备融合WCF服务程序来开发,所以今天是学习WCF服务程序的第一天:让我们一起走进WCF。1. 什么是WCF?Windows Communication Foundation(WCF...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,375
精华内容 6,550
关键字:

wcf服务