Jump to content

NetCom - new communication library for Delphi


Mohammed Nasman

Recommended Posts

There's a new communication library for Delphi, and it claim to be much faster than indy, I may not sure if it's possible to add support with it to Unigui

Quote

The fastest communications possible.

This is version 7.2 of the NetCom package. In this version, the NetCom package is now multi-platform! You can compile your apps under all platforms in FireMonkey!

This set of components is the fastest possible implementation of socket communications, in any language; this is an extremely optimised code on TCP/IP sockets. Forget using a thread per connection: With this suite you can have as many concurrent connections to your server as you like. Threads are used per request and not per connection, and are maintained in a very fast thread pool class.

 

https://github.com/DelphiBuilder/NetCom7

 

  • Like 1
Link to comment
Share on other sites

Very good news!


It would be nice if UniGUI could take advantage of it. Since we no longer see evolutionary updates on Indy. Other frameworks are starting to look for new layers of communication, like Grijjy, which I like a lot. But this really means a huge and heavy job for the FmSoft team ...

  • Like 1
Link to comment
Share on other sites

On 8/13/2020 at 5:26 PM, RobertoLopes said:

Must not be dificuult. I use sockets on my unigui applications all the time !

@RobertoLopes, that was not what I meant, I was saying that I would like to Unigui implement NetCom as communication library to replace indy in Unigui, it will make it more scalable and faster.

Link to comment
Share on other sites

On 8/16/2020 at 5:43 AM, Mohammed Nasman said:

@RobertoLopes, that was not what I meant, I was saying that I would like to Unigui implement NetCom as compunction library to replace indy in Unigui, it will make it more scalable and faster.

Ow yes. Sorry for that. You are right.

Link to comment
Share on other sites

  • 1 month later...

I am the NetCom library creator! Wow man, how fast did you pick up I put NetCom out there?! I had just made the code public when you wrote this post!!!

