zoukankan      html  css  js  c++  java
  • 介绍一下我利用Url重写实现的松耦合框架

    --------------

    前言 

    -------------- 

    我之前开发了2个系统,一个是健康检查,每天定时发送系统运行日志;另外一个是issuetrace,用于缺陷跟踪。

    现在,我希望查看系统运行日志时有个超级链接,点击之后自动把当前日志记录加入缺陷跟踪中。这样,我就能够很方便的把最新的bug添加到了issuetrace。 

    而且,将来,可以在工作流中使用这一技术,实现松散组织下的工作流扭转,例如点击一下email的link就实现了文档审批。

    --------------

    效果展示 

    -------------- 

    整个演示系统的拓扑结构包括:

    1. 服务商A,即健康检查系统。

    2. Rewrite框架。

    3. 客户B,使用Rewrite框架,获取健康检查系统的报告记录,插入缺陷跟踪系统。

    三者之间的关系是:

    • A引用了Rewrite
    • B引用了A,Rewrite。


    健康检查系统的配置
    -------------------- 

    首先,健康检查系统需要暴露出自己的服务引用,使用以下代码:

    代码
            string module = "健康检查系统";
            ISoaHyperLink link = SoaManager.CreateHyperLink(module);
            link.AddParameter("recordcode""0000001");
            
    this.HyperLink1.NavigateUrl = link.Serialize();

    module表示当前服务商的唯一ID,即健康检查系统,这样在页面就会出现了全局唯一引用。

    以上代码的意思是,在链接里面嵌入了recordcode这个字段,值是00000001。

    那么将来有人调用了这个链接,就等于获取了 健康检查系统,记录编号为00000001的记录。

    效果如下:


    配置Rewrite框架

    ---------------------

    然后,我们需要配置Rewrite框架,当有人点击这个链接的时候,需要做出相应。

     

    这个页面配置了,当链接被点击后,被hello.aspx处理。

    配置客户B处理代码

    ---------------------- 

    hello.aspx

            string code = SoaManager.GetSoaParameter("recordcode");

            TextBox1.Text 
    = code;

    效果如下:

     

    这样,当点击了这个link之后,就跳转到了hello.aspx,处理。

    当然,如果这个link被重复点击,会提示:

     

    后记

    ---------------------

    看似多此一举的架构,如果直接在健康检查系统嵌入hello.aspx的链接,不就完事了。

    的确如此。但是问题是,我在开发健康检查系统的时候,缺陷跟踪还没有出生,因此这个需求还没有出现。我不希望将来每添加一个新功能,都要修改原代码,这样耦合度就太紧了。

    所以,我使用了一个中间的映射层,Rewrite框架。由于Rewrite框架提供了全局唯一的访问入口,因此旧的经典系统是不需要修改代码,只需要集成了这个Rewrite框架。

    这样,系统开发,可以按照模块一个个叠加。

    如果各位有更好的想法,欢迎提出来。如果觉得我这个东西就是废物,也欢迎留下建议。

  • 相关阅读:
    开启mysql远程登录
    InfluxDB安装及配置
    基于ssh反向代理实现的远程协助
    小工具之进程守护器
    生成freeswitch事件的几种方式
    freeswitch模块之event_socket
    freeswitch对接其它SIP设备
    freeswitch注册过程分析
    redis参考文档
    创建型模式之Builder模式及实现
  • 原文地址:https://www.cnblogs.com/zc22/p/1700186.html
Copyright © 2011-2022 走看看