UI层调用WCF服务实例(源码)

时间:2022-12-23 12:43:15

  WCF原理性的东西,暂时还没有深入研究,只是在公司的项目中使用到了,会调用,然后再多做了一些了解,现在将它抽出来了一个小实例,写了一个WCF的demo。

  我写的这个WCF.Demo主要包括数据契约和服务契约,UI客户端层和Host宿主层,基于http和net.tcp两种协议通信。

  不多说,直接贴一张层次图片先,最后提供源码下载。

  aaarticlea/png;base64,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" alt="" />

  数据契约层(DataContracts)代码:

  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks; namespace WCF.DataContracts
{
[DataContract()]
public class CustomerData
{
[DataMember()]
public string Name { set; get; }
[DataMember()]
public string Sex { set; get; }
}
}

服务契约接口层(WCF.ServiceContracts)

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks; namespace WCF.ServiceContracts
{
[ServiceContract()]
public interface ICustomerService
{
[OperationContract()]
string ShowInfo(); }
}

服务契约实现层(WCF.Services)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WCF.DataContracts;
using WCF.ServiceContracts; namespace WCF.Services
{
public class CustomerService : ICustomerService
{
public string ShowInfo()
{
CustomerData data = new CustomerData()
{
Name = "admin",
Sex = "男"
}; return "姓名是:" + data.Name + ",性别是:" + data.Sex;
}
}
}

宿主层(两个文件)

Program

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;
using WCF.Services; namespace WCF.Hosting
{
class Program
{
static void Main(string[] args)
{ ServiceHost hostForHello = new ServiceHost(typeof(CustomerService)); hostForHello.Open();
Console.WriteLine("WCF服务启动成功!");
Console.ReadLine(); }
}
}

app.config

<?xml version="1.0"?>

<configuration>

  <system.serviceModel>

    <services>

      <service name="WCF.Services.CustomerService" behaviorConfiguration="mex">
<host>
<baseAddresses>
<add baseAddress="http://192.168.1.100:64566/CustomerService"/>
<add baseAddress="net.tcp://192.168.1.100:64567/CustomerService"/> </baseAddresses>
</host>
<endpoint binding="wsDualHttpBinding" contract="WCF.ServiceContracts.ICustomerService" address="mex" />
<endpoint address="net.tcp://192.168.1.100:64567/CustomerService" binding="netTcpBinding"
bindingConfiguration="tcpWindowsSecurity" name="helloEndPoint"
contract="WCF.ServiceContracts.ICustomerService"/>
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" /> </service> </services> <bindings> <netTcpBinding> <binding name="tcpWindowsSecurity"> </binding> </netTcpBinding> </bindings> <behaviors>
<serviceBehaviors>
<behavior name="mex">
<serviceMetadata />
</behavior>
</serviceBehaviors>
</behaviors> </system.serviceModel> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup> </configuration>

客户端调用层(WCF.Client)

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WCF.ServiceContracts; namespace WCF.Client
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
using (ChannelFactory<ICustomerService> channelFactory = new ChannelFactory<ICustomerService>("helloEndPoint"))
{
ICustomerService helloService = channelFactory.CreateChannel();
using (helloService as IDisposable)
{
TextBox1.Text = helloService.ShowInfo();
}
}
}
}
}

客户端配置文件

<?xml version="1.0" encoding="utf-8"?>

<!--
有关如何配置 ASP.NET 应用程序的详细信息,请访问
http://go.microsoft.com/fwlink/?LinkId=169433
--> <configuration>
<system.serviceModel> <bindings> <netTcpBinding> <binding name="tcpWindowsSecurity"> </binding> </netTcpBinding> </bindings> <client> <endpoint name="helloEndPoint" address="net.tcp://192.168.1.100:64567/CustomerService" binding="netTcpBinding" bindingConfiguration="tcpWindowsSecurity" contract="WCF.ServiceContracts.ICustomerService" /> </client> </system.serviceModel> <system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web> </configuration>

源码下载

UI层调用WCF服务实例(源码)的更多相关文章

  1. &lbrack;百度地图&rsqb; 用于类似 DWZ UI 框架的 百度地图 功能封装类 &lbrack;MultiZMap&period;js&rsqb; 实例源码

    MultiZMap 功能说明 MultiZMap.js 本类方法功能大多使用 prototype 原型 实现,它是 ZMap 的多加载版本,主要用于类似 DWZ 这个 多标签的 UI 的框架: 包含的 ...

  2. JAVA上百实例源码以及开源项目

    简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级.中级.高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情.执着,对IT的憧憬. ...

  3. JAVA上百实例源码网站

    JAVA源码包1JAVA源码包2JAVA源码包3JAVA源码包4 JAVA开源包1 JAVA开源包2 JAVA开源包3 JAVA开源包4 JAVA开源包5 JAVA开源包6 JAVA开源包7 JAVA ...

  4. sofa-rpc 服务端源码流程走读

    sofa-rpc是阿里开源的一款高性能的rpc框架,这篇文章主要是对sofa-rpc provider启动服务流程的一个代码走读,下面是我简单绘制的一个基本的关系流程图 下面我们根据sofa-rpc代 ...

  5. Spring Cloud Eureka服务注册源码分析

    Eureka是怎么work的 那eureka client如何将本地服务的注册信息发送到远端的注册服务器eureka server上.通过下面的源码分析,看出Eureka Client的定时任务调用E ...

  6. 完全使用接口方式调用WCF 服务

    客户端调用WCF服务可以通过添加服务引用的方式添加,这种方式使用起来比较简单,适合小项目使用.服务端与服务端的耦合较深,而且添加服务引用的方式生成一大堆臃肿的文件.本例探讨一种使用接口的方式使用WCF ...

  7. 实现在GET请求下调用WCF服务时传递对象(复合类型)参数

    WCF实现RESETFUL架构很容易,说白了,就是使WCF能够响应HTTP请求并返回所需的资源,如果有人不知道如何实现WCF支持HTTP请求的,可参见我之前的文章<实现jquery.ajax及原 ...

  8. 百度地图 api 功能封装类 &lpar;ZMap&period;js&rpar; 本地搜索&comma;范围查找实例 &lbrack;源码下载&rsqb;

    相关说明 1. 界面查看: 吐槽贴:百度地图 api 封装 的实用功能 [源码下载] 2. 功能说明: 百度地图整合功能分享修正版[ZMap.js] 实例源码! ZMap.js 本类方法功能大多使用 ...

  9. 百度地图整合功能分享修正版&lbrack;ZMap&period;js&rsqb; 实例源码&excl;

    ZMap 功能说明 ZMap 是学习百度地图 api 接口,开发基本功能后整的一个脚本类,本类方法功能大多使用 prototype 原型 实现: 包含的功能有:轨迹回放,圈画区域可编辑,判断几个坐标是 ...

随机推荐

  1. JPA,EclipseLink 缓存机制学习&lpar;一&rpar; 树节点搜索问题引发的思考

    最近在项目在使用JPA+EclipseLink 的方式进行开发,其中EclipseLink使用版本为2.5.1.遇到一些缓存方面使用不当造成的问题,从本篇开始逐步学习EclipseLink的缓存机制. ...

  2. iOS中的UI

    • 不管你是学习android开发还是iOS开发• 都建议先学习UI,原因如下:UI是app的根基:⼀一个app应该是先有UI界⾯面,然后在UI的基础上增加实⽤用功能 UI相对简单易学:UI普遍是学 ...

  3. webservice简单总结

    一:webservice定义 webservice是一种基于xml,xsd封装格式,通过http协议通信的一种服务,支持跨平台.跨语言的 远程调用. 二:webservice优点 1:跨平台,无论是w ...

  4. POJ1182 食物链(并查集)

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 55260   Accepted: 16210 Description ...

  5. typedef struct

    突然忘了这玩意儿了..今天就来搞一发 typedef是类型定义的意思.typedef struct 是为了使用这个结构体方便.具体区别在于:若struct node {}这样来定义结构体的话.在申请n ...

  6. C&num; Best Practices - Creating Good Properties

    Coding Properties Code in the Getter Check the user's credentials Check application state Format the ...

  7. GCJ 2008 APAC local onsites C Millionaire

    时间复杂度很大.dp[i][j]表示第i轮 j这种状态的概率. #include<cstdio> #include<cstring> #include<cmath> ...

  8. ButterKnife的使用以及不能自动生成代码问题的解决

    ButterKnife的使用以及不能自动生成代码问题的解决 转载请注明出处:http://www.cnblogs.com/zhengjunfei/p/5910497.html 最近换了个工作刚入职,又 ...

  9. GreenDao 使用和数据库升级

    1使用方法 一.添加依赖 在bulid.gradle文件下的dependencies下添加所需依赖   compile 'org.greenrobot:greendao:3.2.2' // add l ...

  10. Vijos 1308 埃及分数 - 迭代加深

    描述 在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数.如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的.对于一个分数a/b,表示方法有很多种, ...