在本示例开始之前,让我们先来了解一下什么是wcf? wcf有哪些特点?

wcf是一个面向服务编程的综合分层架构。该架构的项层为服务模型层。

使用户用最少的时间和精力建立自己的软件产品和外界通信的模型。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案。且能与已有系统兼容写作。

简单概括就是:一组数据通信的应用程序开发接口。

好啦,wcf就介绍这么多,需更深入的了解请百度或自己去用了之后就会深有体会。下面开始我们的示例。

在这个示例中, 我们将学习如何创建WCF服务,如何测试WCF服务,如何发布wcf服务到IIS上。如何在客户端调用WCF服务。

本示例教程结合EF6.0,以及连接SqlServer的一个Dome,好啦,下面开始正式讲解。

第一步:创建“WCF服务应用程序”

点击确定,会创建出我们的WCF项目,在解决方案中会自动为我们生成两个类文件“IService.cs”和“Service.cs”。如下图所示。↓

第二步:我们先创建个类库用来存放实体模型。

在“解决方案窗口”中,我们右击解决方案,选择“添加”,新建项目,再单击“类库”确定。

插入一步:创建服务需要安装数据库连接,鼠标右键点击解决方案,选择 “管理解决方案的nuget程序包”弹出如下界面,在“浏览”选项卡的搜索框中输入“sql” 选择第一个安装,需要选择项目中的 “类库(本例中为calsslibray1)” 和 “服务(本例中为wcfservice4)”  如下图:

数据库连接

同样,鼠标右键点击解决方案,选择 “管理解决方案的nuget程序包”,弹出如下界面,选择安装EntityFramework,勾选所列出的类,本项目只有Classlibrary1和WcfService3两个类,都要勾选。

第三步:创建EF实体模型。

为了方便管理,我们先创建个文件夹用来存放实体类。

然后右击文件夹→添加→新建项。如下图所示:↓

然后我们左边菜单选择:数据→ADO.NET实体数据模型。如下图所示。↓

点击添加之后,我们会看到有几个选择, 分别代表:数据库优先、模型优先、代码优先。

本Dome选择来自数据库的CodeFist,也就是代表:代码优先。如下图所示。↓

点击下一步之后,再点击“新建连接”,然后测试连接是否成功,再选择数据库。如下图所示。

然后再勾选自己所需要生成的实体表,如下图所示。

插入: 这里若出现选择是否包含敏感字符时, 选择“是”, app.config和web.config 里面最后一行会出现密码,若选择否,则不出现密码。

然后你就会看到EntityModel这个文件夹下会多出两个类文件,由于我只选择了一个表生成的,所以是两个类文件。如下图所示。

然后我们点开“Model1.cs”,首先看到的是一个构造函数, 底下是我们所选表生成的一些代码,这些我们都不需要关心,都是自动生成的。这个构造函数后面的“name=Model1”就是对应的连接字符串。我们打开App.config便可知。然后把此连接字符串复制粘贴到wcf服务应用程序中的Web.config里面(必须有的一步)。 如下图所示。

第五步:定义契约,我们开始写服务。

首先我们在“IService1”中定义锲约。注意:每个锲约上都要加上[OperationContract]标记。如下图所示。

然后我们在“Service1.svc”中实现我们所有定义的契约。如下图所示。

到这一步,我们的服务已经完成了。现在我们开始本地测试服务是否有问题,如没问题再发布到IIS上去。

测试步骤:右击“Service1.svc” 选择在浏览器中查看,如下图所示,说明服务没问题。然后我们再用wcf测试客户端测试一下我们做的一些操作是否正确。

如上图所示,只能说明我们的服务写的没问题,但并不确定服务中所写的一些代码访问数据是否正确。那么我们就在服务端利用WCF测试客户端调用我们所写的代码是否正确。

打开服务端步骤:首先,我们将“Service1.svc”设为起始页,然后把整个服务应用程序设为启动项目,最后F5运行。如下图所示。

如上图,我们测试Del,传入值再调用,如果没报错且左下角提示服务调用完成,说明已经成功调用并执行我们所写的代码功能。

原文:https://blog.csdn.net/zhoubangbang1/article/details/79082788

