WCF快速搭建Demo

ps:本Demo只是演示如何快速建立WCF

1.首先完成IBLL、BLL、Model层的搭建,由于数据访问层不是重点,WCF搭建才是主要内容,所以本Demo略去数据访问层。

新建BLL类库项目,添加UserInfo类如下:

 namespace Model
{
[DataContract]
public class UserInfo
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
}
}

当实体对象作为网络传输时需要被序列化,所以注意以下几点:

  1.不给任何标记将会做XML映射,所有公有属性/字段都会被序列化

  2.[Serializable]标记会将所有可读写字段序列化

  3.[DataContract]和[DataMember]联合使用来标记被序列化的字段

接下来,新建IBLL类库项目,添加IUserInfoService类作为接口契约,代码如下:

 namespace IBLL
{
[ServiceContract]
public interface IUserInfoService
{
[OperationContract]
UserInfo GetUser(int id);
}
}

ps:需要操作的方法一定要记得打上标签!

同样,新建BLL类库项目,添加UserInfoService类,代码如下(只为测试WCF搭建):

 namespace BLL
{
public class UserInfoService:IUserInfoService
{
public UserInfo GetUser(int id)
{
return new UserInfo() { Id = id, Name = "test" };
}
}
}

2.搭建WCFHost(宿主)

新建一个控制台项目,在配置文件app.config中的configuration节点下添加:

<system.serviceModel>
<services>
<service name="BLL.UserInfoService" behaviorConfiguration="behaviorConfiguration">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000/"/>
</baseAddresses>
</host>
<endpoint address="" binding="basicHttpBinding" contract="IBLL.IUserInfoService"></endpoint>
</service>
</services> <behaviors>
<serviceBehaviors>
<behavior name="behaviorConfiguration">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>

注意以下几点:

  1.因为是本地测试,所以baseAddress填写了本地的地址,这个可以根据实际修改。

   2.service节点的name属性要修改为BLL层具体服务类的“命名空间+类名”。

  3.endpoint节点的contract属性要修改为IBLL层具体服务类接口的“命名空间+接口名”。

主程序代码中添加:

 using (ServiceHost host = new ServiceHost(typeof(UserInfoService)))
{
host.Open();
Console.WriteLine("服务已启动,按任意键中止...");
Console.ReadKey();
host.Close();
}

ps:typeof()中换成要调用的服务类。

在项目上右键选择“在文件资源管理器中打开文件夹”,找到可执行程序WCFService.exe,右键选择“以管理员身份运行”。

3.最后一步,就是来测试我们的WCF服务是否搭建成功了,新建一个winform窗体项目WCFClient,在项目右键,添加服务引用,在地址栏输入   http://localhost:8000/  (配置文件中填写的baseAddress)。在该程序中调用刚刚搭建好的WCF服务:

 UserInfoServiceClient client = new UserInfoServiceClient();
UserInfo u = client.GetUser();
MessageBox.Show(u.Id + "-" + u.Name);

运行后,弹出消息,表示WCF服务搭建成功!

