中篇

5.托管于宿主

6.消息模式

7.WCF行为-实例管理和并发控制

8.安全

5.托管于宿主

托管

宿主Host

Ø承载WCF Service运行的环境
自承载方式
系统服务方式
IIS方式
WAS
 

建立Winform宿主
  关键代码

ServiceHost host = new ServiceHost(service Type );

host.Open();

  private void button1_Click(object sender, EventArgs e)
{ System.ServiceModel.ServiceHost myhost = new System.ServiceModel.ServiceHost(typeof(WeatherInfoService.WeatherInfoService)); try
{
myhost.Open(); this.textBox1.AppendText(myhost.State.ToString() + " 已经启动" + DateTime.Now);
}
catch (Exception)
{
this.textBox1.AppendText(" 启动错误" + DateTime.Now);
} System.Threading.Thread.Sleep(); try
{
myhost.Close();
this.textBox1.AppendText(myhost.State.ToString() + " 已经Close" + DateTime.Now);
}
catch (Exception)
{
this.textBox1.AppendText(" 启动错误" + DateTime.Now);
}
}

宿主代码

6.消息模式
 消息模式

Ø 客户端与服务器之间是进行消息通讯的方式
三种主要消息模式
Ø 单向 One Way
Ø 请求/答复Request/Reply
Ø 双工Duplex
 消息模式-单向模式
单向模式
Ø One Way Call
Ø 指的是发送端负责把消息发送给对方并且收到本地发出信息的确认消息之后,就完成交互的方式。
特点
Ø 未知:消息是否最终到达服务的终节点
Ø 已知:消息发送成功
Ø 一般只能为返回void 的操作指定单向消息交换
Ø Operation Contract Attribute的IsOneWay 属性需要设置为True,默认为false.
[OperationContract(IsOneWay=true)]
void Method();
操作协定中可以有很多参数标记,如下图:
 
消息模式-请求/答复模式
请求/答复模式
Ø Request/Reply
Ø 客户端发送一个消息并且接收一个返回消息来完成一次交互
特点
Ø 请求方(客户端应用程序)发出请求以后,一直等待对方(WCF方)答复。
Ø 这是默认的模式
[OperationContract]
void Method();
 
 
消息模式-双工模式
双工模式
Ø duplex
Ø 客户端和服务端都可以任意地向对方发送消息,而对方也可以以任意的次序来接收消息。
Ø 服务端 :
1 需要设计用于回调的服务协定,
  public interface IChatCallBack
{
[OperationContract(IsOneWay = true)]
void Receive(string name, string msg); [OperationContract(IsOneWay = true)]
void ReceiveWhisper(string name, string msg); [OperationContract(IsOneWay = true)]
void UserEnter(string name); [OperationContract(IsOneWay = true)]
void UserLeave(string name); [OperationContract(IsOneWay = true)]
void LoadUsers(List<string> chaters); }

2 将该回调协定的类型分配给ServiceContractAttribute Attribute的CallbackContract property。

在服务接口的上面添加属性标签

Ø客户端:
1 要对该接口实现
 
功能设计:
Ø 1 客户端调用服务端发送心跳通知
Ø 2服务端回调,调整心跳频率
 

主要代码
  public interface ICallBack
   {
        [OperationContract(IsOneWay = true )]
        void ChangeInterval(int seconds);
    }
   [ServiceContract(CallbackContract=typeof(ICallBack ))]
   public interface IService1
    {
       [OperationContract]
       void Heartbeat();

}

 WCF Behanior
