类库 System.ServiceModle

WCF类库

契约IUser1,实现User1

[ServiceContract]
public interface IUser1
{
[OperationContract]
string GetUser1Name(string name);
} public class User1 : IUser1
{
public string GetUser1Name(string name)
{
return "我是usre1" + name;
}
}

契约IUser2 ,实现User2

    [ServiceContract]
public interface IUser2
{
[OperationContract]
string GetUser1Name(string name);
} public class User2 : IUser2
{
public string GetUser1Name(string name)
{
return "我是user2" + name;
}
}

契约IUnity1和IUnity2,实现Unity(一个实现继承了两个契约,主意看一下配置文件如何配置)

    [ServiceContract]
public interface IUnity1
{
[OperationContract]
int GetUnityCount();
} [ServiceContract]
public interface IUnity2
{
[OperationContract]
string GetUnityString();
} public class Unity : IUnity1, IUnity2
{
public int GetUnityCount()
{
return ;
} public string GetUnityString()
{
return "Unity";
}
}

宿主

        static void Main(string[] args)
{
ServiceHost sh1 = new ServiceHost(typeof(WcfLib.User1));
sh1.Open();
Console.WriteLine("服务1开启");
ServiceHost sh2 = new ServiceHost(typeof(WcfLib.User2));
sh2.Open();
Console.WriteLine("服务2开启");
ServiceHost sh3 = new ServiceHost(typeof(WcfLib.Unity.Unity));
sh3.Open();
Console.WriteLine("服务3开启");
Console.ReadKey();
}

  服务配置文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<system.serviceModel>
<services>
<!--name="命名空间名称.实现类名称"-->
<service name="WcfLib.User1" behaviorConfiguration="mexBehaviour">
<endpoint address="MyServices1" binding="basicHttpBinding" contract="WcfLib.IUser1">
</endpoint>
<host>
<baseAddresses>
<add baseAddress="http://localhost:9999/"/>
</baseAddresses>
</host>
</service>
<service name="WcfLib.User2" behaviorConfiguration="mexBehaviour">
<host>
<baseAddresses>
<add baseAddress="http://localhost:6666/"/>
</baseAddresses>
</host>
<endpoint address="MyServices2" binding="basicHttpBinding" contract="WcfLib.IUser2"></endpoint>
</service>
<service name="WcfLib.Unity.Unity" behaviorConfiguration="mexBehaviour">
<host>
<baseAddresses>
<add baseAddress="http://localhost:7777/"/>
<add baseAddress="net.tcp://localhost:7776/"/>
</baseAddresses>
</host>
<endpoint address="MyServices3" binding="basicHttpBinding" contract="WcfLib.Unity.IUnity1" ></endpoint>
<!--错误:找不到具有绑定 NetTcpBinding 的终结点的与方案 net.tcp 匹配的基址。注 册的基址方案是 [http]。 解决:TCP通讯 地址必须是TCP的(TCP不能宿主在IIS上) net.tcp://localhost:7776/-->
<endpoint address="MyServices4" binding="netTcpBinding" contract="WcfLib.Unity.IUnity2"></endpoint>
</service>
</services> <behaviors>
<serviceBehaviors>
<behavior name="mexBehaviour">
<!--设置未false被人不能发现,一般当客户端已经加载好服务代理就可以设置为false了。配置修改,服务要重启,才能生效-->
<serviceMetadata httpGetEnabled="true" />
</behavior>
<behavior>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>

客户端

右键添加服务

配置文件自动生成

        static void Main(string[] args)
{
WCFServiceUser1.User1Client cli1 = new WCFServiceUser1.User1Client();
WCFServiceUser2.User2Client cli2 = new WCFServiceUser2.User2Client();
WCFServiceUnity.Unity1Client cli3 = new WCFServiceUnity.Unity1Client();
WCFServiceUnity.Unity2Client cli4 = new WCFServiceUnity.Unity2Client();
Console.WriteLine(cli1.GetUser1Name("name1"));
Console.WriteLine(cli2.GetUser1Name("name2"));
Console.WriteLine(cli3.GetUnityCount());
Console.WriteLine(cli4.GetUnityString());
}

WCF 调用服务标准写法

static void Main(string[] args)
{
//不适用using,原因using在网络中断时,wcf不能关闭。websevice可以是用using释放,websevice标准写法是用using
CustomService.UserServiceSoapClient ucli = null;
try
{
ucli = new CustomService.UserServiceSoapClient();
ucli.GetStr("");
//手动释放,
ucli.Close();
}
catch (Exception)
{
if (ucli != null)
{
ucli.Abort();
}
}
}

源码下载

