95992828九五至尊2

WCF学习之旅882828九五至尊手机版

三月 1st, 2019  |  882828九五至尊手机版

一、前言

     
通过后边2多少个章节的就学,大家掌握了怎么是WCF;WCF中的A、B、C;WCF的传输情势;WCF的夜宿方式;WCF的要命处理。本文综合使用以上知识点,一步一步写一个小的WCF应用程序——书籍管理类别(BookMgr)。

     
那一个示例正是二个非常简单的图书管理种类,效用有:查询、修改、新增、删除(不包括安全、优化等连锁题材)、非常处理。WCF的增加和删除改查和WinForm相差无几。WCF只是把实际“完毕”写在“服务端”,而“调用”放在了“客户端”。

一、前言

     
通过前边二十三个章节的学习,我们精晓了何等是WCF;WCF中的A、B、C;WCF的传导格局;WCF的下榻格局;WCF的拾贰分处理。本文综合运用以上知识点,一步一步写3个小的WCF应用程序——书籍管理体系(BookMgr)。

     
那个示例正是贰个万分简单的书籍管理种类,功用有:查询、修改、新增、删除(不包涵安全、优化等相关题材)、很是处理。WCF的增加和删除改查和WinForm相差无几。WCF只是把实际“完毕”写在“服务端”,而“调用”放在了“客户端”。

二、BookMgr说明

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

2)德姆o的“服务端”提取数据选择初大家相比较简单接受的分支结构进行搭建,分别分为服务层、实体层、数据层。

引用关系如下图所示:

882828九五至尊手机版 1

3)德姆o数据库为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)

非必须输入

人工输入

二、BookMgr说明

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

2)德姆o的“服务端”提取数据选择初专家相比简单接受的道岔结构进行搭建,分别分为服务层、实体层、数据层。

引用关系如下图所示:

882828九五至尊手机版 2

3)德姆o数据库为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:3个类库项目,定义服务协定(ServiceContract),引用System.瑟维斯Mode程序集,见下图。

 882828九五至尊手机版 3

  • BookMgr.Services:四个类库项目,提供对WCF服务的兑现。定义在该类型中的全体WCF服务达成了定义在Contracts中相应的服务协定,所以Services具有对Contracts项目标引用。见下图1,图2。

 882828九五至尊手机版 4

                     图1

882828九五至尊手机版 5

  图2

  • BookMgr.Hosting:二个控制台(Console)应用,达成对定义在瑟维斯s项目中的服务的下榻,该项目必须同时引述Contracts和Services五个品类和System.ServiceMode程序集。见下图1,图2。

 882828九五至尊手机版 6

 图1

882828九五至尊手机版 7

图2

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

 882828九五至尊手机版 8

  • BookMgr.Model:三个指标实体项目,落成对数据库中的表结构举行实体对象构建。通过EF
    6来兑现。见下图。

 882828九五至尊手机版 9

 

  • 最终的门类协会图如下。

 882828九五至尊手机版 10

叁 、成立WCF服务端项目结构

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

 882828九五至尊手机版 11

  • BookMgr.Services:叁个类库项目,提供对WCF服务的贯彻。定义在该品种中的全数WCF服务达成了概念在Contracts中相应的劳动协定,所以Services具有对Contracts项指标引用。见下图1,图2。

 882828九五至尊手机版 12

                     图1

882828九五至尊手机版 13

  图2

  • BookMgr.Hosting:3个控制台(Console)应用,完毕对定义在Services项目中的服务的下榻,该品种必须同时援引Contracts和Services多个品类和System.ServiceMode程序集。见下图1,图2。

 882828九五至尊手机版 14

 图1

882828九五至尊手机版 15

图2

  • BookMgr.Common:化解方案中夏族民共和国有使用的类。见下图。

 882828九五至尊手机版 16

  • BookMgr.Model:3个目的实体项目,完结对数据库中的表结构举行实体对象营造。通过EF
    6来贯彻。见下图。

 882828九五至尊手机版 17

 

  • 末尾的花色协会图如下。

 882828九五至尊手机版 18

四 、创立BookMgr.Contracts项目代码

1)在类型中开创三个IBookService接口文件与SQLError文件。见下图。

882828九五至尊手机版 19 

2)在BookMgr.Contracts中创建2个意味着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”、“艾德it”、“Delete”、“Get,Search”多少个章程,分别对应四个功能的劳动应用程序WCF服务应用程序。笔者在“艾德it”方法中添加了一个自定义万分重临的表征。具体代码如下。

 

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); 

    }
}

882828九五至尊手机版, 

④ 、创造BookMgr.Contracts项目代码

1)在类型中开创二个IBookService接口文件与SQLError文件。见下图。

882828九五至尊手机版 20 

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”、“艾德it”、“Delete”、“Get,Search”多个艺术,分别对应三个效用的劳务应用程序WCF服务应用程序。我在“艾德it”方法中添加了1个自定义卓殊重回的风味。具体代码如下。

 

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); 

    }
}

 

相关文章

Your Comments

近期评论

    功能


    网站地图xml地图