博客
关于我
WCF学习之旅—第三个示例之一(二十七)
阅读量:407 次
发布时间:2019-03-06

本文共 2712 字,大约阅读时间需要 9 分钟。

一、前言

      通过前面二十几个章节的学习,我们知道了什么是WCF;WCF中的A、B、C;WCF的传输模式;WCF的寄宿方式;WCF的异常处理。本文综合应用以上知识点,一步一步写一个小的WCF应用程序——书籍管理系统(BookMgr)。

      这个示例就是一个非常简单的书籍管理系统,功能有:查询、修改、新增、删除(不包括安全、优化等相关问题)、异常处理。WCF的增删改查和WinForm相差无几。WCF只是把具体“实现”写在“服务端”,而“调用”放在了“客户端”。

二、BookMgr说明

1)Demo的 “服务端”以本机控制台应用程序为宿主,“客户端”以WinForm项目为例。

2)Demo的“服务端”提取数据采用初学者比较容易接受的分层结构进行搭建,分别分为服务层、实体层、数据层。

引用关系如下图所示:

3)Demo数据库为SqlServer,表为Books(sql语句在下载的压缩包中“初始化脚本.sql”),表结构如下所示:

字段名

列名

数据类型

约束

生成方式

书籍编号

BookID

int

主键,必须输入

自增

书名

Name

nvarchar(200)

必须输入

人工输入

类别

Category

nvarchar(50)

必须输入

人工输入

出版数量

Numberofcopies

int

必须输入

人工输入

作者ID

AuthorID

int

必须输入

人工输入

价格

Price

Decimal(18,2)

必须输入

人工输入

出版日期

PublishDate

datetime

必须输入

人工输入

评级

Rating

nvarchar(5)

非必须输入

人工输入

三、创建WCF服务端项目结构

  • BookMgr.Contracts一个类库项目,定义服务协定(Service Contract),引用System.ServiceMode程序集,见下图。

 

  • BookMgr.Services一个类库项目,提供对WCF服务的实现。定义在该项目中的所有WCF服务实现了定义在Contracts中相应的服务协定,所以Services具有对Contracts项目的引用。见下图1,图2。

 

                     图1

  图2

  • BookMgr.Hosting一个控制台(Console)应用,实现对定义在Services项目中的服务的寄宿,该项目须要同时引用Contracts和Services两个项目和System.ServiceMode程序集。见下图1,图2。

 

 图1

图2

  • BookMgr.Common:解决方案中公共使用的类。见下图。

 

  • BookMgr.Model一个对象实体项目,实现对数据库中的表结构进行实体对象构建。通过EF 6来实现。见下图。

 

 

  • 最终的项目结构图如下。

 

四、创建BookMgr.Contracts项目代码

1)在项目中创建一个 IBookService接口文件与SQLError文件。见下图。

 

2)在BookMgr.Contracts中创建一个表示Fault异常的类SQLError.cs。代码如下。

using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;using System.Text;using System.Threading.Tasks; namespace BookMgr.Contracts{    [DataContract]    public class SQLError    {        private string _operation;        private string _errorMessage;        public SQLError(string operation, string errorMessage)        {            this._operation = operation;            this._errorMessage = errorMessage;        }        [DataMember]        public string Operation        {            get { return _operation; }            set { _operation = value; }        }         [DataMember]        public string ErrorMessage        {            get { return _errorMessage; }            set { _errorMessage = value; }        }    }}

 

3)在BookMgr.Contracts中IBookService.cs接口文件。并分别创建增、删、改、查、”Add”、“Edit”、“Delete”、“Get,Search”五个方法,分别对应五个功能的服务应用程序WCF服务应用程序。我在“Edit”方法中添加了一个自定义异常返回的特性。具体代码如下。

 

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace BookMgr.Contracts{    public interface IBookService{  [OperationContract]         string Add(string bookInfo);  [OperationContract]        [FaultContract(typeof(SQLError))]        string Edit(string bookInfo);  [OperationContract]        string Get(string bookId);  [OperationContract]         string Delete(string bookInfo);  [OperationContract]        string Search(string Category, string searchString);     }}

 

转载地址:http://lkqkz.baihongyu.com/

你可能感兴趣的文章
调试vs2019代码的流程
查看>>
bcolz的新操作
查看>>
delete对象时会自动调用类的析构函数
查看>>
POD类型
查看>>
const与常量,傻傻分不清楚~
查看>>
Head First设计模式——迭代器模式
查看>>
MongoDB版本及存储引擎区别
查看>>
cmp命令
查看>>
Linux 磁盘管理(df fu fdisk mkfs mount)
查看>>
jQuery的事件绑定与触发 - 学习笔记
查看>>
Linux上TCP的几个内核参数调优
查看>>
记一次讲故事机器人的开发-我有故事,让机器人来读
查看>>
seo 回忆录百度基本概念(一)
查看>>
kettle 执行 kjb 临时文件夹 /tmp permission denied 问题
查看>>
netcore中使用session
查看>>
Android 开发学习进程0.25 自定义控件
查看>>
多媒体文件格式全解说(下)--图片
查看>>
淘宝WAP版小BUG分析
查看>>
asp.net打印网页后自动关闭网页【无需插件】
查看>>
【Maven】POM基本概念
查看>>