WCF(一)基础整理
学习WCF之前,了解下WCF和WebService的区别。
WCF和WebService区别
- Web Service严格来说是行业标准,也就是Web Service 规范,它使用XML扩展标记语言来表示数据。
- WCF 是一个分布式应用的开发框架,属于特定的技术,或者平台。既不是标准也不是规范。Web Service能做的事它几乎都能胜任(采用 basicHttpBinding绑定的服务就是一个Web 服务),跨平台和语言更不是问题
WCF具体的几个优点:
- WCF可以不依赖于IIS。
- WCF可以配置成BasicHttpBinding来兼容(或者说变身成)Web Service。
- WCF可以基于TCP或者MessegeQueue来传输数据。
- WCF的可配置性比WS强,比如安全性。
- WCF可以是有状态的,并支持事务。
- WCF 支持多种通信协议 Http/Https 、TCP/UDP、MSMQ、命名管道、对等网、消息可达性、事务流等。
- WCF 可以与ASP.NET 集成、共享一个上下文(HttpContext)。
- WCF 支持多种消息传输格式 :text,binary,mtom,Json 等。
- WCF 安全性要强:支持对称安全、非对称安全、消息安全、传输安全、SSL 流安全、Windows 流安全等。
- WCF 支持多种会话模式:单向、双向、请求/响应。
- WCF 支持REST 。
- WCF 支持多种格式化方式。DataContractSerializer、XmlSerializer、 DataContractJsonSerializer 等。
- WCF 支持 WAS hosting、Windows 服务 hosting、Self-Hosting、IIS hosting 等。
- WCF 支持多种并发模式:单例、单调、会话 。
WCF中的 "A","B","C"
"A" (Address)-地址:就是告诉别人我wcf在何处,通过一个URI唯一地址标识,通过这个地址我们可以找到我们要调用的WCF服务。
"B"(Binding)-绑定: Binding实现在Client和Service通信的所有底层细节。如:我们在客户端与服务端传输的时候采用的是什么样的编码,XML?Text?二进制?...采用哪种传输协议进行传输,TCP?Http?以及采用什么样的机制解决安全问题,SSL?加密?...
"C"是契约:就是告诉别人我wcf这里有哪些东西, Contract的主要的作用是暴露某个WCF Service所提供的所有有效的方法。
项目开发中常用到的三种绑定:
第一:wsHttpBinding, 这个binding可以认为是webservice的加强版WSE,设计的目的就是用于异构系统的交互(比如java)。
第二:netTcpBinding, 这个binding可以认为是remoting的加强版,设计的目的就是用于不同机器的.net 程序交互,
第三: netMsmqBinding, 这个binding可以认为是msmq的加强版本,设计目的就是脱机环境下不同机器的.net程序交互,确保信息不丢失。
代码实际运用
笔记分享:http://note.youdao.com/share/?id=f245abffbdc09cea7fc8b738e183bec9&type=note#/
原作者博客地址:http://www.cnblogs.com/huangxincheng/archive/2011/10/23/2221845.html
Endpoint(终结点)
服务端配置
<!--Service Web.config-->
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 -->
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="WCFService.User">
<endpoint address="http://localhost/User.svc" binding="basicHttpBinding"
contract="WCFService.IUser" />
</service>
</services> </system.serviceModel>
</configuration>
客户端配置
<!--Client Web.config-->
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<client>
<endpoint address="http://localhost/User.svc" binding="basicHttpBinding" contract="WCFService.IUser" bindingConfiguration="myHttpBinding"/>
</client>
</system.serviceModel>
</configuration>
<!--绑定-->
<bindings>
<wsHttpBinding>
<binding name="myHttpBinding">
<security mode="None">
<message clientCredentialType="Windows" />
</security>
</binding>
</wsHttpBinding>
</bindings>
WCF Demo
数据契约(DataContract)
- 服务契约定义了远程访问对象和可供调用的方法,数据契约则是服务端和客户端之间要传送的自定义数据类型。
- 一旦声明一个类型为DataContract,那么该类型就可以被序列化在服务端和客户端之间传送,如下所示。
namespace WcfTest.Model
{
[DataContract]
public class User
{
[DataMember(Name = "Name")]
public string UserName
{
get;
set;
}
[DataMember]
public int Age
{
get;
set;
}
}
}
服务契约
[ServiceContract]
public interface IService1
{ [OperationContract]
string GetData(int value); [OperationContract]
User GetDataUsingDataContract(User u);
}
创建服务,实现接口
public class Service1 : IService1
{
public string GetData(int value)
{
return string.Format("You entered: {0}", value);
} public User GetDataUsingDataContract(User composite)
{
if (composite == null)
{
throw new ArgumentNullException("composite");
}
if (composite.BoolValue)
{
composite.StringValue += "Suffix";
}
return composite;
}
}
之后可以通过IIS寄宿服务
WCF(一)基础整理的更多相关文章
- 机器学习 —— 基础整理(六)线性判别函数:感知器、松弛算法、Ho-Kashyap算法
这篇总结继续复习分类问题.本文简单整理了以下内容: (一)线性判别函数与广义线性判别函数 (二)感知器 (三)松弛算法 (四)Ho-Kashyap算法 闲话:本篇是本系列[机器学习基础整理]在time ...
- MySQL基础整理(一)之SQL基础(未完成)
大家好,我是浅墨竹染,以下是MySQL基础整理(一)之SQL基础 1.SQL简介 SQL(Structure Query Language)是一种结构化查询语言,是使用关系模型的数据库应用语言. 2. ...
- nutch的一些基础整理
nutch的一些基础整理 原创 2015年03月22日 18:18:01 标签: nutch / 240 编辑 删除 一.关于配置文件: nutch-default.xml:爬虫的默认配置.在${nu ...
- [转帖]nginx基础整理
nginx基础整理 https://www.cnblogs.com/guigujun/p/6588545.html 目录结构如下: Nginx基础知识 Nginx HTTP服务器的特色及优点 Ngin ...
- C#基础整理
元旦整理书架发现一本小册子——<C#精髓>中国出版社2001年出版的,粗略翻了下关于C#的知识点挺全的虽然内容谈得很浅也有很多过时的内容(话说这本书是我在旧书店花5块钱淘的)我保留原有章节 ...
- JAVA基础整理-集合篇(一)
集合作为JAVA的基础知识,本来感觉自己理解的很清楚了,但是在最近的一次面试中还是答得不尽如人意!再次做一下整理,以便加深理解以及随时查阅. 首先,java.util包中三个重要的接口及特点:List ...
- 关于JAVA面向对象基础整理以及个人的理解(适合初学者阅读)
JAVA的基础语法等都跟C有很大的相似之处,所以这里就不多啰嗦了.直接从数组开始. 数组: 1.声明 int [] a; 在声明的过程中,并没有分配空间给数组.我们可以在声明的同时,用new来分配相应 ...
- HTML5游戏开发技术基础整理
随着HTML5标准终于敲定.HTML5将有望成为游戏开发领域的的热门平台. HTML5游戏能够执行于包含iPhone系列和iPad系列在内的计算机.智能手机以及平板电脑上,是眼下跨平台应用开发的最佳实 ...
- js数组基础整理
首页: 主要整理了一下数组中常用的一些基础知识,代码都是自己手敲,有不对的地方希望能指出,目前只有4篇,后续会不断的增加这一板块. 由于少于100字不能发所以把一些最基本的创建数组也写上. // 创建 ...
随机推荐
- 使用CHCA搭建静态博客
[toc] chca是一个使用golang开发的静态博客生成器,简单.方便.快捷,抛弃每次都需要使用命令编译文件,采用文件监听方式编译,作者只需把markdown文件放到配置中的markdown文件夹 ...
- Password
Description Rivest是密码学专家.近日他正在研究一种数列E = {E[1],E[2],--,E[n]}, 且E[1] = E[2] = p(p为一个质数),E[i] = E[i-2]* ...
- 使用MvcPager实现Ajax分页
接触ASP.NET MVC的时间不长,这段时间做东西的时候要用到分页,但是普通的分页用户体验不是很好,所以想实现无刷新的分页. 在网上找了好多例子,但是感觉都封装的不好,不小心发现了Webdiyer. ...
- SpringBoot初识(一)
一.什么是SpringBoot 最近几年,微服务的概念越来越火.而相信大家在搜索微服务时,映入眼帘的首先就是SpringBoot以及SpringCloud.SpringCloud提供的一套完整的微服务 ...
- java自学找工作经历
断断续续的,折腾了7个多月,学完了在网上购买的培训机构J2EE的全套课程.期间各种蛋疼看另一篇博客 http://www.cnblogs.com/work396/p/6791488.html 直接说找 ...
- Vue模板内容
前面的话 如果只使用Vue最基础的声明式渲染的功能,则完全可以把Vue当做一个模板引擎来使用.本文将详细介绍Vue模板内容 概述 Vue.js使用了基于HTML的模板语法,允许声明式地将DOM绑定至底 ...
- 对于JavaScript中this关键字的理解
这是我第二遍学this了,第一遍学的懵懵的.this指哪里都是凭我一个男人的直觉然后控制台输出看看对不对. 刚查了书.博客.视频.理解差不多了.毕竟菜鸡me: 一.首先介绍下什么是this this是 ...
- 从入门到放弃,.net构建博客系统(二):依赖注入
文章目录:<从入门到放弃,.net构建博客系统> 从入门到放弃,.net构建博客系统(一):系统构建 从入门到放弃,.net构建博客系统(二):依赖注入 上一篇中有讲到项目启动时会进行io ...
- HTML中表格
HTML表格 [表格table] 表格用table表示,表格中的每一行tr表示,一行中的每一列用td表示 th表示的是:表头.表头中的文字,默认为加粗居中.th要放在tr中,用于替换掉td. [tab ...
- Java微信公众平台开发之扫码支付模式二
官方文档点击查看 准备工作:已通过微信认证的公众号,域名可以不通过ICP备案借鉴了很多大神的文章,在此先谢过了大体过程:根据固定金额和商品的ID先生成订单,再生成二维码,客户扫一扫付款模式二支付的流程 ...