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服务,并承载这个服务,让客户端来访问它.下面请 ...
随机推荐
- Linux Howto
1. Customize the Xfce menu http://wiki.xfce.org/howto/customize-menu
- Pro Aspnet MVC 4读书笔记(4) - Working with Razor
Listing 5-1. Creating a Simple Domain Model Class using System; using System.Collections.Generic; us ...
- .NET开发者必备的11款免费工具
原文:.NET开发者必备的11款免费工具 如今,HTML5,jQuery,JavaScript等等这些热门技术,受到了开发者们的强烈追捧,有了这些开发工具也为开发者们减轻了许多负担.本文为开发者介绍了 ...
- Java学习之路:ArrayList用法
1.什么是ArrayList ArrayList是一个动态数组传奇,使用MSDN声明.那是,Array复杂的版本号,它具有以下优点,例如: 动态的添加和降低元素 实现了ICollection和 ...
- Mencached使用
Mencached使用小记 该文章简单记录一下在Windows平台下安装与配置Memcached的方法,Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载. ...
- In Oracle 11g, how to change the order of the results of a sql without “order by”?(转)
oracle 11g 当sql语句中不加order by的时候,好像是按rowid的顺序返回结果的.我也看过一些相关的文档,oracle的官方意思就是不加order by,就不保证输出的顺序. 那么, ...
- .Net中把图片等文件放入DLL中,并在程序中引用
原文:.Net中把图片等文件放入DLL中,并在程序中引用 [摘要] 有时我们需要隐藏程序中的一些资源,比如游戏,过关后才能看到图片,那么图片就必须隐藏起来,否则不用玩这个游戏就可以看到你的图片了,呵呵 ...
- Jenkins + robot framework + git持续集成
安装略过... 一.Jenkins安装插件 进入系统管理—插件管理—可选插件下安装以下插件Git Client Plugin.GIT plugin.GitHub API Plugin.GitHub p ...
- clearfix:after 清除css浮动
在写HTML代码的时候,发现在Firefox等符合W3C标准的浏览器中,如果有一个DIV作为外部容器,内部的DIV如果设置了float样式,则外部的容器DIV因为内部没有clear,导致不能被撑开.看 ...
- 解决Unity3d 4.3 动画系统带来的烦恼
近期有非常多同学问我关于unity3d 4.3更新之后动画系统和曾经不一样了,并且之前用的非常熟练的创建动画和修修改画非常多操作都不好用了,那么在这里和大家分享一下三杀的个人经验,方便大家使用unit ...