WCF学习记录(一)
在这里先简单记录下WCF配置的过程,关于WCF详解,下次再做具体描述。
1. Contract及其实现
a.
[ServiceContract(Namespace = "http://www.******.com")]
public interface IHello
{
[OperationContract]
void Hello();
}
b. 如果方法参数是复杂对象,需要加DataMember标签,如:
[ServiceContract(Namespace = "http://www.。。。。。.com")]
public interface IComplexHello
{
[OperationContract]
string Hello(Person personInfo);
} [DataContract(Namespace = "http://www.。。。。t.com")]
public class Person
{
[DataMember]
public int Id { get; set; } [DataMember]
public string Name { get; set; } [DataMember]
public string Title { get; set; }
}
public class HelloService : IHello
{
public void Hello()
{
Console.WriteLine("hello");
}
}
c. 服务实现 CallbackContract
[ServiceContract(Namespace = "http://www.abc.com")]
public interface IHelloCallbackContract
{
[OperationContract(IsOneWay = true)]
void Reply(string responseToGreeting);
} [ServiceContract(Namespace = "http://www.abc.com", CallbackContract = typeof(IHelloCallbackContract))]
public interface IDuplexHello
{
[OperationContract(IsOneWay = true)]
void Hello(string greeting);
}
2. Host 配置
配置文件可以用VS自带的tool创建,Tools->WCF Service Configuration Editor.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="NewBinding0" />
</netTcpBinding>
</bindings>
<services>
<service name="Service.HelloService">
<endpoint address="net.tcp://localhost:5431/HelloService" binding="netTcpBinding"
bindingConfiguration="" contract="Contract.IHello" />
</service>
</services>
</system.serviceModel>
</configuration>
using (var server = new ServiceHost(typeof(HelloService)))
{
server.Open();
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.ReadLine();
}
3. 客户端代理创建
var tcpBinding = new NetTcpBinding();
var endpointAddress = new EndpointAddress("net.tcp://localhost:5431/HelloService");
var channel = new ChannelFactory<IHello>(tcpBinding, endpointAddress);
var proxy = channel.CreateChannel();
proxy.Hello();
Console.WriteLine("Press <ENTER> to exit.");
Console.ReadKey();
如果是实现了CallbackContract,则需要
var context = new InstanceContext(new HelloCallbackService());
var duplexChannel = new DuplexChannelFactory<IDuplexHello>(context, myBinding,endpointAddress);
);
WCF学习记录(一)的更多相关文章
- WCF学习记录
一个demo: http://www.cnblogs.com/iamlilinfeng/p/4083827.html
- WCF学习之旅—第三个示例之五(三十一)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) WCF学习之旅—第三个示例之三(二十九) WCF学习 ...
- WCF学习之旅—TcpTrace工具(二十五)
前面的几篇文章,我们学习了怎么开发WCF应用程序与服务,也学习了如何进行WCF的配置.对于Web Service与WCF服务应用,服务端与客户端的通信是通过收发SOAP Message进行,我们如何有 ...
- WCF 学习篇
写在前面 自从运用了.NET Remoting 之后,就想系统的学习下WCF,因为WCF是对现有分布式通信技术的整合.主要以 <WCF全面解析> 这本书为主,园子的资料和网上资料为辅,来学 ...
- WCF学习之旅—WCF第二个示例(七)
三.创建客户端应用程序 若要创建客户端应用程序,你将另外添加一个项目,添加对该项目的服务引用,配置数据源,并创建一个用户界面以显示服务中的数据. 在第一个步骤中,你将 Windows 窗体项目添加到解 ...
- WCF学习笔记之事务编程
WCF学习笔记之事务编程 一:WCF事务设置 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元: WCF通过System.ServiceModel.TransactionFlowA ...
- WCF学习笔记之传输安全
WCF学习笔记之传输安全 最近学习[WCF全面解析]下册的知识,针对传输安全的内容做一个简单的记录,这边只是简单的记录一些要点:本文的内容均来自[WCF全面解析]下册: WCF的传输安全主要涉及认证. ...
- 每天进步一点--WCF学习笔记
最近买了一本书WCF服务编程,重头再开始了解学习WCF,现将学习记录,以便后来复习,也希望和大家一起进步. WCF用终结点表示一种组成关系,终结点就是地址.契约与绑定的混合品,即 地址(Address ...
- WCF 学习系列——WCF的学习基础
这个系列的博客由WCF4 高级编程学习记录,如有错误请指正. 首先介绍一些概念: SOA: (Service-Oriented Architecture 面向服务架构),一种架构方法,也是一种编程模式 ...
随机推荐
- PyQT实现扩展窗口,更多/隐藏
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVcAAAFeCAIAAAC+XMuHAAAgAElEQVR4nOy9Z5Ac153g2fx0F2fiYi ...
- 如何用ChemDraw绘制化学课件
近年来随着ChemDraw等多媒体技术的迅速发展,多媒体技术越来越多的应用在教学中.学会应用ChemDraw绘制化学分子结构.化学反应式和实验装置的方法,将在有机化学的教学中提供一定的帮助,进一步提高 ...
- js实现二分搜索法
二分搜索法: 也称折半搜索,是一种在有序数组中查找特定元素的搜索算法. 实现步骤: 1. 首先从数组中间开始查找对比,若相等则找到,直接返回中间元素的索引. 2. 若查找值小于中间值,则在小于中间值的 ...
- 机器学习(Machine Learning)
机器学习(Machine Learning)是一门专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能的学科.
- phpcms替换类列表页,内容页,主页
phpcms替换类列表页,内容页,主页 利用phpcms制作企业站,首先要将静态的企业主页替换成后台可编辑的动态主页. 在phpcms/install_package/phpcms/templat ...
- 【BZOJ4864】[BeiJing 2017 Wc]神秘物质 Splay
[BZOJ4864][BeiJing 2017 Wc]神秘物质 Description 21ZZ 年,冬. 小诚退休以后, 不知为何重新燃起了对物理学的兴趣. 他从研究所借了些实验仪器,整天研究各种微 ...
- Android ListView的监听事件
Android开发时,最常用的控件之一就是ListView了,而使用ListView的同时,必然需要对它设置监听器,常用的监听器有这么几个1.OnItemClickListener 2.OnTouch ...
- 谷歌浏览器chrome://inspect/#devices调试webview的页面和控制台布局错乱问题
谷歌浏览器chrome://inspect/#devices调试webview的页面和控制台布局错乱问题 : 谷歌浏览器的版本过高,选择60版本即可: 版本 60.0.3080.5(正式版本)
- MAC OSX安装多个版本的JAVA(jdk jre通用)
MAC自带的jdk1.6是苹果公司自己修改的jdk版本,被广泛应用于各种mac软件,具有不可替代性:同时,java1.7和1.8有时也需要用到.因此,在mac上安装.使用多个版本的java具有重要意义 ...
- Vue.js_础学习之DOM操作
demo说明: 1.{{message}} --“Mustache” 语法(双大括号) 2.v-bind:属性名 ...