📄 rfc2372.txt
字号:
RFC 2372 TIP Requirements and Supplemental Information July 1998 5) Suitability for All Application Classes The TIP protocol should be complete and robust enough not only for electronic commerce on the web, but also for intranet applications and for traditional TP applications spanning heterogenous transaction manager environments. The protocol should be performant and scaleable enough to meet the needs of low to very high throughput applications. a. the TIP protocol should support the concept of client-only transaction participants (useful for ultra-lightweight implementations on low-end platforms). b. since some clients may be unreliable, TIP must provide support for delegation of transaction coordination (to a more reliable (trusted) node). c. the TIP protocol must scale between 1 and n (> 1) concurrent transactions per TCP connection. d. TIP commands should be able to be concatenated (pipelined). e. TIP should be compatible with the X/Open XA interface. 6) Security The TIP protocol must be compatible with existing security mechanisms, potentially including encryption, firewalls, and authorization mechanisms (e.g. TLS may be used to authenticate the sender of a TIP command, and for encryption of TIP commands). Nothing in the protocol definition should prevent TIP working within any security environment. 7) TIP Protocol Transport Independence It would be beneficial to some applications to allow the TIP protocol to flow over different transport protocols. The benefit is when using different transport protocols for the application data, the same transport can be used for the TIP 2PC protocol. TIP must therefore not preclude use with other transport protocols. 8) Recovery Recovery semantics need to be defined sufficiently to avoid ambiguous results in the event of any type of communications transport failure.Evans, et. al. Informational [Page 13]RFC 2372 TIP Requirements and Supplemental Information July 1998 9) Extensibility The TIP protocol should be able to be extended, whilst maintaining compatibility with previous versions.References [1] Lyon, J., Evans, K., and J. Klein, "The Transaction Internet Protocol Version 3.0", RFC 2371, July 1998. [2] Transaction Processing: Concepts and Techniques. Morgan Kaufmann Publishers. (ISBN 1-55860-190-2). J. Gray, A. Reuter. [3] X/Open CAE Specification, April 1995, Distributed Transaction Processing: The TX Specification. (ISBN 1-85912-094-6). [4] X/Open Guide, November 1993, Distributed Transaction Processing: Reference Model Version 2. (ISBN 1-85912-019-9). [5] X/Open CAE Specification, December 1991, Distributed Transaction Processing: The XA Specification. (ISBN 1-872630-24-3). [6] Dierks, T., et. al., "The TLS Protocol Version 1.0", Work in Progress.Evans, et. al. Informational [Page 14]RFC 2372 TIP Requirements and Supplemental Information July 1998Authors' Addresses Keith Evans Tandem Computers Inc, LOC 252-30 5425 Stevens Creek Blvd Santa Clara, CA 95051-7200, USA Phone: +1 (408) 285 5314 Fax: +1 (408) 285 5245 EMail: Keith.Evans@Tandem.Com Johannes Klein Tandem Computers Inc. 10555 Ridgeview Court Cupertino, CA 95014-0789, USA Phone: +1 (408) 285 0453 Fax: +1 (408) 285 9818 EMail: Johannes.Klein@Tandem.Com Jim Lyon Microsoft Corporation One Microsoft Way Redmond, WA 98052-6399, USA Phone: +1 (206) 936 0867 Fax: +1 (206) 936 7329 EMail: JimLyon@Microsoft.ComComments Please send comments on this document to the authors at <JimLyon@Microsoft.Com>, <Keith.Evans@Tandem.Com>, <Johannes.Klein@Tandem.Com>, or to the TIP mailing list at <Tip@Tandem.Com>. You can subscribe to the TIP mailing list by sending mail to <Listserv@Lists.Tandem.Com> with the line "subscribe tip <full name>" somewhere in the body of the message.Evans, et. al. Informational [Page 15]RFC 2372 TIP Requirements and Supplemental Information July 1998Appendix A. An Example TIP Transaction Manager Application Programming Interface. Note that this API is included solely for informational purposes, and is not part of the formal TIP specification (TIP conformant implementations are free to define alternative APIs). 1) tip_open() - establish a connection to a TIP TM. Synopsis int tip_open ([out] tip_handle_t *ptiptm) Parameters ptiptm [out] Pointer to the TIP TM handle. Description tip_open() establishes a connection to a TIP TM. The call returns a handle which identifies the TIP TM. This function must be called before any work can be performed on a TIP transaction. Return Values [TIPOK] Connection has been successfully established. [TIPNOTCONNECTED] User has been disconnected from the TIP TM. [TIPNOTCONFIGURED] TIP TM has not been configured. [TIPTRANSIENT] Too many openers; re-try the open. [TIPERROR] An unexpected error occurred. 2) tip_close() - close a connection to a TIP TM. Synopsis int tip_close([in] tip_handle_t handle) Parameters handle [in] The TIP TM handle. Description tip_close() closes a connection to a TIP TM. All outstanding requests associated with that connection will be cancelled. Return Values [TIPOK] Connection has been successfully closed. [TIPINVALIDPARM] Invalid connection handle specified. [TIPERROR] An unexpected error occurred.Evans, et. al. Informational [Page 16]RFC 2372 TIP Requirements and Supplemental Information July 1998 3) tip_push() - export a local transaction to a remote node and return a TIP transaction identifier for the associated remote transaction. Synopsis int tip_push ([in] tip_handle_t TM, [in] char *tm_url, [in] void *plocal_xid, [out] char *pxid_url, [in] unsigned int url_length) Parameters TM [in] The TIP TM handle. tm_url [in] Pointer to the TIP URL of the remote transaction manager. A TIP URL for a transaction manager takes the form: TIP://<host>[:<port>] plocal_xid [in] Pointer to the local transaction identifier. The structure of the transaction identifier is defined by the local transaction manager. pxid_url [out] Pointer to the TIP URL of the associated remote transaction. A TIP URL for a transaction takes the form: TIP://<host>[:<port>]/<transaction identifier> url_length [in] The size in bytes of the buffer for the remote transaction URL. Description tip_push() exports (pushes) a local transaction to a remote node. If a local transaction identifier is not supplied, the caller's current transaction context is used. The call returns a TIP URL for the associated remote transaction. The TIP transaction identifier may be passed on application requests to the remote node (as part of a TIP URL). The receiving process uses this information in order to do work on behalf of the transaction. Return Values [TIPOK] Transaction has been successfully pushed to the remote node. [TIPINVALIDXID] An invalid transaction identifier has been provided. [TIPNOCURRENTTX] Process is currently not associated with a transaction (and none was supplied). [TIPINVALIDHANDLE] Invalid connection handle specified. [TIPNOTPUSHED]Evans, et. al. Informational [Page 17]RFC 2372 TIP Requirements and Supplemental Information July 1998 Transaction could not be pushed to the remote node. [TIPNOTCONNECTED] Caller has been disconnected from the TIP TM. [TIPINVALIDURL] Invalid endpoint URL is provided. [TIPTRANSIENT] Transient error occurred; re-try the operation. [TIPTRUNCATED] Insufficient buffer size is specified for the TIP transaction identifier. [TIPERROR] An unexpected error occurred. 4) tip_pull() - create a local transaction and join it with the TIP transaction. Synopsis int tip_pull([in] tip_handle_t TM, [in] char *pxid_url, [out] void *plocal_xid, [in] unsigned int xid_length) Parameters TM [in] The TIP TM handle. pxid_url [in] Pointer to the TIP URL of the associated remote transaction. A TIP URL for a transaction takes the form: TIP://<host>[:<port>]/<transaction identifier> plocal_xid [out] Pointer to the local transaction identifier. The structure of the transaction identifier is defined by the local transaction manager. xid_length [in] The size in bytes of the buffer for the local transaction identifier. Description tip_pull() creates a local transaction and joins the local transaction with the TIP transaction (the caller becomes a subordinate participant in the TIP transaction). The remote TIP TM is identified via the URL (*pxid_url). The local transaction identifier is returned. If a local transaction has already been created for the TIP transaction identifier supplied, then [TIPOK] is returned (with the local transaction identifier), and no other action is taken. Return Values [TIPOK] The local transaction has been successfully created and joined with the TIP transaction. [TIPINVALIDHANDLE]Evans, et. al. Informational [Page 18]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -