WCF总结笔记
------------------------windowform承载服务步骤:
(1)定义契约:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
namespace IWpf
{
[ServiceContract]
public interface IUser
{
[OperationContract]
string GetName();
[OperationContract]
int GetAge();
}
}
(2)承载契约;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using IWpf;
namespace wpf承载服务
{
public class wpf:IUser
{
#region IUser 成员
public string GetName()
{
return "郭泽峰";
}
public int GetAge()
{
return 13;
}
#endregion
}
}
appconfig:配置契约:
?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service name="wpf承载服务.wpf" behaviorConfiguration ="behaviorone">
<host>
<baseAddresses>
<add baseAddress="http://localhost:1234/wpf"/>
</baseAddresses>
</host>
<endpoint address="" binding="basicHttpBinding" contract="IWpf.IUser">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="behaviorone">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
-------------启动服务;
using System.ServiceModel;
namespace wpf承载服务
{
public partial class Form1 : Form
{
ServiceHost host;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
host = new ServiceHost(typeof(wpf));
host.Open();
}
private void button2_Click(object sender, EventArgs e)
{
host.Close();
}
}
}
-----------------使用契约;
ServiceReference1.UserClient u = new ServiceReference1.UserClient();
MessageBox.Show(u.GetName());
---------------------------------------------------------------------------完成;
--------------
---------------通过编程来承载和使用服务;
--承载服务
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
ServiceHost host = null;
private void button1_Click(object sender, EventArgs e)
{
host = new ServiceHost(typeof(wpf));
//定义绑定协议:
NetTcpBinding tcpBinding = new NetTcpBinding();
//定义地址:
string s = "net.tcp://localhost:3200/gg";//路径随便了;
host.AddServiceEndpoint(typeof(IWpf.IUser), tcpBinding, s);
host.Opened += delegate { label1.Text = "已经打开"; };
host.Closed += delegate { label1.Text = "已经关闭"; };
host.Open();
}
private void button2_Click(object sender, EventArgs e)
{
if (host.State == CommunicationState.Opened)
{
host.Close();
}
}
-----------------应用客户端:
//绑定形式:
NetTcpBinding bind = new NetTcpBinding();
//地址
EndpointAddress address = new EndpointAddress("net.tcp://localhost:3200/gg");
//通道工厂
ChannelFactory<IWpf.IUser> factory = new ChannelFactory<IWpf.IUser>(bind, address);
IWpf.IUser user = factory.CreateChannel();
string s = user.GetName();
MessageBox.Show(s);
-----------------通信方式:单工(无需等待方法名void,且参数部位out;ref;);请求响应(需要等待);双攻;
单工:[OperationContract(IsOneWay=true)]即可;
-------
---SOA:属于一种基于组件的架构模型;它可以根据需求对松散耦合的粗粒度应用组件
进行分布式部署,组合和使用。
SOA的四个特性:
1.每个服务必须有明确的服务边界;
2.服务是独立的;
3.采用标准的契约定义和通信协议;
4.服务是自解释的;
//地址:
http://dddd:5050/;
net.tcp:dec:3030/myservice;
net.msmq:localhost/mymsmq;
-----------------------------------------
soa的好处:在用户层和一万五层添加了一层服务层,将
力度比较小的互操作的对象进一步封装,形成粗粒度
组件,从而达到一种松耦合的状态;
--------------------------------------------
tcp:二进制;效率远远高于http;多用于内网传输;
http:soap;
---------------------------------------------
wcf:
1.面向服务;
2.松耦合;
3,可交互;
4.整合性;
-----------------------------------------
remoting和wevservice区别:
webservice:不限平台,http协议,基于xml;效率低;无状态;
remoting:仅限。net平台,网络传输协议(不一定是http),二进制;效率很高;有状态;
remoting是.net 中用来跨越machine, process, appdomain 进行方法调用的技术,
------------messagecontract:控制soap协议的工具;
WCF总结笔记的更多相关文章
- WCF学习笔记之事务编程
WCF学习笔记之事务编程 一:WCF事务设置 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元: WCF通过System.ServiceModel.TransactionFlowA ...
- WCF学习笔记之传输安全
WCF学习笔记之传输安全 最近学习[WCF全面解析]下册的知识,针对传输安全的内容做一个简单的记录,这边只是简单的记录一些要点:本文的内容均来自[WCF全面解析]下册: WCF的传输安全主要涉及认证. ...
- WCF 学习笔记之异常处理
WCF 学习笔记之异常处理 1:WCF异常在配置文件 <configuration> <system.serviceModel> <behaviors> <s ...
- WCF 学习笔记之双工实现
WCF 学习笔记之双工实现 其中 Client 和Service为控制台程序 Service.Interface为类库 首先了解契约Interface两个接口 using System.Service ...
- WCF学习笔记(2)——使用IIS承载WCF服务
通过前面的笔记我们知道WCF服务是不能独立存在,必须“寄宿”于其他的应用程序中,承载WCF服务的应用程序我们称之为“宿主”.WCF的多种可选宿主,其中比较常见的就是承载于IIS服务中,在这里我们来学习 ...
- c# 动态调用WCF方法笔记!
//动态调用wcf方法 string url = "http://localhost:54379/ServiceWCF.svc"; IDoubleService proxy = W ...
- WCF学习笔记一
Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台. 整合了原有的windows通讯的 . ...
- WCF学习笔记1--发布使用配置文件的服务
关于WCF的入门网上资料很多,可以参考蒋金楠老师的博客http://www.cnblogs.com/artech/archive/2007/02/26/656901.html,我是从这篇博客开始学习的 ...
- WCF学习笔记之消息交换模式
在WCF通信中,有三种消息交换模式,OneWay(单向模式), Request/Reponse(请求回复模式), Duplex(双工通信模式)这三种通信方式.下面对这三种消息交换模式进行讲解. 1. ...
- WCF学习笔记之WCF初识
这篇博客将介绍WCF的最基础内容,让我们对WCF有一个基本的认识.后续的博客中将会介绍WCF其他方面内容.本篇博客将通过一个简单的例子,介绍如何创建WCF服务,并承载这个服务,让客户端来访问它.下面请 ...
随机推荐
- 左右GNU Linux企业加密文件系统 eCryptfs简介
/********************************************************************* * Author : Samson * Date ...
- Service与Activity与交流AIDL
深圳旅游月.终于回来了,做了很多个月,这些天来的东西会慢慢总结出来的.今天,我们正在谈论的Service小东西:沟通. 固定通信的做法比较,基本上按照写模板可以实现. 1.Service与Activi ...
- zoj 3823 Excavator Contest(结构体)
题目链接:zoj 3823 Excavator Contest 题目大意:一个人开着挖掘机要在N*N的格子上面移动.要求走全然部的格子.而且转完次数要至少为n*(n-1) - 1次, 而且终点和起点必 ...
- DirectX 9 UI三种设计学习笔记:文章4章Introducing DirectInput+文章5章Wrapping Direct3D
本文从哈利_创.转载请注明出处.有问题欢迎联系本人! 邮箱:2024958085@qq.com 上一期的地址: DX 9 UI设计学习笔记之二 第4章 Introducin ...
- Oracle语句优化1
Oracle语句优化1 优化就是选择最有效的方法来执行SQL语句.Oracle优化器选择它认为最有效的 方法来执行SQL语句. 1. IS NULL和IS NOT ...
- Cocos2d-x v3.0 正式版 如何创建一个项目,TestCpp执行
欢迎增加 Cocos2d-x 交流群: 193411763 转载请注明原文出处:http://blog.csdn.net/u012945598/article/details/24456579 首先到 ...
- nodejs安装:nodejs入门
nodejs开篇 前几天看到好多关于node 的帖子没有单独说明node安装的文章~ 特发此篇 总结一下平时在windows上nodejs的安装... 1.js来搞前后端分离是nodejs的一大特点, ...
- JS日期时间选择器
本文介绍一种日期和时间选择器的使用方法.此选择器由jqueryUI实现,支持精确到毫秒的时间选择. 此选择器项目地址为http://trentrichardson.com/examples/timep ...
- JavaScript--基于对象的脚本语言学习笔记(三)
事件处理器 1.一个数据校验表单的例程 <html> <head> <title>js练习</title> <meta http-equiv=&q ...
- SD3.0四个协议解读
前面的文章提到过SD卡主要分为两个操作模式,一是初始化和识别操作模式.还有一种就是这篇文章须要分析的传输数据模式啦. 传输数据模式: 传输数据模式主要有六种状态,各自是Stand-by状态.Trans ...