------------------------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. 【iOS开展-50】使用它来创建一个新的类的实现代码包,因此,不自觉地练习简单MVC实验,附带动画

    接下来说说代码封装最后一个个案. 最后一种情况看:[iOS开展-48]九宫格案例:自己主动布局.字典转模型运用.id和instancetype差别.xib反复视图运用及与nib关系 (1)代码封装的原 ...

  2. (大数据工程师学习路径)第四步 SQL基础课程----创建数据库并插入数据

    一.练习内容 1.新建数据库 首先,我们创建一个数据库,给它一个名字,比如“mysql_shiyan”,以后的几次实验也是对mysql_shiyan这个数据库进行操作. 语句格式为“CREATE DA ...

  3. (大数据工程师学习路径)第一步 Linux 基础入门----Linux 下软件安装

    介绍 介绍 Ubuntu 下软件安装的几种方式,及 apt,dpkg 工具的使用. 一.Linux 上的软件安装 通常 Linux 上的软件安装主要有三种方式: 在线安装 从磁盘安装deb软件包 从二 ...

  4. OpenGL于MFC使用汇总(三)——离屏渲染

    有时直接创建OpenGL形式不适合,或者干脆不同意然后创建一个表单,正如我现在这个项目,创建窗体不显示,它仅限于主框架.而我只是ActiveX里做一些相关工作,那仅仅能用到OpenGL的离屏渲染技术了 ...

  5. BZOJ 1901 Zju2112 Dynamic Rankings

    树阵主席设置树.维护间隔动态K大. .. ZOJ到空间太小,太大,仅仅能到BZOJ上交 1901: Zju2112 Dynamic Rankings Time Limit: 10 Sec  Memor ...

  6. MVC 快速开发框架

    ASP.NET MVC 快速开发框架之 SqlSugar+SyntacticSugar+JQWidgetsSugar+jqwidgets jqwidgets.js: 是一个功能完整的框架,它具有专业的 ...

  7. C面试题

    1.sizeof()和strlen()使用? 答案: 1.从功能定义,strlen功能,要查找字符串的长度,sizeof功能是用来寻找指定的变量或变量类型的存储器占用 尺寸: 2.sizeof是运算符 ...

  8. zoj 2402 - Lenny&#39;s Lucky Lotto Lists

    称号:序列,在前面的每个元件的至少两倍,最大值至n.问:长l船舶有许多这样的. 分析:dp,LIS类别似事. 状态:f(i,j)结束数字为j且长度为i的序列的个数.有转移方程: F[ i ][ j ] ...

  9. GCD(1222)Wolf and Rabbit

    Problem Description There is a hill with n holes around. The holes are signed from 0 to n-1. A rabbi ...

  10. 在VirtualBox安装OS X 10.10

    下面将指导介绍了如何引入自由和强大VirtualBox安装在虚拟机上OS X Yosemite 10.10 法律免责声明:本指南旨在说明如何在定期购买的苹果电脑上创建一个虚拟机执行真正的Mac OS ...