wcf之四代码发布服务

Wcf之四(代码创建服务及客户端)

简述

在开发WCF程序时,如何选择一个适合的绑定对于消息传输的可靠性,传输模式是否跨进程、主机、网络,传输模式的支持、安全性、性能等方面有着重要的影响。

这里列举些


绑定名称


用途描述


版本


basicHttpBinding


支持基于WS-I Basic Profile 1.1规范的Web Service,主要支持早期的Web服务。


3.0/3.5


wsHttpBinding


基于WS*的高级Web Service


3.0/3.5


wsDualHttpBinding


支持双工的Web Service


3.0/3.5


webHttpBinding


支持基于REST/POX的服务,使用XML和JSON序列化


3.0/3.5


netTcpBinding


.net程序间的通信,类似于.net Remoting技术


3.0/3.5


netNamedPipeBinding


单个或多个.net系统间的本机通信


3.0/3.5


netMsmqBinding


使用微软消息队列的异步通信


3.0/3.5


netTcpPeerBinding


用于构建P2P网络应用程序的绑定


3.0/3.5


msmqIntegrationBinding


通过使用MSMQ的队列对应用程序收发消息的绑定


3.0/3.5


wsFederationHttpBinding


用于基于WS*的高级Web Service,使用统一身份验证


3.0/3.5

代码部署

服务端

接口实现(这里的接口和签名用的一样就不做重复了)这里通过winform形式部署

 class ServiceFunction:ClassLibrary.myInterface

    {

       public string getServiceTime()

       {

           return DateTime.Now.ToString();

       }

}

服务端的服务部署

ServiceHost host = null;

       private void btnOpen_Click(object sender, EventArgs e)

       {

           host = new ServiceHost(typeof(WcfService2.ServiceFunction));//创建服务

           //绑定协议

          NetTcpBinding tcp=new NetTcpBinding();

           //绑定地址

          string address="net.tcp://localhost:3200/hello";

           //端定义

           host.AddServiceEndpoint(typeof(ClassLibrary.myInterface),tcp,address);

           host.Opened += delegate{ lbState.Text = "服务开启";};

           host.Open();

       }

       private void btnClose_Click(object sender, EventArgs e)

       {

           if (host.State != CommunicationState.Closed)

           {

                host.Close();

                lbState.Text = "服务已经关闭";

           }

       }

客户端调用

服务启动后调用方法

NetTcpBinding bind = new NetTcpBinding();//绑定协议

           EndpointAddress address = newEndpointAddress("net.tcp://localhost:3200/hello");//短点地址

           ChannelFactory<ClassLibrary.myInterface> factory = newChannelFactory<myInterface>(bind,address);//工程通道

           ClassLibrary.myInterface myObject=factory.CreateChannel();//创建服务方法

           string servTime = myObject.getServiceTime();//调用服务方法

           MessageBox.Show(servTime);

总结

这里使用代码发布服务和客户端代码。

时间: 2024-08-29 12:13:54

wcf之四代码发布服务的相关文章

C# WCF发布服务的元数据的方式

发布服务元数据的方式有两种:一是基于HTTP-GET协议提供元数据,它是一种绝大多数平台都能支持的简单text-based协议:另一种是元数据交换终结点. 1.基于HTTP-GET协议 <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services> <service name="HelloW

WCF初探-13:WCF客户端为双工服务创建回调对象

前言: 在WCF初探-5:WCF消息交换模式之双工通讯(Duplex)博文中,我讲解了双工通信服务的一个应用场景,即订阅和发布模式,这一篇,我将通过一个消息发送的例子讲解一下WCF客户端如何为双工服务创建回调对象. 双工服务指定一个回调协定,客户端应用程序必须实现该协定以便提供一个该服务能够根据协定要求调用的回调对象.虽然回调对象不是完整的服务(例如,您无法使用回调对象启动一个通道),但是为了实现和配置,这些回调对象可以被视为一种服务. 双工服务的客户端必须: 实现一个回调协定类. 创建回调协定

自动化代码发布系统实现

