七步通使用WCF Service流程
- 格式:doc
- 大小:91.00 KB
- 文档页数:2
WCF客户端动态设置WCF服务器主机什么是WCF?
当用户需要在WCF客户端动态设置WCF服务器主机时,可以使用如下步骤:
1.首先,确定WCF服务器的主机名称或IP地址。
2.然后,在客户端创建一个配置文件,包含一个设置,该设置指定WCF服务器的主机名称或IP地址。
3.接着,在客户端创建一个C#应用程序,该应用程序使用WCF服务器的主机名称或IP地址来调用WCF服务。
4.最后,将应用程序部署到给定配置文件中的WCF服务器主机。
以上就是WCF客户端动态设置WCF服务器主机的基本技术细节。
接下来,我将讨论一些重要概念,例如服务定位、服务发现、服务终结点,以及如何使用这些概念动态设置WCF服务器的主机信息。
1.服务定位
服务定位是WCF中的一种重要概念,用于当客户端无法直接访问WCF 服务器时,客户端可以通过服务定位获取该服务的地址。
服务定位时,可以使用以下两种不同的定位模式:
(1)静态定位:在静态定位模式下。
WCF开发实战系列教程1:创建第一个WCF服务在这个实战中我们将使用DataContract,ServiceContract来构建WCF服务,并使用VS2008内置的“WCFSVCHost”运行我们创建的WCF服务,并使用“WCF测试客户端”来测试我们创建的服务。
在此WCF服务中我们将建立一个关于Book的服务,并实现对Book的添加、删除和检索操作。
第一步:创建“WCF服务库”“文件(F)”->“新建项目(P)...”打开新建项目对话框。
在左侧的“项目类型”中选择“WCF”,然后再在右侧的“模板”中选择“WCF服务库”。
在下面的“名称”文本框中,填写我们要创建的WCF服务库的项目名称“Services”。
《图1》点击确定,会创建出我们的WCF服务库项目,在解决方案中会自动为我们生成两个类文件“IService.cs”和“Service.cs”。
《图2》这两个类文件是两个WCF示例文件,对我们开发没有什么用处,现在我们删掉这两个文件。
第二步:创建Book实体类在“解决方案窗口”中,我们右击Services项目名,选择“添加”,再单击“类”《图3》在弹出的“添加新项”窗口中,选择“类”,并在“名称”文本框中写入项名称“Book.cs”。
《图4》第三步:为Book实体类编写代码using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.Serialization;namespace Services{[DataContract]public class Book{[DataMember]public string BookNO;[DataMember]public string BookName;[DataMember]public decimal BookPrice;}}为了保证此类在WCF调用中能够被序列化,我们在Book类上面加入[DataContract]标签,在每个需要序列化的成员变量上加入[DataMember]标签。
使用VS自带的WCFSVCHost(WCF服务主机)发布WCF服务,时刻开发人员测试使用。
下面我们来看一下如何在IIS中部发布一个WCF服务。
环境是VS 2008 (公司电脑没有安装VS2010)^_^我们从头开始,不写代码,完全的配置,会收获不小。
新建一个WCF 服务库建立一个WCF服务应用程序结果如下删除掉WCF程序中不需要的默认文件,如下图为WcfService1项目添加WcfServiceLibrary1的引用,如下图。
修改声明指示内容,让这个Service.svc文件的后台代码指向我们创建的WCF服务库项目--WcfServiceLibrary1项目中的服务类,改后的代码如下:<%@ ServiceHost Language="C#" Debug="true"Service="WcfServiceLibrary1.Service1" %>Ctrl+Shift+B 编译一下解决方案,配置工具用的反射,先编译才行此时我们的WCF服务站点并不能把WCF服务库中的服务和终结点发布出来,还需要我们对web.config进行一系列的配置工作。
右键我们要配置的Web.Config文件,编辑WCF配置在弹出的服务配置窗口中,把Service1服务指定到WCF服务库的WcfServiceLibrary1.dll 中的WcfServiceLibrary1.Service1服务类上。
再把其中的一个对外终结点的Contract设为WCF服务库的WcfServiceLibrary1.dll中的WcfServiceLibrary1.IService1服务契约上。
这一步是可选的,我们再为此WCF服务站点添加一个终结点,配置如下图下面我们将试着使用不同的终结点与WCF服务进行交互,查看运行情况。
当我们使用IIS5或IIS6发布WCF服务的时候一般只创建Http绑定的终结点,而不能创建使用TCP绑定、管道绑定的终结点。
Windows Service这一块并不复杂,但是注意事项太多了,网上资料也很凌乱,偶尔自己写也会丢三落四的。
所以本文也就产生了,本文不会写复杂的东西,完全以基础应用的需求来写,所以不会对Windows Service写很深入。
本文介绍了如何用C#创建、安装、启动、监控、卸载简单的Windows Service 的内容步骤和注意事项。
一、创建一个Windows Service1)创建Windows Service项目2)对Service重命名将Service1重命名为你服务名称,这里我们命名为ServiceTest。
二、创建服务安装程序1)添加安装程序之后我们可以看到上图,自动为我们创建了ProjectInstaller.cs以及2个安装的组件。
2)修改安装服务名右键serviceInsraller1,选择属性,将ServiceNam e的值改为ServiceTest。
3)修改安装权限右键serviceProcessInsraller1,选择属性,将Account的值改为LocalSystem。
三、写入服务代码1)打开ServiceTest代码右键ServiceTest,选择查看代码。
2)写入Service逻辑添加如下代码:?这里我们的逻辑很简单,启动服务的时候写个日志,关闭的时候再写个日志。
四、创建安装脚本在项目中添加2个文件如下(必须是ANSI 或者UTF-8无BOM 格式):1)安装脚本Install.bat?2)卸载脚本Uninstall.bat?3)安装脚本说明第二行为启动服务。
第三行为设置服务为自动运行。
这2行视服务形式自行选择。
4)脚本调试如果需要查看脚本运行状况,在脚本最后一行加入pause五、在C#中对服务进行控制0)配置目录结构简历一个新WPF项目,叫WindowsServiceTestUI,添加对System.ServiceProcess的引用。
在WindowsServiceTestUI的bin\Debug目录下建立Service目录。
WCF教程首先,让我们了解WCF的核心概念。
WCF服务由三个主要组件构成:契约(Contract)、绑定(Binding)和终结点(Endpoint)。
契约定义了服务要提供的操作和数据类型。
绑定定义了服务与客户端之间的通信方式。
终结点定义了网络地址和协议,用于访问服务。
在WCF中,契约定义了服务的操作和数据类型。
它们可以是简单的方法调用,也可以是消息传递。
契约可以分为服务契约和数据契约。
服务契约包含操作契约和消息契约,操作契约定义了服务要提供的操作,消息契约定义了操作契约的输入和输出消息的报文格式。
数据契约定义了在服务和客户端之间传输的数据类型。
绑定定义了服务与客户端之间的通信方式。
WCF提供了多种不同的绑定选项,可以选择适合应用程序需求的绑定类型。
常见的绑定类型包括基本绑定、TCP绑定、HTTP绑定等。
终结点定义了服务的网络地址和协议,用于访问服务。
WCF支持多种不同的终结点类型,包括基本终结点、TCP终结点、HTTP终结点等。
每个终结点可以指定一个绑定和一个契约。
现在,让我们开始创建第一个WCF服务。
第一步是创建WCF服务项目。
打开Visual Studio,选择“新建项目”,然后选择“WCF服务应用程序”模板。
接下来,给项目起一个名称,并选择创建的位置。
点击确定开始创建项目。
创建了WCF服务项目后,我们需要定义一个契约。
在项目中添加一个新的接口文件,然后在接口中定义服务的操作和数据类型。
例如,我们可以定义一个简单的计算器服务,包含添加和乘法操作。
接下来,我们需要实现契约中定义的操作。
在项目中添加一个新的类文件,并实现接口中定义的操作。
在实现操作时,我们可以使用C#或其他语言来编写逻辑。
接下来是配置WCF服务。
在项目中添加一个新的配置文件,然后在文件中定义服务的终结点和绑定。
我们可以选择使用哪种协议和地址来访问服务。
在配置完成后,我们可以运行WCF服务。
运行服务后,会在本地启动一个宿主进程,等待客户端的请求。
一、开发环境操作系统:Windows 7开发环境:VS2013编程语言:C#IIS版本:10.0.0.0二、添加WCF服务、Internet Information Services(IIS)1、进入“控制面板”,打开“程序和功能”,点击左上角的“启用或关闭Windows功能”后,在“.NET Framework 4.6 高级服务”中的子节点选中“WCF 服务”,如下图所示:2、再找到“Internet Information Services”,同样选中该节点,如下图所示:3、点击“确定”按钮以便安装这些服务与组件,等待完成安装即可。
三、新建一个WCF服务库1、使用VS2015新建一个WCF服务库,并将项目名称改为“MyWCFService”,如下图所示:3、将鼠标移到解决方案资源管理器中项目“MyWCFService”上并右击鼠标,弹出上下文菜单,在菜单中选中“发布”后,弹出下图所示的“发布WCF服务”对话框,如下图所示:在目标位置选择“D:\WCF”,其他按默认,点击“发布”按钮,即可在“D:\WCF”文件夹里生成如下图所示的文件:四、新建一个WCF服务网站1、打开控制面板-管理工具2.点击打开IIS,右键点击网站,新建一个网站,网站名称设置为“MyWCFService”,物理地址选择“D:\WCF”,端口从默认的80改为81,如下图所示:3点击确定后,即新建一个WCF服务网站。
五、服务器程序编辑(编辑完成后需要再次发布)1、点击解决方案下的server1.Cs—GeteData2、在此处添加程序六、创建客户端1、新建一个Windows窗口客户端2、在解决方案下的引用点击右键,添加服务器引用3、地址填http://localhost:81/ MyWCFService点击转到,然后点击确定4、在这里添加客户端程序5、点击启动生成解决方案,完成客户端创建。
wcf体系架构运行流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!WCF(Windows Communication Foundation)是微软推出的用于构建面向服务的应用程序的框架。
WCF入门教程本节中包含的主题旨在帮助您快速了解 Windows Communication Foundation (WCF) 编程体验。
这些主题要根据本主题底部的列表中的顺序完成。
通过学习本教程,您可以初步了解创建 WCF 服务和客户端应用程序所需的步骤。
服务是一种构造,它公开一个或多个终结点,其中每个终结点都公开一项或多项服务操作。
服务的终结点指定下列信息:服务所在的位置;一个绑定,其中包含客户端必须与服务进行通信的信息;一个协定,用于定义服务向其客户端提供的功能。
在完成本教程中的系列主题之后,您将会得到一个正在运行的服务,以及一个可以调用该服务的操作的客户端。
前三个主题描述如何使用协定定义服务,如何实现服务,以及如何在代码中配置服务、承载服务和运行服务。
所创建的服务是自承载服务,客户端和服务都在同一计算机上运行。
服务使用代码而非配置进行配置。
另外还可以将服务承载于 Internet 信息服务 (IIS) 下。
有关如何执行此操作的更多信息,请参见“如何:如何:在 IIS 中承载 WCF 服务”。
也可以在配置文件中配置服务。
有关使用配置文件的更多信息,请参见使用配置文件配置服务。
后三个主题描述如何创建客户端代理,如何配置客户端应用程序,以及如何创建和使用可以访问服务功能的客户端。
服务会发布可以访问的元数据,这些数据定义了客户端应用程序与服务操作进行通信所需的构造。
WCF 提供了一个ServiceModel Metadata Utility Tool (Svcutil.exe)来自动完成以下过程:访问发布的这些元数据,然后使用这些元数据来构造和配置服务的客户端应用程序。
本节中的所有主题均假定您使用 Visual Studio 2008 作为开发环境。
如果您使用的是其他开发环境,请忽略特定于 Visual Studio 的说明。
注意:如果运行的是 Windows Vista,则必须通过在“开始”菜单上右击 Microsoft Visual Studio 2008,然后选择“以管理员身份运行”的方式来启动 Visual Studio。
WCF教程系列(1)-创建第一个WCF程序作为微软技术.net 3.5的三大核心技术之一的WCF虽然没有WPF美丽的外观但是它却是我们开发分布式程序的利器但是目前关于WCF方面的资料相当稀少希望我的这一系列文章可以帮助大家尽快入门下面先介绍一下我的开发环境吧操作系统:windows vista business版本编译器:Visual Studio 2008(英文专业版)WCF的三大核心是ABC也就是A代表Address-where(对象在哪里)B代表Binding-how(通过什么协议取得对象)C代表Contact(契约)-what(定义的对象是什么,如何操纵)其他的理论知识大家可以参见《Programming WCF Service》或者今年3月份刚刚出版的《Essential Windows Commmunication Foundation》现在用In Action的方式来手把手教大家创建第一个WCF程序首先如下图所示创建一个空的解决方案接下来右键点击解决方案HelloWCF选择Add->New Project并选择Console Application模板并选择名为项目名为Host(服务器端)接下来右键点击Host项目选择Add->New Item并选择Webservice模板(文件命名为HelloWCFService)将创建三个文件IHelloWCFService.cs,HelloWCFService.cs以及App.config文件IHelloWCFService.cs代码如下using System.ServiceModel;namespace Host{[ServiceContract]public interface IHelloWCFService{[OperationContract]string HelloWCF(string message);}}而HelloWCFService.cs代码实现如下using System;namespace Host{public class HelloWCFService : IHelloWCFService{public string HelloWCF(string message){return string.Format("你在{0}收到信息:{1}",DateTime.Now,message);}}}App.config文件原则上可以不用改,但是address太长了(默认的为baseAddress=http://localhost:8731/Design_Time_Addresses/Host/HelloWCFS ervice/)缩短为baseAddress=http://localhost:8731/HelloWCFService/并修改Program.cs文件为using System;using System.ServiceModel;namespace Host{class Program{static void Main(string[] args){using(ServiceHost host=newServiceHost(typeof(Host.HelloWCFService))){host.Open();Console.ReadLine();host.Close();}}}}编译并生成Host.exe文件接下来创建客户端程序为Console Application项目Client启动Host.exe文件右键点击Client项目并选择Add Service Reference...并且在Address的TextBox里面输入服务器的地址(就是咱们前面设置的baseaddress地址),并点击Go将得到目标服务器上面的Services,如下图所示这一步见在客户端间接借助SvcUtil.exe文件创建客户端代理(using Client.HelloWCF;)以及配置文件app.config修改客户端的程序如下using System;using Client.HelloWCF;namespace Client{class Program{static void Main(string[] args){HelloWCF.HelloWCFServiceClient proxy=new HelloWCFServiceClient();string str = proxy.HelloWCF("欢迎来到WCF村!");Console.WriteLine(str);Console.ReadLine();}}}就可以获取得到服务器的对象了。
完全不使用配置文件构建和使用 WCF 服务只使用代码而不用配置文件的情况不适合 IIS 为宿主的情况,IIS 宿主必须使用配置文 件配置 WCF 的 ServiceHost. 1、 服务端 1.1. 准备 Contract 和实现 Contract 的服务 很简单的一个 Contract(Interface)和实现这个 Contract(实现这个接口的类)的服 务。
这是 VS2005 中使用 add new item,选 WCF Service 后自动生成的一个模板例子服务 代码。
以下为引用的内容: [ServiceContract()] public interface IService { [OperationContract] string MyOperation1(string myValue); } public class Service : IService { public string MyOperation1(string myValue) { return "Hello: " + myValue; } }1.2. 建立 ServiceHost 一般使用 public ServiceHost(Type serviceType, params Uri[] baseAddresses)构 造方法建立 ServicesHost. 参数:以下为引用的内容: Type serviceType —— 为实现了某些 Contract 的类的类型,为这个服务主机要 host 的服务。
params Uri[] baseAddresses —— 为任意数量的 baseAddress. Uri baseAddress = new Uri("http://localhost:8080/WCFService/Service"); //Instantiate new ServiceHost myServiceHost = new ServiceHost(typeof(Service), baseAddress);一个 ServiceHost 内只能驻留一个 Service 类,但是这个 Service 类可以实现多个 Contract,每个 Contract 都能通过一个或多个(不同的 bind)Endpoint 向客户端暴露。
七步通使用WCF Service流程
Service对于编程人来说并不陌生,学习了很长时间的WCF,我们现在就WCF Service 一起来和大家分析探讨一下。
熟悉Web Service开发的程序员对添加服务引用应该并不陌生。
在创建某个服务的客户端程序时,并不需要从头开始编写客户端的底层通信和交互代码,可以通过输入服务地址来添加服务来让Visual Studio生成客户端代理,这样访问服务就像访问本地组件一样,而不需要去关心通信的细节。
如果创建的客户端程序项目和服务程序项目处在同一个解决方案里(很多开发者在开发服务时,也会同步开发客户端程序),还可以通过Visual Studio来帮助我们“发现(Discovery)”服务,并添加服务引用。
现在开发WCF Service的程序员也可以得益于这些功能了。
如果从WCF Service Library (或者WCF 节点下的Sequential Workflow Service Library 和 State Machine Workflow) 项目模板创建一个项目,那么这些功能就已经具备。
下面我们来看一下如何使用:
1.创建一个客户端程序,可以是一个Windows Console程序。
2.在同一解决方案里添加一个WCF Service Library。
如图:
3.Build WcfServiceLibrary1。
4.右键ConsoleApplication1,在上下文菜单中选择“添加服务引用“(Add Service Reference).
5.此时可以看到一个对话框:
6.如果已经知道服务的地址,可以直接在Address栏输入地址来添加服务,单击“Go”。
可以找到这个地址对应的服务。
7.如果想添加同一个解决方案里的服务,可以先单击“发现”来寻找服务。
找到服务后,选中需要在客户端程序生成引用的服务,然后单击确定,这个时候WcfSvcHost就会自动启动来HOST服务。
几秒以后,可以看到客户端自动生成了服务代理代码:
通过上面的步骤在客户端完成了添加服务引用,现在可以访问服务了,只需要通过下面两行代码就可以调用服务端的一个方法:
1.ServiceReference1.Service1Client client = new ServiceReference1.Serv ice1Client();
2.client.GetData(0);。