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 ...
随机推荐
- 编写自己的dapper lambda扩展-使用篇
前言 这是针对dapper的一个扩展,支持lambda表达式的写法,链式风格让开发者使用起来更加优雅.直观.现在暂时只有MsSql的扩展,也没有实现事务的写法,将会在后续的版本补充. 这是个人业余的开 ...
- asp.net mvc接收安卓post的json字符串
筛选器: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Syst ...
- Python - 内置函数 选例
概览参见 https://www.runoob.com/python/python-built-in-functions.html 官方文档 https://docs.python.org/3/li ...
- [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
测试mysqld启动mysql server的时候,报如下错误: 2015-12-17 00:46:02 10785 [ERROR] Fatal error: Please read "Se ...
- 705 B. Spider Man
传送门 [http://codeforces.com/contest/705/problem/B] 题意 这题意看原文的真tm难懂Woc,但结合样例就知道大概意思了 两个轮流分环,可以这么理解两个人轮 ...
- 键盘事件(keyup、keydown、keypress)
1.onkeyup 和onkeydown时,keyCode是不区分大小写的,会将小写字母自动转化为大写字母. 2 onkeypress时,区分大小写. 3兼容event.keyCode||event. ...
- Laravel之路由 Route::get/post/any、路由参数、过滤器、命名、子域名、前缀、与模型绑定、抛出 404 错误、控制器
基本路由 应用中的大多数路都会定义在 app/routes.php 文件中.最简单的Laravel路由由URI和闭包回调函数组成. 基本 GET 路由 代码如下: Route::get('/', fu ...
- poj 2762(强连通分量+拓扑排序)
题目链接:http://poj.org/problem?id=2762 题意:给出一个有向图,判断任意的两个顶点(u,v)能否从u到达v,或v到达u,即单连通,输出Yes或No. 分析:对于同一个强连 ...
- mysql学习笔记五 —— MHA
MySQL_MHA ABB(主从复制)-->MHA(实现mysql高可用.读写分离.脚本控制vip飘逸)-->haproxy(对slave集群实现分发,负载均衡)-->keepali ...
- C#實現XML的增刪查改
命名空間:using System.Xml; 1.查找某個節點是否存在: private XmlDocument xmldoc; private string mod="1"; p ...