日常运维问题 在我日常运维工作中,代码发布可能是最普遍的一项工作之一,尤其是网页代码的更新,碎片化发布需求非常频繁.在前期开发人员比较少时,还可以由自己来上服务器通过脚本来发布代码.但随着公司项目的增多,更多的开发人员加入到公司,发布代码需求开始增多,这就占用了我大部分时间,经常的被打断其它工作来发布代码,非常地不爽,然后开始想解决方法. 尝试解决问题 当然,发布代码肯定是运维的职责之一了,但频繁的发布导致运维大部分时间浪费在重复的操作上,非常的不值得.基于此,开始限制代码发布频率,要求把不是很

手游公司运维之利用Rundeck自动化运维工具和Shell脚本构建测试环境代码发布平台和生产环境代码发布平台

在做手游运维工作之前,我接触的代码发布都是常规的软件发布,有固定的发布周期.之前工作的那个外企有严格的发布周期,一年中的所有发布计划都是由Release Manager来控制,每次发布之前都需要做一些准备工作,如填写发布表单,上传发布需要的资源文件,联系发布过程中的相关人员,如开发和测试.最后在公司内部开发的发布平台上按照指定的时间点击鼠标对一个集群内的几台主机或全部主机进行代码发布.这个发布平台还是基于rsync服务实现的.虽然每个星期都有各种服务的发布,但是整个发布流程是可以控制的,并且发布

WCF大文件传输服务

由于项目需要,自己写一个基于WCF的大文件传输服务雏形.觉得有一定的参考价值,因此放在网上分享. 目前版本为v1.1特点如下: 1.文件传输端口为18650 2.上传和下载文件 3.支持获取文件传输状态(未开始.传输中.传输完成.出现错误) 4.支持获取文件传输进度(范围0~1) 5.支持获取文件传输速度速度(按文件传输速度大小 自动切换 KB/s 和 MB/s显示) 项目解决方案如下: 服务断包括WCF寄宿的控制台服务和Windows 服务以及文件传输服务核心 公共包括一些帮助类(文件HASH

WCF获取当前发布目录的绝对路径

一.在WCF中获取当前服务发布目录的绝对路径 1.string a = System.Web.Hosting.HostingEnvironment.MapPath("~"); 当没有开启ASP.NET相容模式时(aspNetCompatibilityEnabled="true"),WCF不支持HttpContext, HttpApplication,会报HttpContext.Current == null发生错误,开启aspNetCompatibilityEnab

WCF初探-11:WCF客户端异步调用服务

前言: 在上一篇WCF初探-10:WCF客户端调用服务 中,我详细介绍了WCF客户端调用服务的方法,但是,这些操作都是同步进行的.有时我们需要长时间处理应用程序并得到返回结果,但又不想影响程序后面代码部分的执行,这时我们就需要考虑使用异步的方式来调用服务.注意这里的异步是完全针对客户端而言的,与WCF服务契约的方法是否异步无关,也就是在不改变操作契约的情况下,我们可以用同步或者异步的方式调用WCF服务. WCF客户端异步调用服务方式: 通过代理类异步调用服务.就需要通过使用事件驱动的异步调用模型

linux网络编程学习笔记之四 -----多线程并发服务端

相对于使用进程实现并发,用线程的实现更加轻量.每个线程都是独立的逻辑流.线程是CPU上独立调度运行的最小单位,而进程是资源分配的单位.当然这是在微内核的操作系统上说的,简言之这种操作系统的内核是只提供最基本的OS服务,更多参看点击打开链接 每个线程有它自己的线程上下文,包括一个唯一的线程ID(linux上实现为unsigned long),栈,栈指针,程序计数器.通用目的寄存器和条件码,还有自己的信号掩码和优先级.同一个进程里的线程共享这个进程的整个虚拟地址空间,包括可执行的程序文本.程序的全局

WCF实现多个服务

本篇体验使用WCF实现2个服务.一个使用HTTP通讯,一个使用TCP通讯. 大致思路是: → 创建WCF服务以及接口,写2个接口→ 实现2个接口→ 为WCF创建一个控制台项目的宿主,配置App.config,开启宿主→ 创建一个Web客户端,创建对WCF服务的引用→ 在Web客户端,调用WCF服务,即调用WCF的代理类的实例方法 打开Visual Studio 2013,创建一个类库项目. 在类库下创建一个名称为"HelloServie"的WCF服务.随即,在项目中多了WCF相关的组件