首页 > ATS核心, ATS调优, 插件开发 > ATS??�a��a?�a?�aY?c?�

ATS??�a��a?�a?�aY?c?�

2013年6月13日     浏览数:764 发表评论 阅读评论

ATS??�a��a?�a?�aY?c?�

ATS??�a��a?�a?�e?�e�????a�?a?�e�?ATScs�??�a��cs�a?�a?�e�?e�??�????i??a�?a?Sc?�c�Y???a?�cs�a?�a?�a??a???�?a?�a��??�a��a��a?sa��c�?ATScs�aY?c?�a?�a?�cY?e?�i??a�?a?�a?Za?Zc��cs�??�a��a?�a?�e??c?�e�?e�?a��

ATScs�SDK?��???i?????a?�e�?ATScs�?�?a??e�?e�?a�??Z?a??e�?e�?cs�a??e�?e�?e��?��i??c�se�????e�?cs�PDFc�???�?��???i??e?????e?za??e?za????�c�?cs�e��?��a��a�?e�?a?Z??�c�?a??a�?e��a�?a�?a??a?�e�?ATS?�?a??a�?c�?cs�a??a��e��a?Ya??a??c?�c?�SDK?��???i??e?�e�?e�?cs�a??a�saY?c?�cY?e?�i????�a?�a?Za???�?a??cs�?��a�?c?�e�?a��ATScs�APIa�?a?S?�?a????�a��?Z?a??e�?e�????a?�a??a??a?za��cs�a�?c?�i??a��e�?e�??�??????�a��a??es?a?�a?�?�?a?�?Z�i??e?�e�?c�?a�?a?�a?�cY?e?�c�?a?�a��a��a?�e�?a��a��??�c?�???a�?e��e??a?�a��i??a�?SDK?��???a�?a�?c�????e�Sa�?a�?c�?a??a��a��

a�??�?SDK?��???

aZ�a??cs�SDK PDF?��a��

a?�a?�c?�i?s?��?SS?��?��a?�a��plugin

ATSa?�a?�cZ?a??

a??e??e�?e�S

  • HTTP Transaction

    HTTP Transaction ???ATSc�???�httpcs�a��c?�?�?c?�i??a??ATSa?�i??a?�a??HTTPcs�e?�?��cs�a��c?�e?�c?�i??a?�a?sa?�a??HTTP Transactiona��ATScs�a??a�sAPI???a�?Transactiona???�?a??cs�a�??��a��c?�e?�c?�i??a?Ya��e��a??a?�e?�a??e?�c?�a�?c�??�Scs�?�?a?�a��a??c�?a�?cs�APIa�??��a?�i??TSHttpTxn?��??�c��?z�i??a�?a?Sa�?TSHttpTxna?�a�?cs�APIa�??��e?????a�?c��e?�a??a��c?�?�?c?�???cs�a��

  • HTTP SM

    HTTP SM ???a?�e?�?????�ATScs�a?�?�?c?�cS�?�????i??a??ATSa?�i??a��c?�cs�?�?c?�???e�se?�HTTP Transactiona?�cs�a�??��a��c?�cs�i??e�?cS�?�??��??�???a�?a�?a??HTTP SMa?�cs�a��ATS?�?a??a?�?�?c?�a��???HTTP Transactiona�?HTTP SMcs�a?�a?�e?�c?�a��

  • HTTP session

    HTTP session?????�httpa?se??i??a?�e?�??�a?�a??e?�?��a?�a?�e?�c?�i??c�???�a��a�???�c�?cs�a?�a??e?�?��i??a�z???cs�a?�a??e?�?��i??a?�a?�a??a?�a�???�c�?a�????aS?a�?c�?HTTP sessiona��a??c��HTTP Transactioni????�a��a??a?�cs�ATSa?�a??c�???�e?�?��a?�e��cs�ATS HTTP Transactioni??a??a�?a?�a?�a?�a??a�???�c�? HTTP Sessioni??0a????�1a??c�se�?a�sa??a�z??? HTTP Sessiona��

  • remap

    remap???ATSa?sURL rewritecs�?�?a??i??a?Y???ATSa??e�?c?�?��a��e�?e�??�?e??cs�c�??�Se??a?�a��a�ZaSYe??a?S???e�?i??ATScs�remap?�?a??a?�a??c??c��c�???�cs�Apache Httpdcs�rewrite???a?�a��remapa?�?��a�?e�?e�?i?????a��a??a�?a�sa?�a?�a?�a??a???�?a??cs�APIa�?a??i????�a��a??a�?e�se?�remapc?�c�Yi??c?�a��remap??�a��a��

aY?c?�cY?e?�i?s

  • Continuation

    Continuationi??a�Za��???a?Sa?�e?????a?�a?sContinuationcs�c?�c?�???az�i???�???�i?�i??e?�a???S�???c�?a?�a?�e�?i??a?Z???a?�e??a�?c��e?�a???�????i???�?e?�a�?a?�coroutinecs�c?�c?�???az�i???�???�i?�i??a?�a�sc?�a?�a?S???e�?Continuation????�?a??a?�?�?a�ze�????a?�cs�a�sc??c?�a?�a��c?�c?�aY?c?�a��a??a?�ATSa?�i??Continuation???a?�a????�??�aY?c?�cs�?S?e�?c��?z�i??a?Zc��cs�?��??�e�?c?�c��?z�i??a��Action Event VCc��e??a�?e?�Continuation?��??�c��?z�i????�a��a�?c?�Continuationc��?z�cs�a�ze��a�?c�?i?s

    class Continuation: private force_VFPT_to_top
    {
    public:
        ContinuationHandler handler;
        Ptr<proxymutex> mutex;
        LINK(Continuation, link);
    
        int handleEvent(int event = CONTINUATION_EVENT_NONE, void *data = 0) {
        return (this->*handler) (event, data);
        }
    
        Continuation(ProxyMutex * amutex = NULL);
    };
    

    Continuationa?�e�?a?�a?�i?s

    • handleri?sa?�a�?cs�Continuationa��c?�a�??��a��
    • mutexi?sContinuationcs�e�?a��
    • linki?se�??Z?a?�a��a��Continuationcs�a??e�?e??a��
    • handleEventi?s?Z??��eventcs�a�?c�?a�??��??�i??a?�a?�c��a?�a�?cs�a��c?�a�??��a��c?�a��

    c��?z�e?za??c??c�?i??a?�a??a�?e??c�??�Sa?�a?�a��

    Continuationa??APIa?�cs�c��?z�a?�TSConti???????�a��a?�a?�a?�??�a??c�?a?�cs�?S?e�?a?�a?�i?????a�s?��APIe�??��cs�a?�?��c��?z�a��a????�a��c?�c?�a?�cs�a?�e�?c�?a?�cs�a��blacklit-0a?�cs�a�?c�?i?s

    TSHttpHookAdd(TS_HTTP_OS_DNS_HOOK, TSContCreate(blacklist_plugin, NULL));
    

    e?�???a?�a??hooka�??��i??a??TS_HTTP_OS_DNS_HOOKe?�?��i??hooke?�aZ�a?�blacklist_plugini??e�?a?�e??a�?c�?i?�i??e�?blacklist_plugin a�??��a?�a�za?Sa?????a?�a??a?�a��a��c?�cs�handlere�?a�?i??e?�e�?e�se?�TSContCreatee?�a?�a??TSContc��?z�a��e�se?�e?�a?�APIi????�a��a?�a?�e��a??a�??�?a�????a?saS??�?c?�a�zcZ�i??c�se�?e??a??a�?a??c�?aZ�c?�e�?ATS?�?a??cs�a�???�a?�?�?a?�a��a?�???a?�i??a??e?�e�?c��c?�a?�a�????a��a�?c�?a��a??a��a��

    static int
    blacklist_plugin(TSCont contp, TSEvent event, void *edata)
    {
      TSHttpTxn txnp = (TSHttpTxn) edata;
    
      switch (event) {
      case TS_EVENT_HTTP_OS_DNS:
        handle_dns(txnp, contp);
        return 0;
      case TS_EVENT_HTTP_SEND_RESPONSE_HDR:
        handle_response(txnp);
        return 0;
      default:
        break;
      }
      return 0;
    }
    

  • Action

    Action???a?�a???S?e�?a�????cs�i??c��a��c?�???a��c?�cs�a?�?�?a��aS????az�a��e?�a??a��aS????a??a�?a??a?�?�?a��c?�cZ?a??a?�a�?e�??��e��cs�a��c��a?�cs�a�?a??a??a�?e?????a?�a??a??a�??��e��cs�a�??��???a?�i?Y

    e?�a??c��?z�cs�a?�e�?c�?a��???c�?????z�a�?c�Ya?�cs�Eventc?�c�Yi??c�?a??a?�a��cs�iocore/a?�cs�c?�c�?a�?a?Sc??c�?IOc��?�?e??a��a?�c��i??ATScs�a?Sa��a�?c��?�????a??e��a?Za�?a?�a��

    class Action
    {
    public:
        Continuation * continuation;
        Ptr</proxymutex><proxymutex> mutex;
        volatile int cancelled;
    
        virtual void cancel(Continuation * c = NULL) {
        if (!cancelled)
            cancelled = true;
        }
    
        void cancel_action(Continuation * c = NULL) {
        if (!cancelled)
            cancelled = true;
        }
    
        Continuation *operator =(Continuation * acont)
        {
        continuation = acont;
        if (acont)
            mutex = acont->mutex;
        else
            mutex = 0;
        return acont;
        }
    
        Action():continuation(NULL), cancelled(false) {
        }
    
        virtual ~ Action() {
        }
    };
    

    a�?a?ZActioni????�a��a??e?�e�?????�?cs�a?�?�?i?s

    • Action???a??a�?a�?a�?cs�
    • ?��e��a?�e?�???c��a��aS?cs�callbacka��c?�??????a?s
    • e�??��e��a?�e?�a�??�?a?�e�?
    • Action???c��a��c?�???a?�a�?cs�i??a??a�??????�?��e��cs�?��a��i??a?Y???c��a��c?�???e?Ye??cs�a��cS�?�????a??e??a??Actiona�??????�?��e��a?Za�?e�?e��a�?
  • Event

    Event???c��Eventa��c?�???e?�a�zcs�a?�c�?Actiona��???a??a�?c�????e�?a?�a�?aZ�a�Ze�?a?�?�?a��c?�cs�a��aS?i??Actioni?�a��event???a??a??a�?a�?cs�a��c��a?Za�?c��?�?e�?Actioni??a��?��a?Ya��??�a??a�??��e��cs�???a?�i??a???��?�?a??a�?a???��a?�Eventa?Za��c?�??�a??a��c?�e�?a�?e�?a?�a�?aZ�i??e?�a??a??a?�a�S:D

    Eventcs�e�?a?�a?�a??4c�?i?s

    • _immi?sc��a???��e??i??e?�a?????a??e�?a?sc�??Z?e��Evente?�a�?a?�?��e??e?Ya?�
    • _ati?sa?????????Y?a??a��a?�?��e�?i????�a�sa��a?�a?�a��?��e??
    • _ini?sa?????????Y??��?��e�?a?Zi????�a�sa��a?�a�sa?�a?�a?Z?��e??
    • _everyi?s???es�a�se�?a?�a��i??e��a?�a��a??cZ??��e??i??c��a??cronc��a�s?��a��aS?

      class Event:public Action
      {
      public:
      void schedule_imm(int callback_event = EVENT_IMMEDIATE);
      void schedule_at(ink_hrtime atimeout_at, int callback_event = EVENT_INTERVAL);
      void schedule_in(ink_hrtime atimeout_in, int callback_event = EVENT_INTERVAL);
      void schedule_every(ink_hrtime aperiod, int callback_event = EVENT_INTERVAL);
      void free();

      EThread *ethread;

      unsigned int in_the_prot_queue:1;
      unsigned int in_the_priority_queue:1;
      unsigned int immediate:1;
      unsigned int globally_allocated:1;
      unsigned int in_heap:4;
      int callback_event;

      ink_hrtime timeout_at;
      ink_hrtime period;

      void *cookie;

      Event();
      Event *init(Continuation * c, ink_hrtime atimeout_at = 0, ink_hrtime aperiod = 0);
      private:
      void *operator new(size_t size);
      Event(const Event &);
      Event & operator =(const Event &);

      public:
      LINK(Event, link);
      };

    a�?a?ZEventc��?z�i????�a��a?�a��c�?e?�e�?????�?i?s

    • cS�?�????a??e??a??e�?a??call-backc??c?�a?�i??a?�e��e�?a?�i??a?�a?�e?�e�??�?a?�continuationcs�e�?a��
    • ?��e��???a?�a?ZActionc��a??i??a?Ye?�e�?a??call-backcS�?�?????�?a?�e�?cs�??�a��a?�a?sa��
    • cS�?�????a?�i??Eventa?�a��cs�a�?c�????e?�e�?a�?a��c�Ya?�cs�
  • VC

    VConnection???ATS?�?a??a�???�a��e??a??c�?cs�a?�c�?e??a?�streamcs�?��??�?S?e�?c��?z�a��a?�e�?a??a�?c?�e�?a??a?�a???��??�e?�a��c�?e?�i??a???Y?a?�a???�?a?�i????�c�?c��a??FDcs�?�??z?a��VConnectionc��?�?e�?continuationi??a?Y???a?scall-backa?�a��c?�???a��c?�cs�a��e?�a??aY?c��???a�?e?�a?Sa��e�sa??c�?e?�cs�aY?c?�a��

    VConnection???a?�a�?e��cs�a��a???Z?a??i?s

    • do_io_read
    • do_io_write
    • do_io_close
    • do_io_shutdown
    • reenable c�????e�scY?a?�a?�c�?a??a�?a�z?�?a?�a?�?�?aS?a??
    • set_continuation

      class VConnection:public Continuation
      {
      public:

      virtual ~ VConnection();

      virtual VIO *do_io_read(Continuation *c = NULL, int64_t nbytes = INT64_MAX, MIOBuffer *buf = 0) = 0;
      virtual VIO *do_io_write(Continuation *c = NULL,
      int64_t nbytes = INT64_MAX, IOBufferReader *buf = 0, bool owner = false) = 0;
      virtual void do_io_close(int lerrno = -1) = 0;
      virtual void do_io_shutdown(ShutdownHowTo_t howto) = 0;

      VConnection(ProxyMutex *aMutex);
      virtual void set_continuation(VIO *vio, Continuation *cont);
      virtual void reenable(VIO *vio);
      virtual void reenable_re(VIO *vio);

      virtual bool get_data(int id, void *data)
      {
      (void) id;
      (void) data;
      return false;
      }
      virtual bool set_data(int id, void *data)
      {
      (void) id;
      (void) data;
      return false;
      }

      public:
      int lerrno;
      };

    VConnectiona�sa?�a?�a?�a??a??a�?a??e?�cs�e�s?�Yc�?e?�i??a??a�?e��ATSa??c?�c�?a�?cS�?�????a�?c??c�?e�?a??????�?a???��??�e�sa??i?????a?Sa��e�sa?????a?�cs�a??a�?e��a?�cZ?a��

e?�e?�a?Z?Z?a??

  • C API

    ATSe�?e��cs�API???C APIi??a??ts.hi??e?�???Ccs�APIi????�?Y?a??e??c�?C++c?�a??a�?e?�a�?C APIa??a??a��i??a????Ze��aZ�a��

    ATSa???��e????�a?�a?�a??e?zc??a�scs�APIi??a�sa?�a??i?sexperimental.h

    e????�2a??API?��a��i??e�?e��a?�?????�???a?�c��a��a��

    • InkAPIHughes.h a??Hughese�?e�?cs�Prefetch APIi??c�?a?�PrefetchaSYe??cs�a??a�?c?�c?�a��
    • InkAPIPrivateIOCore.h a??a?�a��cs�APIi??a��e�?a�?Buffera�?c?�c�?a?�c��i??a?�e???????�e?�e�?c�?a?�cs�a?�e�?a��
  • C++ API

    LinkIn a��a??a??ATS?��aS�a?�a?�a?�C++cs�APIi??e?�e�?a??c?�e?�cs�?��a��aS� --with-cpp11api e��e??configure?�?e??a��

    C++ APIa?�a?�i?s

    • ts-cpp11.h
    • ts-cpp11-headers.h

    e?�a??APIa??e??a??a�Ya�?a��

ATS??�a��cZ?a??

  • ATS ??�a��???a??

    • globali?se?�c�????a??cs�??�a��i?????a?sa??a�?a��??�?�?i??a??a�???�?�??��????�?a???�?c?�i??a?�?��a�???�c�?a�?e?ze?�c?�a��
    • remapi?sa??c�???�e?�?��c�?e?�remapa�????a?Zcs�e?�?��hooke?�aZ�i?????a?�a???��aS�c?�c��a?�c�?e��e?�cs�a?�?�?a��
  • ATS ??�a��??????
    • global
      • TBD ??�a????�e??a�Yc�?tsxse?�a??a�?a��e??a�Yc�Y???a?�a?�??????a�?c�?i???�?a???�?c?�a?�
    • remap
      • TBD

ATS?�?a???�?c?�

  • ?�?c?�
  • hookc�?

a�?a?ZcS�?�????

  • a?�HttpSM

    HttpSM?????�ATScs�?�?a??http?�?c?�cS�?�????i??a??proxy/http/HttpSM.cc(.h)a?�a�sa?�cs�cS�?�????i??e?�????�?a??proxya?saS?cs�a��cS�?�????i???��??�cs�a��a��?�?c?�e?????a??e��a?Zi????�a�?e?�a?Zi?�e?�a??cS�?�????a?Scs�a��a��a�z???a�?e?�a��cachec��a��a?�c��e?�a???��a��a?Y???c��a�?ATSa?�??�a��cs�2a???��a��a?�a?�i??a�?e?�a?�e??cs�a�?c�???�???a?�cs�e??aS�a��

    HttpSMc�?a????�a��a?�a?�e��???e??i??a��a?Z???a??a??e�?cs�i??a��a???��??�cs�??�a��e?????hooka?�?�?a??http?�?c?�a?�e�????cs�a��a????�???c?�?�?a??a�?c�?cs�a??a��?�???�?�?a?�a��

  • a�?cS�?�????

    ?��e��a�?cS�?�????i??a��a�za??ATScs�a?�a��c?�c�Ye�?i??a?�a��e?????i??a??e�????a?sa?�a??c??a?�a�???�c�?cs�a?�?�?a��c?�a?�c��e�?a?�a�?a?�a??cS�?�????(processor)???a?si??c�?a?????e??e?�a?�e????�e??a?�az�a?�a��

    ATScs�a?�HttpSMcS�?�????a?�a?????a�?a�?a??a???Z�a?�cs�i??ATSa�?e�?a?�a??a��c?�a?�cs�e�?a��a�sa?�e�?a��cs�cS�?�????i??c�se�?c��e?�c�?a��a�s?��HttpSM?�?c?�i??e?�e�?a??a�?a?�e�?cs�a�?c�???�i?s

    • Prefetchi?sproxy/Prefetch.cci??.hi?�i??e?�???a?�a??a?sa?�?�?a??a?�cs�transform??�a��i??a??c�???�e�?e��htmlcs�?��a��i??e�??z?htmla?�???a?�?��??�e?�e??a�?c?�i??a?�aS?a?�e��a�z???a�?e?�a?�i?????e�?c�???�?�Ya?�a��e?�e�?cs�?�?a?????a?�a??a?Za?�a�z???cS�?�????i??a�?az�cs�e�?e�?a??a�?a?�e�?a��
    • example/protocoli??e?�???a?�a??a�?a�?e��c��HttpSMcs�a??e��a�?c�?a?�a�?i??e?�e�?a�sa?�a?�a?�a??protocol??�a��i??c�??Z?accepta?�a?�e�?a��a�?c��a?�e�?a��cs�SMcS�?�????i??e��e�?a��cs�c��c��?�?c?�(TxnSM.c)a��

ATSa�?c�??��

  • iocore

    IOcorec?�c�Y???a�sa?�??�?�?a??cs�ATSaY?c?�???a?�i??a�sa?�a?�a?�a��cs�?��??�a�?e��??�?z�i??e?�a?�???a?�a�???�?z�a?Za?saS?c?�c�Yc�?a??c��c��i??a��a?�a?�?��i?s

    • eventsystem a?�a��c?�c�Yi??a�sa?�a?�a?�a��c?�c�Ycs�e�?a?�???a?�a�?bufferc�?c?�c?�c�Yc��c��
    • net c?�c�?a��i??a�sa?�a?�c?�c�?a��c?�cs�aY?c?�??�?z�
    • aio a?�?�?IOcs�a�zcZ�i??a�zcZ�a?�c��a??a?Zlibccs�AIOc??c?�?�????
    • cache c?�a�?a?Z?��a��c?�c�Yi??c�?c?�c??c�?a�?a�?a�?a��a�?cachec��
    • cluster e��c?�e�sa??c?�c�Yi??e�?a�?e��c?�?��??�a?�a?�a??e��RPC
    • dns DNSe�??z?a�?c�?i????�a��e?�e�?a??a?�?�?cZ?a??a?�a?sDNScs�e�??z?a�???�c�?
    • hostdb DNSc?�a�?c?�c�Yi??e�?a�?a?�DNScs�a?�e�?cache

    IOcorec?�c�Yi??a�?c�?e��e?�c�?a??es�c��cs�e?????a??e��cs�i??a��?��a?�a?????a?�???e??a�Y??�e??c��c��cs�c?�e�?a�?a��a?�cs�a��

  • proxy

    Proxy???a?�a??a�?e?????ATScs�a?saS?e��e?�i??a?Y???traffic_servercs�a?�a�?c�??��a??a?�a��

    Proxya?�??�a��a????�e??a�?e��cs�???a?�i?s

    • loggingi?s?��e��cs�access?�?a?�???a?�
    • apii?s??�a��?��e??cs�APIe?????a�sa?�a??e?�e�?cs�a��i??C++API?�?a??libc��a?�a?�i?�
    • configi?sATScs�e�?c?�?��a��????��a��c��a?�
    • httpi?se?�???a�?e��cs�cS�?�????c��a?�

    a��a��a?�c�?aSYe??i??e???�?a??proxy/c��a?�a?�i??e?�e�?a?Y???aSYe????�a�sa�???�a?�cs�a?�?��a�?a��a��

  • cop

    cop???c�????a�??�?traffic_copa�?c�?cs�i??c�?a?????e???????�c��a?�cs�a�?c�?a��a��

  • mgmt

    e?�e�?a�??�?cs�???traffic_managera�?c�?a��a��a?�a�???�e�?a�se?�e�???�c?�cs�e�?a�?c�??��???a��

  • lib

    e?�e�?a�??�?cs�???ATScs�aY?c?�a?�i??c��?�?e�?aZYInktomi++cs�a�?C++?��a��a?�i??ATSa??a��e??a?�a??e��??�e??a��cs�a��e?�a??a?�???az�??�e???��i??a?�a?�e��c��e????�e??a�?e??a��?Y?a??e??e?�a??a��???C++?��a��a?�a�Sa��e??e??a?�a??i??95-99a??i?�ATSa?�a?�cs�?��a��i??C++?��a��e??a??a??e?Za?�a?�i?Y

    liba?�??�a��a??a�?e��???a?�i?s

    • tsi?sa???��e??cs�ATS C++?��a��a?�
    • recordsi?se?�a??c��a?�???stats|recordsc?�c�Ycs�a�?e��
  • example

    a�??�?SDKa��c�?cs�i??a�?a?S???a��c�?cs�?��??�??�a��a?�e�?a�?c�?a��a??a�??�?a??cs�e??i??ATSe??a�Ya?scs�a???�?i??a??e?�a??c��a?�a?�e??a??a�??�?a?�??�e???Z?e?�cs�a?�a�?a��a�Ze?�e�?cs�a�?c�?a?�a��a?saS?c?�c?�???a??a??cs�e��?��a��

  • tools

    a�??�??��e???��e?�a�?a��a��http_load jtesta�?a��a�?a?ScS�?�?e�Ye??a�?a��tstopc��

  • plugins

    a�??�??��??�a��a?�a?�a?�a�?c�?cs�??�a��c?�c�Ya�?c�?i?s

    • esi
    • cacheurl
    • regex_remap
    • a��a��experimental??�a��
  • doc

    a�??�?Admin?��a�?a�?man?��a�?c��

  • rc

    inite�s??�c��

分类: ATS核心, ATS调优, 插件开发 标签:
  1. 2013年6月13日18:40 | #1

    正在看代码,又学到不少东西。

  2. 2013年6月24日14:34 | #2

    豪哥,看了几遍官方文档VIO,VCONNECTION这些的使用还是不太明白。每个插件好像都用到了这些东西。能否再详细的介绍一下使用方法?

  3. tao_627
    2014年2月10日20:13 | #3

    很感谢豪哥心血积累的无私共享,有些东西说的很精辟,对很多关键而又易含混的概念说的很浅显易懂,比如这句,VConnection定义了一个可以串联的虚拟管道,可以让ATS在网络、状态机、磁盘间形成流式数据通信,是上层通信机制的很关键一环。至于领悟的程度,就只能靠个人的悟性和勤奋程度了。

  4. 2015年12月4日12:18 | #4

    很不错的分享,正在做ats的开发,很不错的分享;

  5. 木小南
    2016年10月10日15:22 | #5

    正在ats的入门阶段,很棒的资料,谢谢了。

  1. 本文目前尚无任何 trackbacks 和 pingbacks.
advertisement blocker for chrome software development company description software development company in ahmedabad software development company in austria software development company in bangalore software development company in baroda software development company in canada software development company in chandigarh software development company in coimbatore software development company in delhi