WCF-初识DEMO的更多相关文章

  1. WCF简单Demo

    WCF,光看书的原理,稍微有点枯燥,通过自己动手,会更容易理解契约声明,面向服务,分布式等概念. 1.创建WCF服务. 2.WcfService1.CS中声明新的契约. namespace WcfSe ...

  2. WCF学习笔记之WCF初识

    这篇博客将介绍WCF的最基础内容,让我们对WCF有一个基本的认识.后续的博客中将会介绍WCF其他方面内容.本篇博客将通过一个简单的例子,介绍如何创建WCF服务,并承载这个服务,让客户端来访问它.下面请 ...

  3. WCF初识

    WCF能干什么? 在win32中,应用程序是运行在进程的线程中的,.NET出现之后,出现了AppDomain,其实就相当于在进程和线程之间又又了一层包装层,类似于子进程的概念,在一个进程或者应用程序域 ...

  4. WCF 初识(一)

    WCF的前世今生 在.NETFramework 2.0以及前版本中,微软发展了Web Service(SOAP with HTTP communication),.NET Remoting(TCP/H ...

  5. C# WCF初识

    原文:http://www.cnblogs.com/artech/archive/2007/02/26/656901.html 方式1: 需引用 System.ServiceModel namespa ...

  6. WCF:初识

    结构: using System.ServiceModel; namespace MyServices { [ServiceContract] public interface IHomeServic ...

  7. wcf,jquery,post,跨域

    参照了网上的很多资料,vs2012 项目是wcf服务. .demo地址http://files.cnblogs.com/files/dswyzx/WcfServiceDemoa.rar

  8. UI层调用WCF服务实例(源码)

    WCF原理性的东西,暂时还没有深入研究,只是在公司的项目中使用到了,会调用,然后再多做了一些了解,现在将它抽出来了一个小实例,写了一个WCF的demo. 我写的这个WCF.Demo主要包括数据契约和服 ...

  9. WCF服务部署到IIS上,然后通过web服务引用方式出现错误的解决办法

    本文转载:http://www.cnblogs.com/shenba/archive/2012/01/06/2313932.html 昨天在用IIS部署一个WCF服务时,碰到了如下错误: 理解了文档内 ...

  10. websocket初识

    一.官网 官网地址:http://www.websocket.org/ 二.websocket初识demo <input id="sendTxt" type="te ...

随机推荐

  1. fft,ntt总结

    一个套路:把式子推成卷积形式,然后用fft或ntt优化求解过程. fft的扩展性不强,不可以在fft函数里多加骚操作--DeepinC T1:多项式乘法 板子题 T2:快速傅立叶之二 另一个板子,小技 ...

  2. java1.8新特性之stream流式算法

    在Java1.8之前还没有stream流式算法的时候,我们要是在一个放有多个User对象的list集合中,将每个User对象的主键ID取出,组合成一个新的集合,首先想到的肯定是遍历,如下: List& ...

  3. BP神经网络原理及在Matlab中的应用

    一.人工神经网络 关于对神经网络的介绍和应用,请看如下文章 ​ 神经网络潜讲 ​ 如何简单形象又有趣地讲解神经网络是什么 二.人工神经网络分类 按照连接方式--前向神经网络.反馈(递归)神经网络 按照 ...

  4. 拼图游戏(8 puzzle)

    如图所示,这是一个九宫格(这倒是让我想起了小时候老师在黑板上教导我们的如何通过一系列的拼凑,将横行,竖行,以及斜行都拼到和相等),格子中有一个格子是空的,另外八个格子分别有数字1--8,我们的任务是将 ...

  5. 7.linux磁盘管理 分区 建立文件系统 挂载使用

    一.磁盘管理 分区  建立文件系统  挂载使用   逻辑卷建立  磁盘阵列的建立  磁盘配额设定     fdisk -l       查看磁盘信息     df -Th        查看硬盘对应的 ...

  6. Qtcreator远程调试出现“The selected build of GDB does not support Python scripting.It cannot be used .."

      版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/aristolto/article/details/77370853 之前使用的是Qt4.7后来换 ...

  7. golang通过ssh实现远程文件传输

    使用ssh远程操作文件, 主要是创建ssh, 直接上代码 import ( "fmt" "github.com/pkg/sftp" "golang.o ...

  8. DELPHI正则表达式

    DELPHI正则表达式 1)下载源码 官方网站: http://www.regular-expressions.info/delphi.html     直接下载: http://www.regula ...

  9. Razor syntax reference for ASP.NET Core

    Razor syntax reference for ASP.NET Core Razor is a markup syntax for embedding server-based code int ...

  10. C++利用openssl进行公钥解密

    私钥加密的部分内容,需要用公钥解密下面的实例代码,由于私钥加密后的字符串有不可打印字符,所以程序里面进行了base64,要用的时候先解dec base64 再传递给函数 进行解密 #include & ...