精华内容
下载资源
问答
  • C#WCF实例,服务器与客户端程序
  • android 调用C# WCF开发实例
  • 最近项目需要,需要实现C++客户端和WCF服务器双工通信。但C++没有好用的WCF实现框架。经过一番折腾,想出了个通过COM与C#WCF客户端通信的方法。拿出来分享一下。
  • C# WCF入门学习.doc

    2013-01-10 10:55:00
    C# WCF入门学习.doc
  • c# wcf双工通信客户端demo

    热门讨论 2012-11-09 12:10:31
    c# wcf双工通信客户端demo,服务端在下面
  • c# wcf 通过写这篇文章,我冒着被.NET和Java社区拒绝的巨大风险。 这是试图解释Java术语WCF (代表Windows Communication Foundation)的含义。 从WCF到Java的映射并不简单。 我缺乏对WFC使用者应该了解的与服务通信...
    c# wcf

    c# wcf

    通过写这篇文章,我冒着被.NET和Java社区拒绝的巨大风险。 这是试图解释Java术语WCF (代表Windows Communication Foundation)的含义。

    服务按钮-150x150
    从WCF到Java的映射并不简单。 我缺乏对WFC使用者应该了解的与服务通信类型的了解:请求/响应或异步消息传递。 我很难想象这对于用户来说是完全透明的……除非WCF框架“消除”消息的异步性并照顾等待响应消息。 如果最新发生,那么实际上没有异步消息传递!

    像往常一样,使用Java(我真的很想念它与.NET一起使用),存在技术规范,并且这些规范有各种实现。 尽管通常使用这些应用程序进行测试,因此声称可以支持所用规范的明确实现,但从理论上讲,最终选择是在部署期间或在应用程序启动之前完成的。

    每当我们谈论服务时,我们都会拥有实际的服务及其消费者。

    让我们从消费者开始。 为了发送异步消息,最好针对JMS (Java消息系统规范)编写它们。 JMS的使用者只需要知道目标队列或主题的逻辑名称即可。 对于请求/响应通信,应该针对普通的服务接口编写消费者。 该接口与服务端和传输层中使用的技术无关。 为了在运行时获得接口的显式实现,使用者使用外部可配置的Factory。 该工厂将为Web服务使用JAX-WS ,为RESTful服务使用JAX-RS ,为远程EJB(企业Java Bean)使用RMI或为进程内服务使用纯对象(PO​​JO)。

    你还在吗? 然后,我们转到服务端。 如果服务使用消息,则可以直接使用JMS或将其作为消息驱动Bean(EJB风格)来实现。 最后一个选项为您提供了来自Application Server(类似于IIS)的所有事务性和可伸缩性。 如果服务应该提供响应(包括失败),则黄金法则是让它们实现一个简单的接口,即服务使用者将使用的接口。 然后,通过向接口实现代码中添加注释或通过在Application Server中使用外部配置,您的实现都可以作为Web Service或Session EJB进行访问。 实际上,如今,大多数服务器都能够将会话EJB公开为Web服务。 如果使用代理模式,那么您还将拥有一个干净,完好的接口实现,供进程内使用方使用。

    这是一个很冗长的解释。 所有跨层实体都是WCF服务”的简短翻译是:

    “所有实体均由其接口定义,并针对其他实体的接口编写。 实体的实现是普通的旧Java对象(PO​​JO),可能由EJB代理包装”

    翻译自: https://www.javacodegeeks.com/2014/04/attempt-to-map-wcf-to-java-terms.html

    c# wcf

    展开全文
  • C# WCF中间件

    2018-12-25 14:50:28
    WCF中间件是用结合netTcpBinding 并以windows 服务的方式向winForm 或WebFrom客户端提供调用。
  • C# WCF 推送数据SOCKE;T并发完成端口例子完整实例源码; C# SOCKET WCF PUSH 推送数据
  • 最近项目需要,需要实现C++客户端和WCF服务器双工通信。...经过一番折腾,想出了个通过COM与C#WCF客户端通信的方法。拿出来分享一下。 有不明白的请看博客:http://blog.csdn.net/wuding1104/article/details/9394305
  • C# WCF 使用例程

    2019-01-09 12:06:22
    本实例创建了一个C#WCF服务,通过多方找资料和不断尝试,终于实现了通过浏览器http访问方法
  • c# wcf的dome

    2020-10-21 10:07:12
    做了一个特别简单的wcf 的dome,包含客户端和服务端, 另外我发现了几个比较好的学习wcf 的博客,也分享一下 https://www.cnblogs.com/jiekzou/p/5325310.html https://www.cnblogs.com/llguanli/p/6782774.html ...
  • C# WCF承载方法汇总

    2009-07-13 15:00:09
    C# WCF承载方法汇总 vs2008 sp1下测试通过
  • C# WCF 聊天

    2015-01-07 15:44:01
    国外牛人做的WCF聊天程序,高效实时,学习C#的同学你值得拥有.做WCF的可以学习.
  • C# WCF架构创建过程 (C/S),c# winform .Net 架构 编程
  • C# WCF宿主

    2020-12-15 21:50:59
    在我用VS2013创建WCF服务的时候有四个类型:WCF服务库、WCF服务应用程序、WCF工作流服务应用程序和联合服务库。现在处于初学阶段,主要学习用到的是WCF服务库和WCF服务应用程序,它们有什么区别呢? 1.WCF服务库:...

    一、概述
      WCF程序必须在宿主上运行,也就是WCF服务必须寄宿在某一个windows的进程中,可以是IIS、控制台程序、窗体程序、WAS以及所有.net程序等程序进程中。在我用VS2013创建WCF服务的时候有四个类型:WCF服务库、WCF服务应用程序、WCF工作流服务应用程序和联合服务库。现在处于初学阶段,主要学习用到的是WCF服务库和WCF服务应用程序,它们有什么区别呢?

    1.WCF服务库:相当于一个包含WCF服务的类库,本身不能执行,必须通过别的宿主程序(如控制台程序、WAS等)托管引用后才可以使用,可以提高代码的复用性。

    2.WCF服务应用程序:相比之下可以独立运行,基于IIS托管的程序。在开发基于IIS的WCF服务时比较多见,自学的时候也多用这个,在WCF入门一[WCF概述]中就使用过。

    IIS的宿主实现在之前讲过,所以不再复述。这里我们先创建一个WCF服务库WcfServiceLibrary,将默认的文件IService1.cs和Service.cs删除,新建一个WCF服务Day.cs会生成Day,cs和IDay.cs两个文件,接口和实现如下:

    namespace WcfServiceLibrary
    {
        [ServiceContract]
        public interface IDay
        {
            [OperationContract]
            string ShowDay(int day);
        }
    }
    
    namespace WcfServiceLibrary
    {
        public class Day : IDay
        {
            public string ShowDay(int day)
            {
                return string.Format("WCF服务返回Day是:{0}", day);
            }
        }
    }
    

    这里我们在新建WCF服务Day.cs的时候VS自动给在配置文件中加上了该服务的信息,也就是终结点的信息。这里和寄宿在IIS中由IIS监听不同,如果没有添加的话需要手动添加在配置文件中或者在程序代码中写终结点的相关配置细信息Behaviors、Address等,不过正常情况下都是依赖配置文件的。

    由于控制台程序、窗体程序、windows服务和.net程序等作为宿主都是一样的,可以通过读取配置文件或者代码配置终结点等服务信息来实现。以下主要用控制台程序通过这两点实现WCF宿主。

    二、代码配置终结点信息
      1.在解决方案下新建一个控制台程序ConsoleApplication。

    2.添加引用->解决方案->WcfServiceLibrary.dll。

    3.添加引用->程序集->System.ServiceModel。

    4.添加代码如下,具体请查看"MSDN ServiceHost"

    namespace ConsoleApplication
    {
        class Program
        {
            static void Main(string[] args)
            {
                //创建宿主的基地址
                Uri baseAddress = new Uri("http://192.168.3.30:8080/Day");
                //创建宿主
                using (ServiceHost host = new ServiceHost(typeof(Day), baseAddress))
                {
                    //向宿主中添加终结点
                    host.AddServiceEndpoint(typeof(IDay), 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();
                }
            }
        }
    }
    

    6.启动控制台程序,如果启动不了的话,用管理员身份运行exe,启动WCF服务
    在这里插入图片描述
    7.新建一个控制台解决方案,并添加地址当前WCF的服务引用。之后正常调用服务如下所示:
    在这里插入图片描述
    三、读取配置文件
      1、2、3三个步骤同上,更改代码如下,这里是直接读取配置文件中的ServiceHost:

    class Program
        {
            static void Main(string[] args)
            {
                ServiceHost host = new ServiceHost(typeof(Day));
                //打开宿主
                host.Open();
                Console.Write("WCF中的HTTP监听已启动....");
                Console.ReadKey();
                host.Close();
            }
        }
    

    在控制台应用程序的配置文件App.Config修改如下,这里的配置项必须要对否则启动会报错。

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <startup> 
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
        </startup>
        <system.serviceModel>
          <services>
            <service name="WcfServiceLibrary.Day">
              <endpoint address="" binding="wsHttpBinding" contract="WcfServiceLibrary.IDay" />
              <host>
                <baseAddresses>
                  <add baseAddress="http://192.168.3.30:8080/Day" />
                </baseAddresses>
              </host>
            </service>
          </services>
          <behaviors>
            <serviceBehaviors>
              <behavior>
                <serviceMetadata httpGetEnabled="True"/>
                <serviceDebug includeExceptionDetailInFaults="False"/>
              </behavior>
            </serviceBehaviors>
          </behaviors>
        </system.serviceModel>
    </configuration>
    

    四、总结
      实现控制台宿主、winform宿主和windows服务宿主的代码就是以上两种方式,虽然宿主不同但是方法其实是相同的,可以根据以上的控制台宿主的实现来实现其他同类型的宿主,但是相比之下用IIS服务作为宿主还是最为主要的手段,更加的方便快捷。

    展开全文
  • C# WCF入门

    2020-12-15 21:44:52
    目录标题一、什么是WCF二、第一个WCF程序三、WCF服务的使用 一、什么是WCF WCF是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架。它使得开发者能够建立一个跨平台的、安全、可信赖、事务性的...

    一、什么是WCF

    WCF是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架。它使得开发者能够建立一个跨平台的、安全、可信赖、事务性的解决方案,且能与已有系统兼容协作。WCF是微软分布 式应用程序开发的集大成者,它整合了.Net平台下所有的和分布式系统有关的技术,例如.Net Remoting、ASMX、WSE和MSMQ(消息队列)。以通信(Communiation)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于 Internet;以宿主程序而论,可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作为宿主(Host)。WCF可以支持的协议包括TCP,HTTP,跨进程以及自定义,安全模式则包括SAML, Kerberos,X509,用户/密码,自定义等多种标准与模式。也就是说,在WCF框架下,开发基于SOA的分布式系统变得容易了,微软将所有与此相 关的技术要素都包含在内,掌握了WCF,就相当于掌握了叩开SOA大门的钥匙。

    最终目标是通过进程或不同的系统、通过本地网络或是通过Internet收发客户和服务之间的消息。

    二、第一个WCF程序

    1.我们先新建一个项目,选择WCF中的WCF服务应用程序新建:

    在这里插入图片描述
    2.系统生成了两个默认文件:IService1.cs和Service1.svc,其中IService1.cs是定义接口的,Service1.svc用来实现该接口。在这两个文件中可以看到如下的代码:

    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”。
        [ServiceContract]
        public interface IService1
        {
    
            [OperationContract]
            string GetData(int value);
    
            [OperationContract]
            CompositeType GetDataUsingDataContract(CompositeType composite);
    
            // TODO: 在此添加您的服务操作
        }
    
    
        // 使用下面示例中说明的数据约定将复合类型添加到服务操作。
        [DataContract]
        public class CompositeType
        {
            bool boolValue = true;
            string stringValue = "Hello ";
    
            [DataMember]
            public bool BoolValue
            {
                get { return boolValue; }
                set { boolValue = value; }
            }
    
            [DataMember]
            public string StringValue
            {
                get { return stringValue; }
                set { stringValue = value; }
            }
        }
    
    public string GetData(int value)
            {
                return string.Format("You entered: {0}", value);
            }
    
            public CompositeType GetDataUsingDataContract(CompositeType composite)
            {
                if (composite == null)
                {
                    throw new ArgumentNullException("composite");
                }
                if (composite.BoolValue)
                {
                    composite.StringValue += "Suffix";
                }
                return composite;
            }
    

    可以看到接口文件IService1.cs里有几个特性分别是:[ServiceContract]、[OperationContract]、[DataContract]、[DataMember],大致的用途如下:

    [ServiceContract]:指明该接口是一个WCF的服务契约,可以被外部的调用,不加则无法被外部调用。

    [OperationContract]:指明该方法是一个WCF的方法契约,可以被外部的调用,不加则无法被外部调用。

    [DataContract]:数据契约,指明该类是可供服务端和客户端相互传递自定义数据的类型,声明后该类型就可以被序列化在服务端和客户端之间传送。

    [DataMember]:数据成员,声明后的属性可以参与到客户端和服务器端的类的属性的序列化,没有声明的不参与序列化。

    在Service1.svc中已经实现了接口中的方法,将Service1.svc设置为启动项,后调试会如下所示,这是vs自带的服务测试的工具,不过无法测试异步的服务。
      在这里插入图片描述
    双击左侧树状图中的方法GetData(),在上方输入值后点击调用可以下方看到方法返回值,则说明我们的接口成功了。在这里插入图片描述

    三、WCF服务的使用

    1.接下来对我们的WCF程序进行发布到本地文件,发布的过程和WEB的项目发布类似,发布后我们部署到IIS上面。右键浏览Service1.svc出现如下的页面后表明发布成功。http://192.168.3.30:7358/Service1.svc?wsdl就是我们需要引用的服务地址。在这里插入图片描述
     注意如果无法发布成功,可能是部分的Windows功能没有开启,如下所示。在这里插入图片描述
    2.新建一个新的控制台应用程序,右键引用->添加服务引用->将WCF服务引用地址输入点击确认即可引用成功。在这里插入图片描述
    引用成功后在Service References文件夹下出现了一个ServiceReference1服务,在控制台程序中引用WCF服务的命名空间using ConsoleApplication2.ServiceReference1;使用如下代码即可访问服务接口。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    //添加WCF的服务命名空间
    using ConsoleApplication2.ServiceReference1;
    
    namespace ConsoleApplication2
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Service1Client是在添加服务引用后服务器端的Service1在客户端的代理类,一般的格式都是"*Client"这种格式的
                Service1Client sercive = new Service1Client();
                string str = sercive.GetData(666);
                Console.WriteLine("WCF服务返回值为:" + str);
                Console.ReadKey();
            }
        }
    }
    

    返回结果如下:
    在这里插入图片描述

    展开全文
  • C# WCF项目示例

    2018-02-23 15:54:44
    WCF示例项目,c#...................................................................................................................................
  • VC++ 调用C# WCF接口

    2018-11-06 11:34:06
    VC++ 使用gsoap 调用C# 发布的WCF接口。需要注意 文档中各个路径的设置。测试代码可以按照这个来规则来写自己需要调用的接口。
  • C# WCF配置

    2020-12-15 21:48:19
     首先我们需要了解WCF的一个概念就是终结点Endpoint,WCF服务通过定义一个或者多个终结点,当服务端和客户端的终结点相互匹配的时候才可以完成通信。终结点Endpoint由三部分组成Address、Binding和Contract。 ...

    一、概述
      往往在很多项目中数据库连接字符串、变量和一些动态的加载类会写在配置文件中。WCF也会在配置文件中写入一些配置参数,比如服务的地址、服务用于发送和接收消息的传输和消息编码等,通过配置文件可以灵活的修改,不需要再编译。

    二、终结点Endpoint
      首先我们需要了解WCF的一个概念就是终结点Endpoint,WCF服务通过定义一个或者多个终结点,当服务端和客户端的终结点相互匹配的时候才可以完成通信。终结点Endpoint由三部分组成Address、Binding和Contract。

    Address:直译就是地址,相当于URL,通过地址可以访问到WCF的服务。

    Binding:直译是绑定,绑定的是客户端和服务端底层的细节,比如传输的时候使用什么编码格式xml、text、二进制等。采用tcp还是http等等。

    Contract:就是契约,规定我们那些服务接口可以访问,那些不能访问。暴露WCF服务的某些方法。

    终结点的详细配置内容就是写在配置文件中,用于WCF实现多个应用程序之间的通信。

    三、WCF配置文件的组成
      WCF的配置详情都在<system.serviceModel>节点下,下面是配置文件的示例,配置的节点有点多,这里主要描述、和这三个。更加深入的内容可以详见MSDN文档。

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <system.serviceModel>
            <behaviors>
               <!-- List of Behaviors -->
            </behaviors>
            <client>
               <!-- List of Endpoints -->
            </client>
            <diagnostics wmiProviderEnabled="false" performanceCountersEnabled="false" tracingEnabled="false">
            </diagnostics>
            <serviceHostingEnvironment>
               <!-- List of entries -->
            </serviceHostingEnvironment>
            <comContracts>
               <!-- List of COM+ Contracts -->
            </comContracts>        
            <services>
               <!-- List of Services -->
            </services>
            <bindings>
               <!-- List of Bindings -->
            </bindings>
        </system.serviceModel>
    </configuration>
    

    1.

    该节点是必须有的,配置服务、接口和终结点。可以有多个service节点,每个service节点有name(服务的具体实现,格式应为 Namespace.Class.)和behaviorConfiguration(一个字符串,其中包含要用于实例化服务的行为(behavior)的行为名),并且可以在service节点下存在多个终结点。具体实例如下:

    <services>
          <service name="WcfServiceLibrary1.Service1">
            <host>
              <baseAddresses>
                <add baseAddress = "http://localhost:8733/Design_Time_Addresses/WcfServiceLibrary1/Service1/" />
              </baseAddresses>
            </host>
            <!-- Service Endpoints -->
            <!-- 除非完全限定,否则地址将与上面提供的基址相关 -->
            <endpoint address="" binding="basicHttpBinding" contract="WcfServiceLibrary1.IService1">
              <!-- 
                  部署时,应删除或替换下列标识元素,以反映
                 用来运行所部署服务的标识。删除之后,WCF 将
                  自动推断相应标识。
              -->
              <identity>
                <dns value="localhost"/>
              </identity>
            </endpoint>
            <!-- Metadata Endpoints -->
            <!-- 元数据交换终结点供相应的服务用于向客户端做自我介绍。 --> 
            <!-- 此终结点不使用安全绑定,应在部署前确保其安全或将其删除-->
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
          </service>
        </services>
    

    2.

    此节包含标准绑定和自定义绑定的集合。每一项都是一个可由其唯一 name 进行标识的 binding 元素。服务通过用 name 与绑定进行链接来使用绑定。绑定包含以下元素:

    协议堆栈确定用于发送到终结点的消息的安全性、可靠性和上下文流设置。
    传输确定将消息发送到终结点时使用的基础传输协议,例如 TCP 或 HTTP。
    编码确定用于发送到终结点的消息的网络编码,例如,文本/XML、二进制或消息传输优化机制 (MTOM)。
      因为绑定的内容节点非常多,详细的还是看详细文档,这里只举一个实例:

    <mexHttpBinding>
       <binding 
           closeTimeout="TimeSpan" 
           name="string" 
           openTimeout="TimeSpan" 
           receiveTimeout="TimeSpan"
           sendTimeout="TimeSpan">
       </binding>
    </mexHttpBinding>
    

    3.

    此元素定义名为 endpointBehaviors 和 serviceBehaviors 的两个子集合。每个集合分别定义终结点和服务所使用的行为元素。每个行为元素由其唯一的 name 特性标识。比如:是否允许客户端获得服务的元数据、路由修改、操作访问权限设置、服务的限制机制、服务请求的超时时间等。实例如下:

    <behaviors>
          <serviceBehaviors>
            <behavior>
              <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/>
              <serviceDebug includeExceptionDetailInFaults="False" />
            </behavior>
          </serviceBehaviors>
        </behaviors>
    

    四、其他
      新建一个WCF服务程序后会有一个Web.config文件有<system.serviceModel>配置节点,当一个控制台应用程序添加该服务引用后也会有App.config文件中也会有<system.serviceModel>节点。我们知道当服务端和客户端的终结点相互匹配的时候才可以完成通信,但是现在我们把服务端Web.config的<system.serviceModel>节点内容全部删除,然后将WCF应用服务程序发布到IIS上,之后还是可以在客户端成功访问该服务。这是因为IIS在默认监听http协议,那样就可以确定文件地址、绑定,找到了文件那接口契约什么的也都找得到了,所以这时候服务端配置文件不需要<system.serviceModel>也可以。

    展开全文
  • C# WCF通信

    2020-12-15 21:56:04
     WCF的通信模式有三种:请求/响应模式、单向模式和双工通信。 二、请求/响应模式  请求/响应模式就是WCF的默认模式,前面几篇随笔中的示例都是这种模式,当客户端发送请求后(非异步状态下),即使返回的是void...
  • c# WCF小例子

    2014-06-24 11:10:22
    WCF例子
  • wpf C# wcf运行访问权限问题:以管理员身份运行 作者: IT小兵 | 2014年8月5日| 热度:2834℃ | 评论:0 |参与:0 在做一个wpf项目的时候,遇到启用wcf服务时,没有启动成功。 错误代码: HTTP 无法...
  • c# wcf 实例

    2011-05-06 09:33:54
    tcp方式的WCF实例, 简单方便,可以用于初学者学WCF
  • C#WCF服务编程 教程

    2018-05-01 15:43:15
    C# Windows API 编程,Visual C#的Windows API 程序设计
  • C# WCF快速开发框架 | C/S框架网原创作品 多年来,我们积累了数百家用户,他们使用开发框架成功开发应用在多个行业的系统,如制造、物流、贸易、零售行业的ERP、MRP、CRM、MIS、HIS、MES、POS等基于C/S架构的...
  • C# WCF示例demo

    热门讨论 2013-11-06 09:34:09
    wcf的示例demo,适合初学者或者新手了解wcf的工作原理和使用技术
  • C# WCF初识

    2019-01-28 11:48:00
    在上面的例子中,基于WCF服务的类型(typeof(CalculatorService))创建了ServieHost对象,并添加了一个终结点。 // 具体的地址为http: // 127.0.0.1:9999/calculatorservice,采用了WSHttpBinding,并指定了服务...
  • C# WCF开发实例代码

    2016-04-23 09:23:00
    一个C#实现的异常记录捕获工程,包含服务端所有源码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,987
精华内容 1,194
关键字:

c#wcf

c# 订阅