.net WCF简单实例
最近看到网上招聘有许多都需要WCF技术的人员,我之前一直没接触过这个东西,以后工作中难免会遇到,所谓笨鸟先飞,于是我就一探究竟,便有了这边文章。由于是初学WCF没有深入研究其原理,只是写了一个demo留着以后,如果哪里写的不对希望大佬们能指出批评。个人认为WCF类似于Web Services(类似,肯定是有区别的,至于啥区别可以搜搜资料),不多说了,接下来看我简单实现的demo吧。
WCF服务用于两个不同项目中的调用,在这里我举例项目A调用WCF服务实现查询数据功能。
第一步:创建数据库,有点数据能展示出来就行。
Create database SalesLibrary --创建库 Create table SalesVolume --创建表
(
Id int,
Num int,
Product varchar(20)
)

第二步:创建存储过程(可以没有此步,只是方便查询)。
create proc proc_ShowSalesVolume
as
select * from dbo.SalesVolume
第三步:创建一个WCF解决方案。


删除掉默认的Iservice1和Service1,创建自己的WCF服务名称。

第四步:编写WCF服务。
在IsalesVolumeOperation接口中写一个现实数据的方法ShowSalesVolume,一定要写上[OperationContract],如若不写外界无法对其进行调用。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.Data; namespace WCFServices
{
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“ISalesVolumeOperation”。
[ServiceContract] // 服务合同 即提供服务的接口或类
public interface ISalesVolumeOperation
{ [OperationContract] //服务契约 即提供服务的实现方法
DataTable ShowSalesVolume();
}
}
在salesVolumeOperation中完善查询的的过程以及需要返回的参数。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.Data;
using System.Data.SqlClient; namespace WCFServices
{
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“SalesVolumeOperation”。
// 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 SalesVolumeOperation.svc 或 SalesVolumeOperation.svc.cs,然后开始调试。
public class SalesVolumeOperation : ISalesVolumeOperation
{
public DataTable ShowSalesVolume()
{
DataSet ds = new DataSet();
SqlConnection con = new SqlConnection("data source=.;initial catalog=SalesLibrary;user id=sa;password=sa123");
string sql = "proc_ShowSalesVolume"; //存储过程名称
using (SqlCommand cmd = new SqlCommand(sql, con))
{
con.Open();
cmd.CommandType = CommandType.StoredProcedure; SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
}
return ds.Tables[];
}
}
}
第五步:对WCF服务接口测试看看是否无误。
选中SalesVolumeOperation.svc右键在浏览器中查看,然后复制其路径。

打开测试工具SoapUI,将路径复制到initial WSDL 然后在路径结尾写上?wsdl。

接着开始进行测试:

看来WCF服务没有出现问题,那么我们就开始创建第二个程序来访问这个WCF服务。
第六步:创建ASP.NET Web 应用程序(和WCF不在同一个解决方案)。

选择空版本就行,然后右键服务-->添加服务引用-->高级-->添加web引用:



然后在解决方案中就可以看到:

第七步:实现调用WCF服务。
新建一个页面用于展示数据,名为ShowData.aspx
前台代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<%#Eval("Id") %>
<%#Eval("Num") %>
<%#Eval("Product") %>
<br />
</ItemTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>
后台代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data; namespace WebUI
{
public partial class ShowData : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
GetSalesVolume();
}
}
private void GetSalesVolume()
{
SalesVolumeOperation.SalesVolumeOperation sa = new SalesVolumeOperation.SalesVolumeOperation(); //实例化WCF接口
DataTable dt = sa.ShowSalesVolume(); //接口下的方法
List<SalesVolume> list = new List<SalesVolume>();
SalesVolume sv;
foreach(DataRow dr in dt.Rows)
{
sv = new SalesVolume();
sv.Id = Convert.ToInt32(dr["Id"]);
sv.Num = Convert.ToInt32(dr["Num"]);
sv.Product = dr["Product"].ToString();
list.Add(sv);
}
Repeater1.DataSource = list;
Repeater1.DataBind(); }
}
public class SalesVolume
{
public int Id { get; set; }
public int Num { get; set; }
public string Product { get; set; }
}
}
最后页面上的展示结果:

