zoukankan      html  css  js  c++  java
  • 利用反射建立单一调用的WebService

    标题实在不好定义,是什么意思呢?我现在在做一个研究,就是原先的一个程序是用.NET Remoting进行远程通讯协议的,现在为了适应“广大客户关于WebService的强烈需求”,现在要修改为WebService方式。

    稍微值得安慰的是:程序在设计的最初做了这种情况的假设,包含了一个通讯层,它在客户端包含一个连接对象,服务器端包含一个统一的服务调度程序,客户端总是返回一个服务的透明代理。开始人员在最上层调用看起来像这样的:

    IEmployeeService service = Factory.GetService<IEmployeeService>();

    • 要改成WebService方式,我必须在客户端也实现一个透明代理。

    .NET默认建立的客户端是没有透明代理功能的。

    关于透明代理的建立我参考了《A Taste of AOP from Solving Problems with OOP and Design Patterns (Part II)一文,此高人2004年初就将AOP研究的透彻无比了。

    • 利用反射统一调用方法

    在服务器端,我先获取调用消息,WebService的定义如下:

    [WebMethod]

    public object Invoke(string serviceType, string method, string[] argumentTypes, object[] arguments) {

    利用反射机制,我找到这个服务的实例,并调用他。有些人会很担心安全问题,因为这样客户端就可以写恶意的调用了,在现有的程序中是没有这个问题,因为我限制了serviceType只能是我们指定的已经授权的服务。

    • 关于CallContext

    在.NET Remoting中,CallContext是一个非常有用的东西,他可以帮助我将上下文传输到服务端,但我做了WebService的试验,非常遗憾,客户端设置的上下文在服务器端无法获取到。现在还在研究。

  • 相关阅读:
    利用HttpClient进行带参数的http文件上传
    使用mysqlproxy 快速实现mysql 集群 读写分离 [转]
    SQL Server Express 自动备份方法
    screen 配置文件
    linux启动DHCP
    dynamic table_name in cursor
    LogMiner and supplemental logging
    RAC 规划配置网络环境
    RAC prepare OS and installation media
    一次导数据流程
  • 原文地址:https://www.cnblogs.com/tansm/p/449633.html
Copyright © 2011-2022 走看看