WCF快速搭建Demo的更多相关文章

  1. 快速搭建一个直播Demo

    缘由 最近帮朋友看一个直播网站的源码,发现这份直播源码借助 阿里云 .腾讯云这些大公司提供的SDK 可以非常方便的搭建一个直播网站.下面我们来给大家讲解下如何借助 腾讯云 我们搭建一个简易的 直播示例 ...

  2. Electron入门笔记(一)-自己快速搭建一个app demo

    Electron学习-快速搭建app demo 作者: 狐狸家的鱼 Github: 八至 一.安装Node 1.从node官网下载 ,最好安装.msi后缀名的文件,新手可以查看安装教程进行安装. 2. ...

  3. 快速搭建一个SSM框架demo

    我之所以写一个快速搭建的demo,主要想做一些容器的demo,所以为了方便大家,所以一切从简,简单的3层架构 先用mysql的ddl,后期不上oracle的ddl ; -- ------------- ...

  4. springboot+dubbo基于zookeeper快速搭建一个demo

    由于小编是在windows环境下搭建的,故该示例均为在windows下操作,这里只是提供一个快速搭建思路,linux操作也基本上差不多. 首先本示例的dubbo是基于zookeeper发布订阅消息的, ...

  5. Centos系统下Lamp环境的快速搭建(超详细,转)

    lamp的搭建对于初学者是一件很头疼的事情,所以借此机会把自己当初快速搭建linux+apche+mysql+php的方法分享大家希望能到你. 工具/原料 虚拟机及Centos操作系统 Linux基本 ...

  6. 拿nodejs快速搭建简单Oauth认证和restful API server攻略

    拿nodejs快速搭建简单Oauth认证和restful API server攻略:http://blog.csdn.net/zhaoweitco/article/details/21708955 最 ...

  7. GAE+bottle+jinja2+beaker快速开发demo - Python,GAE - language - ITeye论坛

    GAE+bottle+jinja2+beaker快速开发demo - Python,GAE - language - ITeye论坛     :GAE+bottle+jinja2+beaker快速开发 ...

  8. logstash+elasticsearch+kibana快速搭建日志平台

    使用logstash+elasticsearch+kibana快速搭建日志平台   日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有: 根据关键字查询日 ...

  9. Linux下快速搭建php开发环境

    php开发环境快速搭建 一.Linux下快速搭建php开发环境 1.安装XAMPP for Linux XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包,使用XA ...

随机推荐

  1. 分布式全文搜索引擎ElasticSearch

    一 什么是 ElasticSearch Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎.当然 Elas ...

  2. .NetCore实践篇:分布式监控系统zipkin踩坑之路(二)

    前言 <牧神记>有一句话说的好,破心中神.当不再对分布式,微服务,CLR畏惧迷茫的时候,你就破了心中神. zipkin复习 第一篇: .Net架构篇:思考如何设计一款实用的分布式监控系统? ...

  3. KVM虚拟机管理——资源调整

    1. 概述2. 计算资源调整2.1 调整处理器配置2.2 调整内存配置3. 存储资源调整3.1 根分区扩展3.2 添加磁盘4. 网络资源调整 1. 概述 KVM在使用过程中,会涉及到计算(CPU,内存 ...

  4. json中获取key值

    <script type="text/javascript"> getJson('age'); function getJson(key){ var jsonObj={ ...

  5. GlusterFS分布式存储学习笔记

    分布式文件系统 分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源并不直接与本地节点相连,而是分布于计算网络中的一个或者多个节点的计算机上.目前意义上的分布 ...

  6. BAT大厂面试流程剖析

    在当今互联网中,虽然互联网行业从业者众多,不断崛起的互联网公司也会很多,但如BAT等大厂,仍然是很多同学想要进入的企业.那么本篇文章将会为大家很直白的讲解大厂的面试流程以及侧重点. 首先闲聊一下,为什 ...

  7. linux下配置squid 服务器,最简单使用方式

    https://blog.csdn.net/unixtech/article/details/53185297 squid 查看命中率 https://blog.csdn.net/cnbird2008 ...

  8. 腾讯QQ的商业模式

    近期听到许多关于腾讯QQ的报道,然后想到之前自己在QQ上遇到的一些问题,一瞬间感觉大脑的所有想法喷涌而出. 以前总觉得QQ是个很好的平台,我们可以通过QQ和自己的亲人朋友爱人聊天,有时候还可以在自己的 ...

  9. Linux内核分析— —扒开系统调用的三层皮(下)

    课程主要内容有三点: 在MenuOS中通过添加代码增加自定义的系统调用命令 使用gdb跟踪调试内核 简单分析system_call代码了解系统调用在内核代码中的处理过程 实验——分析system_ca ...

  10. mysql三级连查,左连

    需求:比如:学校里班级,班级里有学生.利用左连查出所有的信息 select <include refid="Base_Column_List_Left_Join"/>f ...