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的试验,非常遗憾,客户端设置的上下文在服务器端无法获取到。现在还在研究。

  • 相关阅读:
    [leetcode] Reverse Linked List II
    利用ServletContextListener实现定时任务
    以追加方式写入文件的几种方法
    序列化反序列化的几种方式
    最常用快捷键
    Eclipse快捷键大全
    【MongoDB for Java】Java操作MongoDB
    JQuery EasyUI window 用法
    Oracle sql 性能优化调整
    Jodd 3.3
  • 原文地址:https://www.cnblogs.com/tansm/p/449633.html
Copyright © 2011-2022 走看看