博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WCF小实例以及三种宿主
阅读量:6005 次
发布时间:2019-06-20

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

最近一直在学习WCF相关知识,下面将通过一个小实例对所学的知识进行简单的回顾;本实例是一个简单三层操作数据库,并且也简单实现的三种宿主(控制台宿主,IIS宿主以及Windows服务宿主)的练习;还包含一个双工的功能,下图为程序所创建分层结构图;

首先了解为这个实例所创建的两张简单表;

USE [TestDb]GO/****** 对象:  Table [dbo].[T_Account]    脚本日期: 07/31/2013 23:09:27 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[T_Account](    [ID] [int] IDENTITY(1,1) NOT NULL,    [Uid] [int] NULL,    [Money] [int] NULL, CONSTRAINT [PK_T_Account] PRIMARY KEY CLUSTERED (    [ID] ASC)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) ON [PRIMARY]GO
USE [TestDb]GO/****** 对象:  Table [dbo].[T_User]    脚本日期: 07/31/2013 23:10:00 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[T_User](    [ID] [int] IDENTITY(1,1) NOT NULL,    [Name] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,    [PassWord] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL) ON [PRIMARY]

 

接下来简单了解每一层的作用以及一些注意事项;源代码后面直接提供下载;

1:Service.DAL 是针对数据库操作的一些类;

2:Service.DbHelp 为数据库操作提供助手

3:Service.HostTest 为服务提供自宿主的测试;一般在编码时会用到;此层还用到批量寄存的知识;

4:Service.Interface 为契约层,定义的相关开放接口;

5:Service.Model为实体层也是数据契约层;

6:Service.ServerDemo 为实现契约的服务内容;若有逻辑都放在这一层;

7:WcfServiceForIIs 为宿主在IIS内容;

8:WebClient 为客户端为Web形式

9:Windows_HostService为宿主要Windows服务里的内容;

10:WindowsClient、WindowsFormsForHostService、WindowsFormsForIIS分别是对三种寄存宿主进行测试的客户端;

 

一:注意点批量寄存宿主;把重点的一些配置一及实现代码贴出;

using System.ServiceModel;using Service.ServerDeom;using Service.Interface;namespace Service.HostTest{    class Program    {        static void Main(string[] args)        {            using (ServiceHostCollection hosts = new ServiceHostCollection())            {                foreach (ServiceHost host in hosts)                {                    host.Opened += (sender, arg) => Console.WriteLine("服务{0}开始监听", (sender as ServiceHost).Description.ServiceType);                }                hosts.Open();                Console.Read();            }        }    }}

 

二:宿主要IIS里的注意内容;

新建一个文本文件然后把它的后缀修改成.svc;并在其头部增加一行调用服务的代码;

<%@ ServiceHost Language="C#" Debug="true" Service="Service.ServerDeom.UserService" %>

其配置如下:

把I宿主部署到IIS里;

 

三:宿主在Windows服务;创建一个Windows服务类库,增加相应的配置以及代码;

using System.ServiceModel;using Service.ServerDeom;using Service.Interface;namespace Windows_HostService{    public partial class Service1 : ServiceBase    {        private ServiceHost serviceHost = null; //寄宿服务对象        public Service1()        {            InitializeComponent();        }        protected override void OnStart(string[] args)        {            try            {                serviceHost = new ServiceHost(typeof(UserService));                if (serviceHost.State != CommunicationState.Opened)                {                    serviceHost.Open();                }            }            catch (Exception ex)            {            }        }        protected override void OnStop()        {        }    }}

然后安装服务文件的一些属性进行设置,比如服务自动重启,服务名称等;另一些图是对服务进行安装;

 

若服务安装成功后会在服务里可以看到如下:

 

客户端调用服务的代码大家就直接看源代码,由于本人也是刚开始学习WCF,实例内容为本人学习所做,若有不足或错误欢迎指正;[]

 

最近有个妹子弄的一个关于扩大眼界跟内含的订阅号,每天都会更新一些深度内容,在这里如果你感兴趣也可以关注一下(嘿对美女跟知识感兴趣),当然可以关注后输入:github 会有我的微信号,如果有问题你也可以在那找到我;当然不感兴趣无视此信息;

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

你可能感兴趣的文章
python - os.path模块
查看>>
文件操作IO
查看>>
ML_Scaling to Huge Datasets & Online Learning
查看>>
zookeeper的安装与使用
查看>>
php基础知识【函数】(5)正则preg
查看>>
C# 接口的作用浅谈举例
查看>>
python字符串内建函数
查看>>
为了工作必须弄死面试算法题
查看>>
用visual studio 2017来调试python
查看>>
Tony's tour(poj1739,男人题之一,插头dp)
查看>>
C# 委托和事件 实现窗体间的通信
查看>>
怎么成为合格的WEB前端开发工程师
查看>>
CF459E Pashmak and Graph (DP?
查看>>
CMD命令行窗口 复制黏贴
查看>>
PHP autoload实践
查看>>
7、开发有状态bean
查看>>
[android] 采用aidl绑定远程服务
查看>>
[学习笔记] 形式幂级数
查看>>
ECMAScript 5
查看>>
MeshCollider双面化脚本
查看>>