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服务,并承载这个服务,让客户端来访问它.下面请 ...
随机推荐
- shell脚本操作数据库
#!/bin/bash HOST_NAME="localhost" PORT=3306 USERNAME="root" PASSWORD="root& ...
- SpringMVC上传下载
springmvc上传和下载功能 写在一个简单的示例在线基准码 1.导入的必要性jar包:ant.jar.commons-fileupload.jar.connom-io.jar. 当然spring ...
- Codeforces Round #266 (Div. 2)-C,D
C - Number of Ways 直接暴力从前往后寻找.假设找到1/3sum的位置,那么标记++.找到2/3的位置,总数加上标记数. #include<stdio.h> #includ ...
- rman(上)
CHANGE命令更改备份和副本的状态 1.change backupset 100 unavailable CATALOG命令是用来备份的碎片和复制信息到RMAN数据库 1.息增加到RMAN ...
- Nyoj 城市平乱(图论)
描述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维护着M个城市的治安,这M个城市分别编号从1到M. 现在,小工军师告诉南将军,第K号城市发生了暴乱,南将军从各个部队都 ...
- hdu Lowest Bit
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1196 大水题 lowbit 的应用 (可以取出一个数二进制中的最后一个1.树状数组常用, ...
- C#将Excel数据导入数据库(MySQL或Sql Server)
最近一直很忙,很久没写博客了.今天给大家讲解一下如何用C#将Excel数据导入Excel,同时在文章最后附上如何用sqlserver和mysql工具导入数据. 导入过程大致分为两步: 1.将excel ...
- 【翻译】C#和.NET核心快速参考
原文:[翻译]C#和.NET核心快速参考 PS:在网上看到的一篇C#总结,英文的,总结的还可以,都是基础知识,翻译给大家学习.文章结尾有英文原版.发布地址:http://www.cnblogs.com ...
- C_数据结构
线性结构 线性结构的特点是:在数据元素的飞空有限集中,(1)存在唯一的一个被称作“第一个”的数据元素:(2) 存在唯一一个被称做“最后一个”的数据元素:(3)除第一个外,集合中的每一个元素都只有一个前 ...
- 观察者模式的程序实例C++
一.什么是观察者模式 Observer模式也叫观察者模式,是由GoF提出的23种软件设计模式的一种.Observer模式是行为模式之中的一个,它的作用是当一个对象的状态发生变化时,可以自己主动通知其它 ...