------------------------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. 重写IHttpHandler,实现前后端分离

    再说重写IHttpHandler,实现前后端分离   aspx页面第一次加载时,HttpHandler 里面是如何编译指定页面的呢?Framework提供了编译页面的API如下: BuildManag ...

  2. 在ASP.NET2.0里打印网页指定的内容(比如打印网页里的一个Table)

    原文:在ASP.NET2.0里打印网页指定的内容(比如打印网页里的一个Table) 打印指定内容: <html> <head> <script   type= " ...

  3. D - Cow Ski Area

    Description Farmer John's cousin, Farmer Ron, who lives in the mountains of Colorado, has recently t ...

  4. asp.net学习之再论sqlDataSource

    原文:asp.net学习之再论sqlDataSource 本节从上一节没有阐述的几个方面,再讨论一下SqlDataSource的用法及注意的事项.     上一节的链接地址如下:http://www. ...

  5. nyoj 破门锁(水题)

    Time Limit: 1000ms Memory Limit: 128000KB 64-bit integer IO format:      Java class name: Submit Sta ...

  6. OJ提交题目中的语言选项里G++与C++的区别(转载)

    原文链接:http://blog.polossk.com/201405/c-plus-plus-g-plus-plus G++? 首先更正一个概念,C++是一门计算机编程语言,G++不是语言,是一款编 ...

  7. vi/vim编辑器的基本操作

    vi/vim编辑器的基本操作 Contents 1. 工具准备(下载gvim) 2. vi/vim基本入门 2.1. 安装 2.2. 基本使用 3. vi/vim基本命令表 1 工具准备(下载gvim ...

  8. 阿里云CentOS 6.5 设备、执行Docker容器和步骤的方法

    ssh阿里云计算落地ssh username@ip uname -a 查看linux内核版本号,由于Docker推荐使用3.8内核以上,设版本号低可能会不稳定,因此须要选用yum方式升级内核. 导入 ...

  9. xdebug的安装和配置方法

    首先让php错误显示,仅仅须要改动php.ini其中的2条指令,把 displayerrors和htmlerrors都设置为On,例如以下所看到的 html_errors = On        di ...

  10. Linux中加入用户、删除用户时新手可能遇到的问题

    Linux中加入用户.删除用户时新手可能遇到的问题  1.创建新用户后切换到新用户:No directory, logging in with HOME=/     加入用户     #sudo us ...