------------------------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总结笔记的更多相关文章

  1. WCF学习笔记之事务编程

    WCF学习笔记之事务编程 一:WCF事务设置 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元: WCF通过System.ServiceModel.TransactionFlowA ...

  2. WCF学习笔记之传输安全

    WCF学习笔记之传输安全 最近学习[WCF全面解析]下册的知识,针对传输安全的内容做一个简单的记录,这边只是简单的记录一些要点:本文的内容均来自[WCF全面解析]下册: WCF的传输安全主要涉及认证. ...

  3. WCF 学习笔记之异常处理

    WCF 学习笔记之异常处理 1:WCF异常在配置文件 <configuration> <system.serviceModel> <behaviors> <s ...

  4. WCF 学习笔记之双工实现

    WCF 学习笔记之双工实现 其中 Client 和Service为控制台程序 Service.Interface为类库 首先了解契约Interface两个接口 using System.Service ...

  5. WCF学习笔记(2)——使用IIS承载WCF服务

    通过前面的笔记我们知道WCF服务是不能独立存在,必须“寄宿”于其他的应用程序中,承载WCF服务的应用程序我们称之为“宿主”.WCF的多种可选宿主,其中比较常见的就是承载于IIS服务中,在这里我们来学习 ...

  6. c# 动态调用WCF方法笔记!

    //动态调用wcf方法 string url = "http://localhost:54379/ServiceWCF.svc"; IDoubleService proxy = W ...

  7. WCF学习笔记一

    Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台. 整合了原有的windows通讯的 . ...

  8. WCF学习笔记1--发布使用配置文件的服务

    关于WCF的入门网上资料很多,可以参考蒋金楠老师的博客http://www.cnblogs.com/artech/archive/2007/02/26/656901.html,我是从这篇博客开始学习的 ...

  9. WCF学习笔记之消息交换模式

    在WCF通信中,有三种消息交换模式,OneWay(单向模式), Request/Reponse(请求回复模式), Duplex(双工通信模式)这三种通信方式.下面对这三种消息交换模式进行讲解. 1. ...

  10. WCF学习笔记之WCF初识

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

随机推荐

  1. Oracle性能优化学习笔记WHERE在连接顺序的条款

     ORACLE自下而上分析顺序WHERE条款,根据这一原理,表之间的连接必须写在其它WHERE先决条件, 这些条件可以过滤掉要被写入记录的最大数目WHERE在条款结束. 比如:        (低效, ...

  2. 纯CSS3彩色边线3D立体按钮制作教程

    原文:纯CSS3彩色边线3D立体按钮制作教程 今天我们来分享一款利用纯CSS3实现的3D按钮,这款按钮的一个特点是有彩色的边线,这让整个按钮显得比较多姿多彩,没那么枯燥无趣.本文不仅可以让大家看到演示 ...

  3. Python 对Twitter中指定话题的Tweet基本元素的频谱分析

    CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-7-9 @author: guaguastd @name: en ...

  4. hadoop得知;datajoin;chain署名;combine()

    hadoop一种简化机制来管理job和control作业之间的非线性依赖,job对象mapreduce表明. job该目的是通过使实例化jobconf对象的构造函数的工作落实. x.addDeopen ...

  5. 开源 java CMS - FreeCMS2.3员

    原文地址:http://javaz.cn/site/javaz/site_study/info/2015/28375.html​ 项目地址:http://www.freeteam.cn/ 会员注冊 打 ...

  6. 随记一个C的时间加减

    //Centos6 x86_64 #include <time.h>#include <stdio.h>#include <string.h>#include &l ...

  7. iOS 学习

    iOS 学习资料 (适合初学者) 本文资料来源于GitHub 一.视频教程(英文) Developing iOS 7 Apps for iPhone and iPad斯坦福开放教程之一, 课程主要讲解 ...

  8. 萧墙HTML5手机发展之路(51)——jquerymobile在提高页面访问速度

    正在使用jQuery Mobile开发时间可以选择单页模板和多页模板,在单页模板时从一个页面跳转到另一个页面时从需要server要求.用户会感到轻微的停顿. 使用多页模板,为了改善网页之间跳跃的流畅, ...

  9. Backup and Recovery Strategies1

    2.1.Data Recovery Strategy Determines Backup Strategy 在设计备份策略.如若数据恢复需求和数据恢复战略启动.每种类型的数据恢复需要你采取相应的备份类 ...

  10. Robotium源码分析之Instrumentation进阶

    在分析Robotium的运行原理之前,我们有必要先搞清楚Instrumentation的一些相关知识点,因为Robotium就是基于Instrumentation而开发出来的一套自动化测试框架.鉴于之 ...