WCF快速搭建Demo
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的更多相关文章
- 快速搭建一个直播Demo
缘由 最近帮朋友看一个直播网站的源码,发现这份直播源码借助 阿里云 .腾讯云这些大公司提供的SDK 可以非常方便的搭建一个直播网站.下面我们来给大家讲解下如何借助 腾讯云 我们搭建一个简易的 直播示例 ...
- Electron入门笔记(一)-自己快速搭建一个app demo
Electron学习-快速搭建app demo 作者: 狐狸家的鱼 Github: 八至 一.安装Node 1.从node官网下载 ,最好安装.msi后缀名的文件,新手可以查看安装教程进行安装. 2. ...
- 快速搭建一个SSM框架demo
我之所以写一个快速搭建的demo,主要想做一些容器的demo,所以为了方便大家,所以一切从简,简单的3层架构 先用mysql的ddl,后期不上oracle的ddl ; -- ------------- ...
- springboot+dubbo基于zookeeper快速搭建一个demo
由于小编是在windows环境下搭建的,故该示例均为在windows下操作,这里只是提供一个快速搭建思路,linux操作也基本上差不多. 首先本示例的dubbo是基于zookeeper发布订阅消息的, ...
- Centos系统下Lamp环境的快速搭建(超详细,转)
lamp的搭建对于初学者是一件很头疼的事情,所以借此机会把自己当初快速搭建linux+apche+mysql+php的方法分享大家希望能到你. 工具/原料 虚拟机及Centos操作系统 Linux基本 ...
- 拿nodejs快速搭建简单Oauth认证和restful API server攻略
拿nodejs快速搭建简单Oauth认证和restful API server攻略:http://blog.csdn.net/zhaoweitco/article/details/21708955 最 ...
- GAE+bottle+jinja2+beaker快速开发demo - Python,GAE - language - ITeye论坛
GAE+bottle+jinja2+beaker快速开发demo - Python,GAE - language - ITeye论坛 :GAE+bottle+jinja2+beaker快速开发 ...
- logstash+elasticsearch+kibana快速搭建日志平台
使用logstash+elasticsearch+kibana快速搭建日志平台 日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有: 根据关键字查询日 ...
- Linux下快速搭建php开发环境
php开发环境快速搭建 一.Linux下快速搭建php开发环境 1.安装XAMPP for Linux XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包,使用XA ...
随机推荐
- 懒人小工具:T4生成实体类Model,Insert,Select,Delete以及导出Excel的方法
由于最近公司在用webform开发ERP,用到大量重复机械的代码,之前写了篇文章,懒人小工具:自动生成Model,Insert,Select,Delete以及导出Excel的方法,但是有人觉得这种方法 ...
- Mvc_ActionResult返回值
//ViewResult 表示HTML的页面内容 //EmptyResult 表示空白的页面内容 //RedirectResult 表示定位到另外一个URL //JsonResult 表示可以运用到A ...
- 解决 webpack-dev-server 不能自动刷新的问题
原文发表于我的技术博客 此文主要帮助大家解决 webpack-dev-server 启动后修改源文件浏览器不能自动刷新的问题. 原文发表于我的技术博客 1. webpack 不能热加载的问题 主要的问 ...
- TRIO-basic指令--九九乘法表demo
在路上闲的没事,想到之前自己用别的语言实现乘法口诀表,于是来了兴趣用TRIO-basic试一下,挺简单的一段代码,大家看看就好. ' TRIO-basic '实现乘法口诀表 定义两个整型的局部变量 D ...
- main函数是必须的吗
研究实验4 研究过程: 问题引出:C语言编程非得用主函数main吗,不用是否可以? 对此问题进行研究,用tc.exe书写代码如下: 图1 没有main函数的c程序 对其进行编译,链接发现,编译阶段可 ...
- 个人博客作业Week7(阅读文章,心得体会)
Alpha阶段结束了,内心可以说是五味杂陈.不是说我们的产品拿不上台面那般差劲,复杂的心绪主要来源于和别的队的比较,别的队才刚刚发布没多久访问量和注册量就破百了,并且还发起了找bug送红包的活动.可能 ...
- Week 1 工程文档
计算器——工程文档 一.输入与格式 1.数据规模 本文档的输入基于如下的要求: (1)既然是小学生,我们假设他们不会计算超过10亿的数字. (2)既然是出考试题,那么也不会出超过10亿道题目. 也就是 ...
- 20135327郭皓--Linux内核分析第八周 进程的切换和系统的一般执行过程
第八周 进程的切换和系统的一般执行过程 一.进程切换的关键代码switch_to分析 1.进程调度与进程调度的时机分析 不同类型的进程有不同的调度需求 第一种分类: I/O-bound:频繁进行I/O ...
- 使用Junit进行单元测试
使用Junit进行单元测试 一.目的和要求 JUnit是一款由Erich Gamma(<设计模式>的作者)和Kent Beck(极限编程的提出者)编写的开源的回归测试框架,供Java编码人 ...
- guthub第一次作业连接及心得体会
https://github.com/12wangmin/ GitHub的本意是旨在成为一种开放的软件协作平台,但它目前已成为一个巨大的综合性的平台,其作用远远超过单纯地开源代码.它现在在艺术家.建筑 ...