WCF服务创建到发布(SqlServer版)的更多相关文章

  1. WCF服务创建与使用(双工模式)

    昨天发布了<WCF服务创建与使用(请求应答模式)>,今天继续学习与强化在双工模式下WCF服务创建与使用,步骤与代码如下. 第一步,定义服务契约(Service Contract),注意Se ...

  2. wcf服务与web发布时无法访问 几种解决办法

    1   如果wcf服务与web发布在同一iis目录下,没有跨域的问题   但发布前要修改 ServiceReferences.ClientConfig 把wcf服务地址改为你发布后的iis的ip地址( ...

  3. WCF服务创建与使用(请求应答模式)

    不说废话,直接上代码.以下服务创建是在独立的WCF类库中,若采用WCF应程程序,定义及创建服务代码均相同,但文件名不同,是CalculatorService.svc 第一步,定义服务契约(Servic ...

  4. WCF尝试创建与发布IIS(含问题描述)

    技术贴技术贴就直接讲技术来,客套的话我也不多说了,各位看官包涵包涵. 跟着园内高手一步一步发布成功,欣喜若狂之际,发个贴纪念纪念一下. 废话不多说,不正确之处,还望大家积极指出,共同进步.哈哈~~~ ...

  5. 1 学习wcf 编写简单的WCF服务流程 并发布在IIS上

    学习笔记 学习大佬的博客 https://www.cnblogs.com/iamlilinfeng/archive/2012/09/25/2700049.html  写一遍加深印象 图片看不清楚的 可 ...

  6. WCF服务创建与抛出强类型SOAP Fault

    原创地址:http://www.cnblogs.com/jfzhu/p/4060666.html 转载请注明出处 前面的文章<WCF服务的异常消息>中介绍过,如果WCF Service发生 ...

  7. wcf 服务创建,配置,测试

    一.WCF创建: 常规的创建WCF服务是通过SOAP传输的,很多网站开发人员想放弃使用XML而使用JSON,这个时候可以参照:http://www.cnblogs.com/zhili/p/WCFRes ...

  8. wcf服务编程(第3版)文摘

    第1章 wcf基础 什么是wcf: System.ServiceModel.dll 服务 服务的执行边界: proxy 地址:http/https,tcp,ipc,peer newwork,msmq, ...

  9. Windows服务创建及发布

    二.创建Windows Service 1.新建一个Windows Service,并将项目名称改为“MyWindowsService”,如下图所示: 2.在解决方案资源管理器内将Service1.c ...

随机推荐

  1. .NetCore之接口缓存

    1.问题:我们平时做开发的时候肯定都有用到缓存这个功能,一般写法是在需要的业务代码里读取缓存.判断是否存在.不存在则读取数据库再设置缓存这样一个步骤.但是如果我们有很多地方业务都有用到缓存,我们就需要 ...

  2. WebGL之延迟着色

    什么是延迟着色(Deferred Shading)?它是相对于正常使用的正向着色(Forward Shading)而言的,正向着色的工作模式:遍历光源,获取光照条件,接着遍历物体,获取物体的几何数据, ...

  3. Redis基础知识补充及持久化、备份介绍

    Redis知识补充 在上一篇博客<Redis基础认识及常用命令使用(一)–技术流ken>中已经介绍了redis的一些基础知识,以及常用命令的使用,本篇博客将补充一些基础知识以及redis持 ...

  4. archaius(3) 配置管理器

    基于上一节介绍的配置源,我们来继续了解配置管理器.配置源只是抽象了配置的获取来源,配置管理器是基于配置源的基础上对这些配置项进行管理.配置管理器的主要功能是将配置从目标位置加载到内存中,并且管理内存配 ...

  5. synchronized和lock的作用与对比

    一.synchronized的作用 synchronized是java中的一个关键字,用于线程同步.1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象 ...

  6. Spring学习(一)初识Spring

    什么是Spring 定义:Spring 是一个轻量级的 DI / IoC 和 AOP 容器的开源框架,目的为了简化java开发. DI:注入 IOC:控制反转 AOP:面向切面编程 原理:利用了jav ...

  7. dedecmsv5.7sp1远程文件包含漏洞审计

    dedecms5.7 sp1版本存在远程文件包含漏洞,在此记录审计复现漏洞过程. 漏洞在/install/index.php(index.php.bak)文件中,漏洞起因是$$符号使用不当,导致变量覆 ...

  8. 破晓行动----带你总结JVM的知识大全(二)

    JVM运行时内存 + 垃圾回收与算法

  9. 使用AOP和Validator技术对项目接口中的参数进行非空等校验

    javax.validation.Validator基础知识补充: validator用来校验注解的生效,如: @NotBlank(message = "地址名不能为空") pri ...

  10. Python-对迭代器进行切片操作-itertools模块

    案例: 对于某个文件,我只想读取到其中100~200行之间的内容,是否可以通过切片的方式进行读取? 我想: f = open() f[100:200] 可行? 如何解决这个问题? 方法1: 全部读取到 ...