什么是Behavior
Ø Behavior即各种影响WCF系统运行的设置。
Ø 包括服务行为(Service Behavior)和操作行为(Operation Behavior)
Ø 服务行为作用在终节点上(实例控制、并发控制、元数据发布等)
Ø 操作行为作用于某一服务操作上(事务流设置等。
主要的Behavior
Ø 实例管理
Ø 并发管理
Ø 元数据发布管理
Ø 事务
 
 7.WCF行为-实例管理和并发控制
   两个只要的服务行为:

实例管理
如何为不同的Client生成Service instance,以及何时销毁instance
 有个重要的枚举上已经介绍的比较清楚了:
namespace System.ServiceModel
{
// 摘要:
// 指定可用来处理包含在传入消息中的调用的服务实例数。
public enum InstanceContextMode
{
// 摘要:
// 为每个会话创建一个新的 System.ServiceModel.InstanceContext 对象。
PerSession = ,
//
// 摘要:
// 新的 System.ServiceModel.InstanceContext 对象在每次调用前创建,在调用后回收。如果信道未创建会话,则该值的行为就如同
// System.ServiceModel.InstanceContextMode.PerCall 一样。
PerCall = ,
//
// 摘要:
// 只有一个 System.ServiceModel.InstanceContext 对象用于所有传入呼叫,并且在调用后不回收。如果服务对象不存在,则创建一个。
Single = ,
}
}

WCF 实例管理的枚举

修饰服务类

ServiceBehavior特性,InstanceContextMode属性
并发管理
多线程
同样也有一个重要枚举:

namespace System.ServiceModel
{
// 摘要:
// 指定服务类是支持单线程还是多线程操作模式。
public enum ConcurrencyMode
{
// 摘要:
// 服务实例是单线程的,且不接受可重入调用。如果 System.ServiceModel.ServiceBehaviorAttribute.InstanceContextMode
// 属性为 System.ServiceModel.InstanceContextMode.Single,且其他消息在实例处理调用的同时到达,则这些消息必须等待,直到服务可用或消息超时为止。
Single = ,
//
// 摘要:
// 服务实例是单线程的,且接受可重入调用。可重入服务接受在调用其他服务的同时进行调用;因此在调出之前,您需要负责让对象的状态一致,而在调出之后,必须确认本地操作数据有效。请注意,只有通过
// WCF 通道调用其他服务,才能解除服务实例锁定。在此情况下,已调用的服务可以通过回调重入第一个服务。如果第一个服务不可重入,则该调用顺序会导致死锁。有关详细信息,请参见
// System.ServiceModel.ServiceBehaviorAttribute.ConcurrencyMode。
Reentrant = ,
//
// 摘要:
// 服务实例是多线程的。无同步保证。因为其他线程可以随时更改服务对象,所以必须始终处理同步与状态一致性。
Multiple = ,
}
}

WCF 并发管理的枚举

 
 8.安全 
安全控制
Ø 消息完整性
Ø 消息保密性
Ø 身份认证
 
 WCF 安全- Transfer Security Mode
Transfer Security
Ø 保证消息完整性
Ø 保证消息保密性

1.None: 不采取任何安全措施,仅适合在内部安全环境使用。
2.Transport: 在传输协议级别上对通道的所有通讯进行加密,可使用的通讯协议包括 HTTPS、TCP、IPC 和 MSMQ。
3.Message: 通过相关标准(如 WS-Security)直接对消息进行加密。
4.Mixed(TransportWithMessageCredential): 混合了上面两种方式。使用 Transport 方式完成消息完整性、消息机密性以及服务器认证,而使用 Message 方式完成客户端认证。
5.Both: 使用 Transport 和 Message 共同完成所有的安全过程,,性能低下,只有 NetMsmqBinding 支持这一安全方式。
 常用的配置方式是在配置文件中进行配置: 
<bindings>
  <netTcpBinding>
    <binding name = “MyBinding">
      <security mode = "Message" />
    </binding>
  </netTcpBinding>
</bindings>
 
WCF安全模式与绑定协议的搭配
WCF身份验证机制 
身份验证机制 与Transfer mode的搭配
与Transport Transfer Mode的搭配
 
直接在配置文件中进行配置就可以:
 
 
 
以上信息数据来源可能是两年前的,没时间去整理新的就先使用了老的数据做简单梳理了。。。如果有任何问题请大家留言帮忙修正!谢谢!
 
 

WCF研究-中篇的更多相关文章

  1. WCF研究-后篇

    最后就对之前的资料进行整理以及在其他博客园的朋友那看到的资料稍微分享一下,这样有助于学习和使用WCF的朋友更好的学习和理解WCF 后期要是看到合适的资料也会再次编辑这个后篇,让我共同进步! 后篇 1. ...

  2. WCF研究-前篇

    前篇 1.从SOA说起 2.什么是WCF 3.WCF通信模型 4.Endpoint与ABC以及元数据    1.SOA (Service Oriented  Architecture) Ø 一种组件架 ...

  3. WCF Cookie处理

    wcf操作cookie看似很简单,如果不对Wcf研究一把还是很难的,基本上无从下手. 这里上一图 上面的结果,岂止是坑爹,简直就是坑爹!!! 废话不多说,直接上代码: cookie读取 var req ...

  4. .NET4.5中WCF中默认生成的basicHttpsBinding的研究

    起因: 使用.net4.5建立了一个空白的WCF服务.默认使用的绑定配置是basicHttpsBinding. 问题发现: 1.用客户端进行服务引用,生成了默认的配置文件,其中绑定配置是basicHt ...

  5. WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇]

    原文:WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇] 在[上篇]中,我们分别站在消息交换和编程的角度介绍了SOAP Fault和FaultException异常.在服务执行过 ...

  6. WCF技术剖析之二十一:WCF基本异常处理模式[中篇]

    原文:WCF技术剖析之二十一:WCF基本异常处理模式[中篇] 通过WCF基本的异常处理模式[上篇], 我们知道了:在默认的情况下,服务端在执行某个服务操作时抛出的异常(在这里指非FaultExcept ...

  7. WCF技术剖析之十七:消息(Message)详解(中篇)

    原文:WCF技术剖析之十七:消息(Message)详解(中篇) [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道<天天山海经>为此录制的节目视频(苏州话)]]在上篇中 ...

  8. 研究WCF并发及处理能力的控制

    WCF 跟并发 性能相关的几个配置:1.系统控制的客户端网络连接并发(如果服务端也需要并发请求的话这个参数也是需要的):          <configuration>          ...

  9. 《WCF技术剖析》博文系列汇总[持续更新中]

    原文:<WCF技术剖析>博文系列汇总[持续更新中] 近半年以来,一直忙于我的第一本WCF专著<WCF技术剖析(卷1)>的写作,一直无暇管理自己的Blog.在<WCF技术剖 ...

