WCF(1)----服务创建
来源:互联网 发布:淘宝客冻结资金申诉 编辑:程序博客网 时间:2024/05/04 22:28
本例中,我们通过一个关于Camera的服务为例子来说明WCF的开发流程,该服务比较简单,只是用来实现对Camera的添加,枚举,删除等操作。
详细步骤如下:
1:创建一个WCF Service Library类型的工程,名为WcfCameraService:
创建完成之后,工程结构目录如下,VS会自动生成IService.cs和Service.cs两个文件:
2:工程右键[Add]--->[Class], 添加一个Camera类
Camera.cs代码如下:
一个类型只有声明为[DataContract](数据契约), 该类型才可以被序列化并在服务器端和客户端传输,另外,需要传输的成员都要声明成[DataMember]
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Runtime.Serialization;namespace WcfCameraService{ [DataContract] public class Camera { [DataMember] public string CameraID; [DataMember] public String CameraLocation; [DataMember] public String CameraInterfaceType; }}
4:服务接口(IService1.cs)代码如下:
接口类前要加[ServiceContract]标签,每个成员前要加[OperationContract]标签,以保证外部调用可以访问到该方法。
using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;using System.ServiceModel;using System.Text;namespace WcfCameraService{ // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together. [ServiceContract] public interface IService1 { [OperationContract] void AddCamera(Camera camera); [OperationContract] List<Camera> ScanAllCameras(); [OperationContract] void DeleteCameras(string id); // TODO: Add your service operations here }}
5:接口服务实现类(Service1.cs)代码如下:
该类实现接口的真正功能
using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;using System.ServiceModel;using System.Text;namespace WcfCameraService{ // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in both code and config file together. [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] public class Service1 : IService1 { List<Camera> _Cameras = new List<Camera>(); public void AddCamera(Camera camera) { _Cameras.Add(camera); } public List<Camera> ScanAllCameras() { return _Cameras; } public void DeleteCameras(string id) { Camera camera = _Cameras.Find(p => p.CameraID == id); _Cameras.Remove(camera); } }}
6:按F5运行程序,会跳出如下两个界面:
首先托盘下出现如下图标,系统会运行一个WCF服务器,来为我们的WCF提供托管载体。
另外一个就是如下所示的WCF Test Client,我们看到系统已将我们的IService1加载了进来,并且对外提供了AddCamera(),ScanAllCameras(),DeleteCamera()三个可调用方法。
7:双击ScanAllCameras(), 点击[Invoke] , 由于还没有添加任何Camera的信息,我们可以看到下框的状态栏中空空如也:
8:双击AddCamera(),并添加Camera1,后点击[Invoke]。
9:再双击AddCamera(),继续添加Camera2的信息:
10:现在到了检验结果的时候了,双击ScanAllCameras(), 点击[Invoke]之后,我们看到如下信息:
我们看到之前添加的两个Camera的信息已经显示出来,说明该服务已成功运行。
- WCF(1)----服务创建
- WCF系列: 创建一个WCF服务
- WCF(一)创建WCF服务
- 【WCF】-快速创建一个WCF服务库
- 使用WCF创建Web服务
- 使用WCF创建Web服务
- 创建第一个WCF服务
- 创建第一个WCF服务
- WCF服务创建实例说明
- WCF服务创建与发布
- WCF服务创建与调用
- 创建第一个WCF服务
- WCF开发实战系列一:创建第一个WCF服务
- WCF开发实战系列一:创建第一个WCF服务
- WCF开发实战系列一:创建第一个WCF服务
- WCF开发实战系列一:创建第一个WCF服务
- WCF开发实战系列一:创建第一个WCF服务
- WCF开发实战系列一:创建第一个WCF服务
- 第59天的交易(2013-6-21)(-100)(-108.1)
- 【直击美国云计算】为什么eBay用燃料电池来驱动他的犹他州数据中心
- Leetcode Word Search
- 常用排序算法
- 理解内存(1)
- WCF(1)----服务创建
- 直击美国云计算】Facebook分享数据中心新网络架构Fabric
- adb shell 命令详解
- java调用163邮箱发送邮件
- Linux 操作系统安装篇
- 毕业参加工作一年之总结
- 【直击美国云计算】细数云技术领域成王败寇:从SaaS到SDN
- Android ViewPager动态加载数据
- ruby中load,require以及include,extend的区别