好了,到这里就完事儿了,哪里写的不对希望大家指正~
.net WCF简单实例的更多相关文章
- C# 一个WCF简单实例
以订票为例简单应用wcf 新建一个wcf服务应用程序 在IService1.cs定义服务契约 复制代码 代码如下: namespace WcfDemo { // 注意: 如果更改此处的接口名称 &qu ...
- WCF简单实例--用Winform启动和引用
以订票为例简单应用wcf程序,需要的朋友可以参考下 本篇转自百度文档,自己试过,确实可以用. 以订票为例简单应用wcf 新建一个wcf服务应用程序 在IService1.cs定义服务契约 namesp ...
- 【5】.net WCF 简单实例
1.创建WCF项目 2.系统自动生成IWcfService // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”. [ServiceContra ...
- Wcf简单实例1
一.客户端添加服务引用,并调用 1.使用客户端代理同步调用 static void TestTwo() { /*********同步访问********/ Person.PersonServiceCl ...
- WCF 学习总结1 -- 简单实例
从VS2005推出WCF以来,WCF逐步取代了Remoting, WebService成为.NET上分布式程序的主要技术.WCF统一的模型整合了以往的 WebService.Remoting.MSMQ ...
- WCF分布式开发步步为赢(9):WCF服务实例激活类型编程与开发
.Net Remoting的激活方式也有三种:SingleTon模式.SingleCall模式.客户端激活方式,WCF服务实例激活类型包括三种方式:单调服务(Call Service),会话服务(Se ...
- WCF小实例以及三种宿主
WCF小实例以及三种宿主 最近一直在学习WCF相关知识,下面将通过一个小实例对所学的知识进行简单的回顾:本实例是一个简单三层操作数据库,并且也简单实现的三种宿主(控制台宿主,IIS宿主以及Window ...
- Hibernate(二)__简单实例入门
首先我们进一步理解什么是对象关系映射模型? 它将对数据库中数据的处理转化为对对象的处理.如下图所示: 入门简单实例: hiberante 可以用在 j2se 项目,也可以用在 j2ee (web项目中 ...
- 最新 Eclipse IDE下的Spring框架配置及简单实例
前段时间开始着手学习Spring框架,又是买书又是看视频找教程的,可是鲜有介绍如何配置Spring+Eclipse的方法,现在将我的成功经验分享给大家. 本文的一些源代码来源于码农教程:http:// ...
随机推荐
- 掌握numpy(一)
NumPy是一款用于科学计算的python包,强大之处在于矩阵的运算以及包含丰富的线性代数运算的支持.本文将对numpy一些常用的用法进行讲解,一来是对自己的知识进行梳理,二来作为一份备忘录供以后查阅 ...
- python 面对post分页爬虫
分享一则对于网抓中面对post请求访问的页面或者在分页过程中需要post请求才可以访问的内容! 面的post请求的网址是不可以零参访问网址的,所以我们在网抓的过程中需要给请求传表单数据,下面看一下网页 ...
- vsftpd 安装
vsftpd 安装 这里有最简洁的安装步骤 理想流程 [root@itdragon ~]# useradd ftpuser [root@itdragon ~]# passwd ftpuser Chan ...
- Kaggle初入门
今天成功的进驻kaggle社区了! 所以以后就要跟kaggle上面的各位一起学习啦! 今天十分成功的在tensorflow的环境里面装了一堆库--什么seaborn啊pandas啊都一次过 然后--并 ...
- easyUI整合富文本编辑器KindEditor详细教程(附源码)
原因 在今年4月份的时候写过一篇关于easyui整合UEditor的文章Spring+SpringMVC+MyBatis+easyUI整合优化篇(六)easyUI与富文本编辑器UEditor整合,从那 ...
- 浅谈IM(InstantMessaging) 即时通讯/实时传讯【理论篇】
一.IM简要概述 IM InstantMessaging(即时通讯,实时传讯)的缩写是IM,互动百科大致解释是一种可以让使用者在网络上建立某种私人聊天(chatroom)的实时通讯服务. 大部 ...
- 报Cannot change version of project facet Dynamic web module to 2.5 错误
maven项目老是报这个错误,上网找了很多方法,把Dynamic Web Module的Version改成了2.5,结果还是报错. 后来找到一个方法说在web.xml中,将version改为3.0,就 ...
- ES6这些就够了
刚开始用vue或者react,很多时候我们都会把ES6这个大兄弟加入我们的技术栈中.但是ES6那么多那么多特性,我们需要全部都掌握吗?秉着二八原则,掌握好常用的,有用的这个可以让我们快速起飞. 接下来 ...
- Numpy数组的基本运算操作
一.算术运算符 In [3]: a = np.arange(0,5) Out[3]array([0, 1, 2, 3, 4]) In [4]: a+4 Out[4]: array([4, 5, 6, ...
- UWP 五星好评
var pfn = Package.Current.Id.FamilyName; await Launcher.LaunchUriAsync(new Uri("ms-windows-stor ...