随机推荐

  1. hbase 从hbase上读取数据写入到hdfs

    Mapper package cn.hbase.mapreduce.hb2hdfs; import java.io.IOException; import org.apache.hadoop.hbas ...

  2. mysql 8 远程连接注意事项

    1.首先如果你是在windows平台下连接linux下的mysql 那么请确保linux下的防火墙开放3306端口 vi /etc/sysconfig/iptables在配置文件里增加一行 -A RH ...

  3. 更改linux的最大文件描述符限制

    To ensure good server performance, the total number of client connections, database files, and log f ...

  4. ASP.NET Page执行顺序(ASP.NET生命周期)

    此部分说明的生命周期只有部分: ---引用MSDN 阶段 说明 页请求 页请求发生在页生命周期开始之前.用户请求页时,ASP.NET 将确定是否需要分析和编译页(从而开始页的生命周期),或者是否可以在 ...

  5. Delphi png、bmp、gif等图片格式转换成jpg

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  6. 各个版本 Windows 10 系统中自带的 .NET Framework 版本

    原文各个版本 Windows 10 系统中自带的 .NET Framework 版本 Windows 名称 Windows 版本 自带的 .NET Framework 版本 Windows 10 Oc ...

  7. Python入门(good)

    Python缩进和冒号对于Python而言代码缩进是一种语法,Python没有像其他语言一样采用{}或者begin...end分隔代码块,而是采用代码缩进和冒号来区分代码之间的层次. 缩进的空白数量是 ...

  8. 简明Python3教程 16.标准库

    简介 python标准库作为python标准安装的一部分,其自身包含数量庞大的实用模块, 因此熟悉python标准库非常重要,因为很多问题都能利用python标准库快速解决. 下面我们将研究标准库中的 ...

  9. 【狼窝乀野狼】Windows Server 2008 R 配置 Microsoft Server 2008 远程登录连接

    如果你已经了解了,或者你已经经历了,那么此篇文章对你是毫无用处.因为文笔深处未必有自己亲身体验来的真实有效. 闲话少说,直接上菜. 最近脑子“抽筋”,想安装一个服务器来玩玩,那么怎么选择呢?我的PC是 ...

  10. 基于高德地图的描点操作,监听地图缩放,展示合理数量的marker

    原文:基于高德地图的描点操作,监听地图缩放,展示合理数量的marker 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/lx583274568/art ...