Anyway, NetCom is a set of non-visible components (doesn't use interface), so it should be very easy for them to be used in any framework. But even if you don't use them for the client side of things, you can always utilise their performance for your middle to server side. BTW, NetCom does not target HTTP stuff, it is meant to be used for high speed backend implementations.

I could implement a HTTP set, however, I don't want to contribute at all to the web BROWSER scene, I think web BROWSER based apps should have died a long time ago. For me the future is all native, especially now that we have almost hit the limits of processing speed (you cannot go lower than the atom in a field effect transistor). I think the next decade will strive to put performance back into play. 

Link to comment
Share on other sites

Hi RobertoLopes

I am using websockets with UniGui, however, I have a difficulty that the client socket when it receive a message, I can't access another frame or component, I been trying to unhide a panel but is not working. Have you come across such issues and if you have how did you solve it. I tried the following test the button works but not if is changed from the webclientsocket event.

procedure TMainForm.sgcWebSocketClient1Message(Connection: TsgcWSConnection;
  const Text: string);
begin
  uniMemo1.lines.add(Text);     //memo get updated with the text but memo stays invisible.
  UniMemo1.Visible := not UniMemo1.Visible;
end;

procedure TMainForm.UniButton1Click(Sender: TObject);
begin
  uniMemo1.lines.add('Button clicked');
  UniMemo1.Visible := not UniMemo1.Visible;
end;

Regards

Link to comment
Share on other sites

2 hours ago, Bill Demos said:

I think web BROWSER based apps should have died a long time ago. For me the future is all native, especially now that we have almost hit the limits of processing speed (you cannot go lower than the atom in a field effect transistor).

uniGUI survived for the last 10 years and seems that going to live a long life. It helps us to generate web browser based apps. The directions in software development is decreasing the speed gap between native and web browser based. At some point all browsers will be running native containers.

The companies benefit from native apps are those who charge good commissions to publish apps on their native app stores.

  • Upvote 1
Link to comment
Share on other sites

3 hours ago, MOGSY said:

Hi RobertoLopes

I am using websockets with UniGui, however, I have a difficulty that the client socket when it receive a message, I can't access another frame or component, I been trying to unhide a panel but is not working. Have you come across such issues and if you have how did you solve it. I tried the following test the button works but not if is changed from the webclientsocket event.

procedure TMainForm.sgcWebSocketClient1Message(Connection: TsgcWSConnection;
  const Text: string);
begin
  uniMemo1.lines.add(Text);     //memo get updated with the text but memo stays invisible.
  UniMemo1.Visible := not UniMemo1.Visible;
end;

procedure TMainForm.UniButton1Click(Sender: TObject);
begin
  uniMemo1.lines.add('Button clicked');
  UniMemo1.Visible := not UniMemo1.Visible;
end;

Regards

YEs. You CANNOT update your screen components from the receive message events because it's a server side event . You need a client side event to update your screen. You will have to have a TUniTimer (1 second is enouth) and on the received message you put the text on a variable and set a trigger like a boolen variable messageReceived =  true and on the timer event you check this variable and change your screen.

Like this: 

procedure TMainForm.sgcWebSocketClient1Message(Connection: TsgcWSConnection;
  const Text: string);
begin
  txtVar := text;  

  messageReceived := true;
  
end;

procedure TMainForm.timerStatusTimer(TComponent: Sender) 

begin

      if(messageReceived) then

      begin

            messageReceived := false;

           uniMemo1.lines.add(txtVar);

           txtVar := "";

     end;

end;

 

Sorry for my Delphi "skills" I am a C++ Builder guy.           

 

Link to comment
Share on other sites

2 hours ago, Mehmet Emin said:

uniGUI survived for the last 10 years and seems that going to live a long life. It helps us to generate web browser based apps. The directions in software development is decreasing the speed gap between native and web browser based. At some point all browsers will be running native containers.

The companies benefit from native apps are those who charge good commissions to publish apps on their native app stores.

Plus, with the right setup you can have (as we actually have) 15000 users on a system.

Link to comment
Share on other sites

11 minutes ago, MOGSY said:

Thank you RobertoLopes, By the way what kind of server you use to achieve such a high users on a system?

Regards

We have an IIS Cluster on cloud with 4 servers plus 2 database servers. Running Hyperserver . (I cannot wait to see the Hyperserver Farm running).

  • Like 1
Link to comment
Share on other sites

1 hour ago, RobertoLopes said:

Temos um cluster IIS na nuvem com 4 servidores mais 2 servidores de banco de dados. Executando o Hyperserver. (Mal posso esperar para ver o Hyperserver Farm rodando).

how did you do the load balancer? I'm here trying to implement nginx
Link to comment
Share on other sites

7 hours ago, Bill Demos said:

Eu sou o criador da biblioteca NetCom! Nossa, quão rápido você pegou eu coloquei o NetCom lá fora ?! Eu tinha acabado de tornar o código público quando você escreveu este post !!!

De qualquer forma, NetCom é um conjunto de componentes não visíveis (não usa interface), então deve ser muito fácil para eles serem usados em qualquer framework. Mas mesmo que você não os use para o lado do cliente, você sempre pode utilizar o desempenho deles do meio para o lado do servidor. BTW, o NetCom não tem como alvo o HTTP, ele deve ser usado para implementações de back-end de alta velocidade.

Eu poderia implementar um conjunto HTTP, no entanto, não quero contribuir de forma alguma com a cena do BROWSER da web, acho que os aplicativos baseados no navegador da web deveriam ter morrido há muito tempo. Para mim, o futuro é todo nativo, especialmente agora que quase atingimos os limites da velocidade de processamento (você não pode ir abaixo do átomo em um transistor de efeito de campo). Acho que a próxima década se esforçará para colocar o desempenho de volta em jogo. 

I tried to use your library to create a chat in unigui, but the message reaches the server, but does not forward it back.
Link to comment
Share on other sites

On 17/08/2020 at 11:40, wilton_rad said:

sim, vejo muitas novidades que o indy está desatualizado e existem soluções melhores, nosso querido mestre fashard, já disse que ele tem planos de implementar outros meios de comunicação http, vamos esperar ele comentar isso.

Wilton, considering the context of Fashard speech, he referred to communication between the HyperServer ISAPI and the EXE application. Because to maintain compatibility is still done in HTTP, when implementing TCP/IP and or Pipes, we will have better performance in the flow of data between the manager and its nodes.

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...