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服务,并承载这个服务,让客户端来访问它.下面请 ...
随机推荐
- eclipse环境下如何配置tomcat
eclipse环境下如何配置tomcat 很多初学,尤其自学JavaWeb的朋友首次在eclipse下配置tomcat时,总会有种难下手的感觉,在此,通过图文解说的方法,最直观的向大家演示一遍该配置过 ...
- C和指针 (pointers on C)——第三章——数据
第三章 数据 本章是非常重要的,在特定范围内使用.链接属性.存储类型.const.extern和statickeyword使用.几乎所有的公司是C++在采访的第一个问题. 总结: 具有external ...
- SRM 587 Div II L3:ThreeColorabilityEasyy
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12699 这道题目是第一次在比赛的时候做出来的,开始还想用bru ...
- linux终奌站 信息 格式 更改 /etc/bashrc
gedit /etc/bashrc shell环境下默认的特殊符号意义: \d :代表日期,格式为weekday month date,比如:"Sun Sep 18" \H :完整 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(9)-TT模板的学习
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(9)-TT模板的学习 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2): ...
- WebApi路由及版本控制
public class WebApiControllerSelector : IHttpControllerSelector { private const string NamespaceKey ...
- Entity Framework加载相关实体——延迟加载Lazy Loading、贪婪加载Eager Loading、显示加载Explicit Loading
Entity Framework提供了三种加载相关实体的方法:Lazy Loading,Eager Loading和Explicit Loading.首先我们先来看一下MSDN对三种加载实体方法的定义 ...
- Apache & WebDav 配置(一)
(一)简单Apache服务器的搭建!用于文件de上传.下载.修改.删除! ---------- - Apache 1. 使用最广的 Web 服务器.支持各种脚本(PHP)的执行 2. Mac自带,只需 ...
- ENode 2.0
ENode 2.0 - 介绍一下关于ENode中对Command的调度设计 摘要: CQRS架构,C端的职责是处理从上层发送过来的command.对于单台机器来说,我们如何尽快的处理command呢? ...
- .NET Framework 各版本区别
.NET Framework 各版本区别 .NET Framework 1.1 自1.0版本以来的改进:自带了对mobile asp .net控件的支持.这在1.0版本是以附加功能方式实现的,现在已经 ...