之前一直没接触过WCF这个东西,由于是初学WCF没有深入研究其原理,只是写了一个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:服务功能实现,用来编写功能代码)
删除掉默认的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简单练习的更多相关文章
-
WCF简单使用(分别部署在控制台和IIS上)
WCF部署到控制台 1.下面通过一个简单的服务示例来认识WCF1.新建项目,名称IBLL,解决方案名称WcfDemo,模板选择类库2.修改Class1.cs文件名称为 IUserInfoService ...
-
WCF 简单示例
WCF(Windows Communication Foundation,WCF)是基于Windows平台下开发和部署服务的软件开发包(Software Development Kit,SDK).WC ...
-
WCF简单教程
WCF是DotNet体系中很重要的一项技术,但是组内很多组员通过书籍自学的时候 感觉涉及面太广.配置文件太复杂,新名词太多.抓不到头绪,有感于此,决定进行一次组内技术培训,顺便把培训讲义整理到blog ...
-
C# 一个WCF简单实例
以订票为例简单应用wcf 新建一个wcf服务应用程序 在IService1.cs定义服务契约 复制代码 代码如下: namespace WcfDemo { // 注意: 如果更改此处的接口名称 &qu ...
-
.net WCF简单实例
最近看到网上招聘有许多都需要WCF技术的人员,我之前一直没接触过这个东西,以后工作中难免会遇到,所谓笨鸟先飞,于是我就一探究竟,便有了这边文章.由于是初学WCF没有深入研究其原理,只是写了一个demo ...
-
C# 编写WCF简单的服务端与客户端
http://www.wxzzz.com/1860.html Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Win ...
-
WCF简单实例--用Winform启动和引用
以订票为例简单应用wcf程序,需要的朋友可以参考下 本篇转自百度文档,自己试过,确实可以用. 以订票为例简单应用wcf 新建一个wcf服务应用程序 在IService1.cs定义服务契约 namesp ...
-
WCF简单学习
前两天学习了WCF的一些基础东西,好像不怎么用,但是学习一下还是有助自己增长知识滴.既然是学习就先偷一下别人的概念基础.wcf中有一个ABC的概念,就是第一: "A" 是地址,就是 ...
-
WCF简单Demo
WCF,光看书的原理,稍微有点枯燥,通过自己动手,会更容易理解契约声明,面向服务,分布式等概念. 1.创建WCF服务. 2.WcfService1.CS中声明新的契约. namespace WcfSe ...
-
wcf简单的创建和运用
创建一个控制台应用程序,命名为wcftest,并在同一解决方案中添加一个wcf服务应用程序 在wcf项目中会自动生成Service1.svc服务程序文件和IService1.cs契约接口 IServi ...
随机推荐
-
phpstorm git no changes detected
没有检测到的原因是符号链接了另一个 git 导致有两个git,这个时候应该排除掉其中一个.
-
Air Raid(最小路径覆盖)
Description Consider a town where all the streets are one-way and each street leads from one interse ...
-
UVa 10870 (矩阵快速幂) Recurrences
给出一个d阶线性递推关系,求f(n) mod m的值. , 求出An-dv0,该向量的最后一个元素就是所求. #include <iostream> #include <cstdio ...
-
JVM中锁优化简介
本文将简单介绍HotSpot虚拟机中用到的锁优化技术. 自旋锁 互斥同步对性能最大的影响是阻塞的实现,挂起线程和恢复线程的操作都需要转入内核态中完成,这些操作给系统的并发性能带来了很大的压力.而在很多 ...
-
scrapy的学习总结(1)
1.xpath和css的节点的共同结合使用是一个挺好的使用过程,还有就是配合正则表达式的使用,这个也是很重要的.解决任何一个问题都会有不同方法.学会思考的解决问题. 2.item的数据抽取,pipel ...
-
(四)五种IO模型
基本概念 我们之前编写的套接字程序都是阻塞式的,其实这也是默认的形式.现在我们需要明确一些概念: 用户空间和内核空间 首先要明确,用户启动的应用程序在系统中以一个进程的形式存在,而无论对于网络数据还是 ...
-
WebService关于Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart)问题解决
错误原因:需要mail.jar和activation.jar. Solution:Web Services Required Jars Download Instructions http://www ...
-
Android项目的targetSDK>;=23,在低于Android6.0的部分测试机(类似华为)上运行时出现的系统权限问题
相信大家对Android6.0以上的动态权限已经有所了解,很多童鞋也已经跃跃欲试地将自己项目的targetSDK升级到了23及其以上,很不幸的是我也成为了其中一员,然而我还是图样图森破了,升级之后的问 ...
-
多媒体开发(8):调试FFmpeg
编译FFmpeg得到二进制文件,之后就是对二进制库的调用,这时FFmpeg就像一个黑盒子.作为程序员,难道不想研究一下FFmpeg的具体实现?比如是怎么拿到歌曲信息的.怎么解码的.怎么推流的,等等. ...
-
getFields和getDeclaredFields
getFields()获得某个类的所有的公共(public)的字段,包括父类. getDeclaredFields()获得某个类的所有申明的字段,即包括public.private和proteced, ...