views:

317

answers:

6

I am looking for a communication framework for delphi, we know there are so many communication frameworks for other languages , wcf, ecf and so forth, but i have nerver found the one for delphi till now , anybody who knows about it can give me an ider?

There are some requirements i need ,as follows:

  • Building an application(server or client) without caring how to do communications with each other between two endpoints.

    Imagine that we use mailbox for exchanging messages,it seems that the communication is transparent.

  • Supports communication protocol extending.

    We often need to exchange the messages between 2 devices, but the communication protocol is not a public or general one, so we need to extend the framework,to implement a communication protocol for receiving or sending a message completely.

  • Supports asynchronous and synchronous communication

  • Supports transmission protocol extending.

    The transmission protocol can implemented by winsocket, pipes, com, windows message, mailslot and so forth.

In client application, we can write code snips like follows:

var
  server: TDelphiCommunicationServer;
  session : ICommunicationSession;
  request, response: IMessage;
begin
  session := server.CreateSession('IP', Port);
  request := TLoginRequest.Create;
  session.SynSendMessage(request);
  session.WaitForMessage(response, INFINITE);
  .......
end;

In above code snips , TLoginRequest has implemented the message interface.

+3  A: 

Take a look at Indy, which comes with Delphi. It's a mature communications framework that gets used in a lot of apps.

Mason Wheeler
Indy would be a good choice for the part where the OP said:"We often need to exchange the messages between 2 devices, but the communication protocol is not a public or general one".You could also try the ICS suite from Francois Piette. It is very much like Indy, but I find it a little simpler to use.
Warren P
Indy/ICS focuses more on TCP/IP stack, but I think Ryan wants something in the upper layer (WCF and so on are built on HTTP).
Lex Li
+11  A: 

Maybe RemObjects SDK is something you are looking for. It is a WCF like abstraction for a communication framework in which you can vary things like the message format, type of channels, etc. It comes ready with different channels like winsockets, pipes and windows messages.

Lars Truijens
I can second that. RemObjects SDK is the ideal framework when using communication with Delphi.
Sebastian P.R. Gingter
Does the RemObjects SDK includes a base "Client" and "Server" TCPIP component you can inherit from to write your own custom TCPIP protocol? I know about the remoting framework. But I'm curious if it has functionality parallel to Indy, ICS, and RTC-SDK.
Warren P
Yes. You can implement a custom protocol, which is called a 'Channel' in RemObjects SDK. You can also look here: http://wiki.remobjects.com/wiki/Channels
Sebastian P.R. Gingter
+1 RemObjects SDK
jamiei
A: 

You can have a look at Socket Communication which was inbuilt in Delphi. It was framework which implements both TCP/IP and UDP.

For basic information you can go through this link http://delphi.about.com/od/networking/l/aa112602a.htm

Bharat
+1  A: 

To write custom TCP IP client and server components for use in our applications, we are using the Internet Component Suite by Francois Piette, and the Real Thin Client SDK (RTC SDK) on various projects. Others use Indy to develop custom TCP/IP protocol client/server components.

To build an API that can then be "remoted" easily, you can use DCOM (not recommended!) or one of the "remoting toolkits" like the RemObjects SDK (recommended!).

Warren P
A: 

DataSnap is something shipped with Delphi, and since 2009 it has been redesigned to be WCF alike and much more powerful compared to its previous versions,

http://edn.embarcadero.com/article/38682

Lex Li
A: 

I have an open source framework (developed over the last 10 years) that does everything you need as well as implementing a threading framework and much more. You can find it at http://csinnovations.com/framework/framework.htm.

Cheers, Misha

Misha