RealThinClient SDK是用于开发标准的HTTP(S)服务器，ISAPI扩展以及客户端的VCL控件。可用于Windows下的CodeGear Delphi 6-2010。
VCL for writing stable HTTP(S) Servers, ISAPI extensions and Clients with CodeGear Delphi 6-2010 for Windows.
RealThinClient SDK是一个灵活和模块化框架，可以使用Delphi构建可靠和可扩展的跨平台应用程序，通过利用具有完整IPv4和IPv6支持的HTTP/S和内置的多线程，为Web设计了压力测试，以确保最高稳定性。通过使用内置线程池的非阻塞事件驱动通信，使用RealThinClient SDK构建的应用程序可以在所有支持的平台上通过在真正的多线程环境中使用有限数量的线程来处理数千个活动连接。
使用第三方加密组件作为RealThinClient SDK的插件（例如：StreamSec Tools 2.x = 99€）添加强大的SSL/TLS加密，或者在Windows上运行RTC客户端的内置SSL支持，并将RTC服务器代码转换为ISAPI DLL以在具有SSL支持的第三方Web服务器上运行（例如MS IIS，Apache或Abyss）
集成完整的JSON和XML-RPC支持：在Delphi中编写函数，并通过XML-RPC和/或JSON格式（JSON + REST，JSON-RPC 1.0和2.0）使第三方可以远程访问它们。轻松调用第三方以XML-RPC和/或JSON格式发布的远程功能。
RealThinClient SDK :服务器端组件
RealThinClient SDK : 客户端组件
IDE / 平台
VCL for writing stable HTTP(S) Servers, ISAPI extensions and Clients with CodeGear Delphi 6-2010 for Windows.
|RealThinClient SDK : Short Description of included Features|
|Write one server app and compile it as (a) robust Stand-alone Server, capable of serving unlimited number of clients, or as (b) ISAPI DLL extension which can be deployed to any ISAPI-capable Web Server (for example: MS IIS or Apache), or (c) integrate your application into third-party Message-based Servers like the NexusDB Server.|
|Everything you do with RTC is component-based, while all the code you will ever need to write is defined as events, so you can design your server and client applications, without the need to use wizards or write interfaces.|
turn on/off with
a simple switch
|A very sophisticated Threading mechanism is built into all RTC Connection components, which allows thousands of active connections to be running in separate threads, all at the same time. And the only thing you need to do is change a simple MultiThreaded property to True. Then, any newly received connection will be handled by a thread pooling mechanism which saves valuable System resources, while still enabling nearly unlimited number of simultaneous connections at the same time.|
No Firewall problems
|RTC Clients will never have to be specially configured to get through corporate firewall's and reach the internet. Simply by setting the UseProxy property to True, Data Client connection will use a connection provider which uses the same settings to read and send its data to the internet, as MS Internet Explorer does for browsing the Web. This means that Clients can work in any corporate LAN and have full access to the internet.|
|Non-Blocking||Other than most other internet components, RTC connection components are non-blocking and event-driven. This means that, even when not using a multithreaded mode, your users will not be blocked ("Application Not Responding") during communication between your client and the server. For each state change in the connection, there is an event that will be triggered.|
easy to write,
easy to call
|Implementing and using remote functions is as easy as writing local functions. You just place a RtcFunction component on your Form or a DataModule, set function name and write your OnExecute event. OnExecute event receives the Connection object, Function Parameters and a Result object. You just have to use the parameters passed to the function to prepare the result. The rest is done "under the hood" by RealThinClient components.|
Strong encryption &
|RTC components offer built-in, easy-to-use strong encryption with Encryption Keys of variable length and automatic data compression. You don't even have to think about encryption keys or data compression, everything will be generated and maintained for you. Using strong encryption and compression with remote functions is completely transparent, you will never have to worry about encryption or compression again. Simply set Encryption and Compression parameters in RtcClientModule and RtcServerModule, the rest is up to RTC.|
write your own plug-ins
or use 3rd-party plug-ins
|All Client and Server code you write using RTC SDK is ready to be used as building blocks or plug-ins in any application that uses RTC SDK. For example, you can combine a Web Server, Messenger server, Application server, Database server and your own functions in one Data Server, even when those components weren't specially designed to share the same Server space. Because of the easy-to-use plug-in framework on top of which all RTC Components are built, you can link unlimited number of functionality and data providing components like RtcDataProvider, RtcServerModule and/or RtcDataServerLink to one Data Server connection component, enhancing that server's functionality with each new component. And by keeping code in separate units (Data Modules), you can even provide your own plug-ins (and sell those plug-ins) to anyone who uses the RTC SDK Library.|
|Small footprint||A complete Web Server implementation, using RTC SDK, is less than 600 KBytes when compiled with D7. Even though it is so small, it offers enough functionality with great stability and scalability.|
|Build rock-solid Internet-ready applications|
All RTC components are stress-tested for the highest stability. Check Test Results for more info.
By using non-blocking event-driven communication with a built-in thread-pooling mechanism, RealThinClient SDK can handle thousands of active connections by using a limited number of threads in a real multi-threaded environment (for example, 100 threads will be more than enough to handle several thousand active connections). Combined with reduced need for all important resources (CPU, Memory, Threads, Timers, Handles, etc), automatic handling of all communication-related objects, flexible remote functions (accept any structure for parameters and return any other structure as a result), automatic session handling (integrated time-out with variable life time) and a lot more, makes writing stable and performant Servers and Clients very easy with RealThinClient components.
|What is inside the RealThinClient SDK package?|
|RealThinClient SDK : Server-side components|
|RtcHttpServer: implements the HTTP protocol over TCP/IP and is used to compile RTC components into a stand-alone server application (extends TRtcDataServer). All high-level server-side RTC components use TRtcDataServer descendants to communicate with HTTP Clients (RTC Clients, Web Browsers, SOAP Clients, etc). Best practice is to write all your code using high-level server-side RTC components separated on different data modules, then use one extra DataModule where you will use one RtcHttpSever to compile the functionality into a stand-alone server application (EXE).|
|RtcISAPIServer: implements the ISAPI interface and is used for for writing extensions for ISAPI-compatible web servers (extends TRtcDataServer). All high-level server-side RTC components use TRtcDataServer descendants to communicate with HTTP Clients (RTC Clients, Web Browsers, SOAP Clients, etc). Best practice is to write all your code using high-level server-side RTC components separated on different data modules, then use one extra DataModule where you will use one RtcISAPISever to compile the functionality into one ISAPI extension (DLL).|
|RtcMessageServer: implements an extensible Message-based Server-side component, which can be used to access RTC applications through third-party communication layers. RTC SDK includes a ready-to-use NexusDB plugin, which uses the RtcMessageServer component to integrate RTC applications into a NexusDB Server.|
|RtcDataServerLink: very useful when you have a number of Data Provider or Server Module components spread across units, because it groups related Data Provider components and links them to their Data Server connection. If you only have one or any small number of Data Provider components, you can link them directly to Data Server connection component, without the need of a RtcDataServerLink.|
|RtcDualDataServerLink: Link a group of RTC components to 2 or more Server connection components (RtcHttpServer and RtcMessageServer). This allows you, for example, to write your application code once, but make it accessible through the standard HTTP protocol, through a secure HTTPS protocol and (if required) through different message-based transports like the NexusDB transport layer.|
RtcDataProvider: used to implement events which will handle HTTP requests and prepare responses (for example, client requests a file, which has to be read from a local drive and written out as a response). Each Data Provider only responds to his requests, ignoring the rest. This makes Data Providers work as plug-ins for the Server, which can be used alone or in combination with other RTC components to create a powerful and multifunctional Server.
Here is a short list of possible Data Providers:
|RtcServerModule: execution point for a group of Remote Functions. It enables the Server to provide remote access to its remote functions. RtcServerModule has no events which would have to be implemented, you just link a RtcServerModule with its Server on one side and a RtcFunctionGroup on the other side to enable remote functions.|
RtcFunctionGroup: provides access to a group of functions. When used by a RtcServerModule, it automatically enables access to remote functions for all RTC Clients. When used by a RtcClientModule, it gives server the ability to call client-side functions as a result of client's function calls.
To implement remote functions, you will need at least one RtcFunctionGroup component and link one or more RtcFunction components to it. Function Groups also enable you to call other functions from the same group to fill parameters for other function calls. RtcFunctionGroup is primarily used by the RtcServerModule and RtcClientModule components to hold implementations for their remote functions, but it can also be used directly by any other component.
RtcFunction: link one RtcFunction to a RtcFunctionGroup, check that the Function Group is assigned to a RtcServerModule, then choose a "FunctionName" and write your function code in the OnExecute event. That's all you have to do to add a new remote function to your RTC Server.
When writing a remote function, you don't have to think about anything but your function code. In case of an exception (which you can also raise inside your OnExecute event handler), client will get the exception message as a result (Result.isType=rtc_Exception), so you don't even have to worry about that.
|RtcScriptEngine: makes it possible to use a Pascal-like scripting language from within HTML and/or XML files. When using the RTC Scripting Engine, you can decide for yourself how much of your application code you want to have in form of Delphi functions, compiled inside your Server or ISAPI extension, and how much you want to have in form of scripts inside your HTML/XML files. This allows you to combine the power of Delphi with the flexibility of scripting languages like PHP and JSP.|
|RealThinClient SDK : Client-side components|
|RtcHttpClient: this is the component that will be responsible for direct communication with your servers when using the HTTP or HTTPS protocol. It sends requests prepared by higher-level client-side RTC components like RtcDataRequest and RtcClientModule, then accepts responses and uses the same higher-level components to process those responses.|
|RtcMessageClient: this is the component which you can use to integrate your higher-level Client-side components (like DataRequest and ClientModule) into third-party transport layers. For example, by using the included NexusDB plugin, you can call RTC remote functions integrated in your NexusDB Server.|
|RtcDataClientLink: very useful when you have a number of Data Request or Client Module components spread across units, because it groups related client request components and links them to their Data Client connection. If you only have one or two data request components, you can link them directly to Data Client connection component, without the need of a RtcDataClientLink.|
|RtcDualDataClientLink: use to create a small pool of client connections, allowing the component to decide which connection to use when posting a request, depending on the number of currently pending requests on available connections. A new request will be posted through the connection with the lowest number of pending/active requests, unless you explicitly specify a different connection object.|
|RtcDataRequest: client-side counterpart to RtcDataProvider. It enables the client to post requests to a RTC Server or any other HTTP Server. Using this component, you can request files from a Web Server, post a SOAP request to a Web Service, execute a server-side PHP script, etc. Everything any HTTP Server is providing, you can request it using this component.|
RtcClientModule: client-side counterpart to RtcServerModule. It enables the client to call functions provided by the Server through one of its Server Modules. RtcClientModule has no events which would have to be implemented, you just link a RtcClientModule to a Client connection component (RtcHttpClient) and you can call remote functions.
If you define client-side functions and link them to this RtcClientModule, this will be the execution point of those client-side remote functions. No special implementation needed. Client-side remote functions are functions which server can call on the client-side as a result of client's calls to a server-side function.
|RtcResult: process results received from remote function call(s). Using the "OnResult" event, which receives the connection (Sender:TRtcConnection), parameters sent (Param:TRtcValue) and the result received (Result:TRtcValue), you can easily write the code to process the result. Maybe only do a simple check if function executed successfully, or show a message dialog, or create a separate form containing all data received, or fill received content into other component on the same form or datamodule (for example, fill ClientDataSet with records from a database).|
RealThinClient SDK Pro教程：从服务器发送大文件（第5课）
RealThinClient SDK Pro教程：从服务器发送小文件（第4课）
RealThinClient SDK Pro教程第5课-DEMO4-PDF
本示例是RealThinClient SDK Pro教程第5课-从服务器发送大文件一节教程的PDF文档。
更新时间:2018-12-04 15:03:47.000 | 录入时间:2009-02-12 14:32:36.000 | 责任编辑:况鱼杰
能够自检测问题，这一点很强大，用RealThinClient SDK Pro开发的服务器更加稳定些
RealThinClient 似乎不能与DevExpress 的TcxGrid 有正确互动。我是RTC新用户，在编写演示发现，RTC似乎似乎只能与TDBGrid 正常操作， 用上 TcxGrid 却有问题。 DevExpress 的元件在全球使用广泛，若RTC 不能与TcxGrid 配合使用，对我来说是不能接受的。