wcf第4步之原生调用简单封装

 public interface IDemoServiceChannel :  IDemoService, System.ServiceModel.IClientChannel {
    }

    public partial class DemoServiceClient : System.ServiceModel.ClientBase<IDemoService>, IDemoService {

        public DemoServiceClient() {
        }

        public DemoServiceClient(string endpointConfigurationName) :
                base(endpointConfigurationName) {
        }

        public DemoServiceClient(string endpointConfigurationName, string remoteAddress) :
                base(endpointConfigurationName, remoteAddress) {
        }

        public DemoServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
                base(endpointConfigurationName, remoteAddress) {
        }

        public DemoServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
                base(binding, remoteAddress) {
        }

        public SomeResp DoSomething(SomeReq request) {
            return base.Channel.DoSomething(request);
        }
    }

配置文件添加

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

  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IDemoService" sendTimeout="00:05:00" />
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://dev.xxx.io/Demo/DemoService.svc"
          binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IDemoService"
          contract="RestClientTest.IDemoService" name="BasicHttpBinding_IDemoService" />
    </client>
  </system.serviceModel>
</configuration>

调用代码更加简单

IDemoService demoService = new DemoServiceClient();
            var r1 = demoService.DoSomething(new SomeReq() { Date = DateTime.Now, DateUTC = DateTimeOffset.Now });
            Console.WriteLine(r1.ResultDate);
            Console.Read();
时间: 2024-11-05 12:26:09

wcf第4步之原生调用简单封装的相关文章

wcf第3步之报文分析及原生调用

最简单的调用当然是服务引用,但是我更想原生调用,所以希望能通过报文有如下研究 1.报文分析 <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-

WCF技术剖析之十:调用WCF服务的客户端应该如何进行异常处理

原文:WCF技术剖析之十:调用WCF服务的客户端应该如何进行异常处理 在前面一片文章(服务代理不能得到及时关闭会有什么后果?)中,我们谈到及时关闭服务代理(Service Proxy)在一个高并发环境下的重要意义,并阐明了其根本原因.但是,是否直接调用ICommunicationObject的Close方法将服务代理关闭就万事大吉了呢?事情远不会这么简单,这其中还会涉及关于异常处理的一些操作,这就是本篇文章需要讨论的话题. 一.异常的抛出与Close的失败 一般情况下,当服务端抛出异常,客户客户

原生js简单轮播图 代码

在团队带人,突然被人问到轮播图如何实现,进入前端领域有一年多了,但很久没自己写过,一直是用大牛写的插件,今天就写个简单的适合入门者学习的小教程.当然,轮播图的实现原理与设计模式有很多种,我这里讲的是用面向过程函数式编程去实现,相对于面向对象设计模式,代码难免会显得臃肿冗余.但没有面向对象的抽象却很适合新手理解与学习.已经在BAT的同学看到希望少喷点.另外可以多提意见. 轮播图的原理: 一系列的大小相等的图片平铺,利用CSS布局只显示一张图片,其余隐藏.通过计算偏移量利用定时器实现自动播放,或通过

Django入门第一步:构建一个简单的Django项目

Django入门第一步:构建一个简单的Django项目 1.简介 Django是一个功能完备的Python Web框架,可用于构建复杂的Web应用程序.在本文中,将通过示例跳入并学习Django.您将按照以下步骤创建功能完备的Web应用程序,并一路学习框架的一些最重要的功能以及它们如何协同工作. 学习目标: 了解Django是什么以及为什么他是一个伟大的web框架 了解Django的体系结构以及与其他框架的对比 独立搭建一个简单的Django项目和应用程序(app) 2.为什么要学习Django

dwr框架异步调用简单小例

DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架.可以轻松实现用js直接调用java方法. 通过一个小例子来演示一个dwr的基本使用: ①. 首先肯定要创建一个web project的,然后拷贝dwr.jar到WEB-INF\lib目录下 ②. 修改web.xml文件,添加dwr servlet配置 <servlet> <servlet-name>dwr-invoker</servlet-name>

实现跨域iframe接口方法调用 简单介绍

实现跨域iframe接口方法调用 简单介绍: 页面a.html域名为www.a.com,嵌入页面http://www.b.com/b.html. b.html要调用a.html中的js函数,由于两个页面不在一个域中,会提示没权限. 下面就介绍一下如何如何解决此问题,需要的朋友可以做一下参考. 一.cross.js代码如下: (function(global){ global.Cross = { signalHandler: {}, on: function(signal, func){ this

java动态表达式、原生调用、反射性能对比

package net.hs.cw.bomp.utils; import java.io.Serializable; import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; import org.mvel2.MVEL; /** * Id 模型 * * @author Gavin Hu * @create 2015/8/26 */ public class Id implements Seria

iOS开发——UI篇OC篇&amp;UITableView简单封装

UITableView简单封装 UITableView时iOS开发中使用最多也是最重的一个UI空间,其实在App Store里面的%80以上的应用都用到了这个控件,所以就给大家介绍一下,前面的文章中也提到了,在后面的文章中将会详细解释. 当然这篇文档并不是介绍证明去使用它,只是说说怎么去封装活着更好的使用. 这里主要是关于UItableView中Cell中的多功能实现 一:新建一个模型数据,用于Cell的实现 1 /** 2 * 覆盖系统的枚举 3 */ 4 typedef enum { 5 C

远程调用代码封装杂谈

上周处理了一个线上问题,经过排查发现是RPC远端调用超时,框架抛出的超时异常没有被捕捉,导致数据进入中间态,无法推进后续处理.好在影响不大,及时修复掉了. 关于这部分的代码规范,之前也有所思考,正好有这个契机做一下整理. 讨论背景和范围 做应用分层架构时,有一种实践方式是将代表外部服务的类如UserService,包装成一个UserServiceClient类,上层业务调用统一使用UserServiceClient,是一种简单的代理模式. 本文的讨论实例,即UserService.UserSer