Jump to content

Stemon63

uniGUI Subscriber
  • Posts

    488
  • Joined

  • Last visited

  • Days Won

    35

Everything posted by Stemon63

  1. Yes, Abaksoft. Unigui is the right choice. To be (almost) perfect, however, it is necessary that some operations, where possible, must be client-side by option, perhaps because speed is needed in the calculations (I know, we will write ExtJs code) or because it is necessary to save resources if I only have to display a grid and the user enjoys scrolling for fun. Now Unigui is 100% server centric, I would like there to be the possibility to move the workload of the heavier operations to the client, clearly where there is the possibility to do it. Unigui remains my point of reference even if I am testing other solutions. Much also depends on the type of application to be carried out, of course.
  2. Hi Wilton, I have some running UNIGUI application that works very well. With Mariadb or Firebird as backend, (other in progress with PostgreSQL). No problem for years, and UNIGUI is my first "holy in heaven". Those are webapps that are on clouds, with max 100-120 concurrent sessions foreach. Just because I like it, I intend to rewrite more important and complex applications that are for a large number of users, applications that are now in Delphi VCL with Devexpress and that are served through Remote Desktop. In this case, the management of the number of users and bandwidth resources becomes strategic. We must not forget that a consistent number of tables are open for each session to manage the operations (and let's not forget that one of the advantages of Unigui is the management of the grids, otherwise it becomes difficult to recreate the desktop approach). A more client-oriented approach would allow us to power the local store and close the connection and datasets, postponing reconnections in the event of an update, just like the cached update with the ApplyUpdate, with considerable savings in resources and continuous communications with the server. because most of the operations are done in the meantime on the client. Regarding data security, I know very well that a different approach (such as Tmsweb core or other tools in javascript) forces to send data and structures in Json to the client, also exposing the address of the resources but this is the approach they use generally all client-oriented web products that use, for example, rest services. I assumed avoiding the SQL approach in the client, and using Rest services (although I prefer Json-rpc), clearly modifying the architecture with a lot more work, which I would possibly like to avoid 🙂 The strength of Unigui is to hide all the data management on the server, and to "mask" with aliases all the data sent to the client. I know this advantage very well 🙂
  3. Today those servers are used for remote desktop apps (DELPHI). The same that I HOPE to transform with UNIGUI in next months. Servers have 64 GB RAM and 2 Processor foreach (6-8 cores). Now balancing is made by the Remote desktop software itself. I HOPE to use new features of HyperServer with UNIGUI. For this reason I need more optimized client DBgrids and datasets, for avoid continuous "chatting" on grids scroll with server, that is no problem with few sessions, but the game change if I have thousands. Our competitors have pure web solutions with client-centric and rest services infrastucture with thousands of connections and few resources, solution closest to Tms web core; BUt I like and I need the power of UNIGUI, "lightning" communications and avoiding continuos chatting when not needed. I'm sure Farshad will address the subject. Unigui ROCKS.
  4. Hi Abaksoft, thank you. What I need is a way for perform calculate on ExtJs data store, the same that use Farshad for DBgrids. And it works perfectly. But I need to update the related fields on dataset server, on post record. On grids with fast and intensive input, we need some simple calculation (C=A+B) that I don't want perform on server side, with hight latency. I want to perform and show javascript calculation on client store (and works perfectly) with perfect display in grid. But i need to update that "C" result also on server, or record post. Other "problem" is that every scroll operation in grid call the server. I can avoid that in code, saving resource. But If I need to display the same data also on other editors outside the grid, I need to call the server. With client operation I hope to display grid data (selected record) also on other editors in form, without call the server. A "client" or "server" property for manage if data showed (or calculate) must be performed on client or in "standard" server mode. If I want to manage 50000 sessions I must works on client side, where possible, avoiding continuous "chatting" with server. Farshad have already written on new "client's features" in next releases. Sorry for my English 🙂
  5. 1000 users? We need 50,000 (with 10 servers, Ram 64 GB foreach). A dream? I think not, if Farshad add more client features 🙂
  6. No solution? I need to perform row calculation on client store and update the relative record in server's dataset (on posting).
  7. Hi Farshad, I need to perform fast calculations on grid rows. For example, in a DBGrid row, column3 is sum of column1 and column2; And I need to display updated Column3 value immediately, without delay, on every column1 or column2 input changes. The solution is to perform calc on client store. OK, it works. But HOW I can update then column3 value into dataset (server) on post? There is a client ajax call? (As I have already tell in another thread, it's time to create a "Clientdataset" for perform fast calculations on grids rows (i don't refer to grid totals) without involve the server for every change or select. Especially on some specific situation (a big supermarket cash register or when there are a lot of session with great network traffic). Thanks in advance
  8. Yes, but StringGrid is visual and for display pourpose only. I intend a way for use ExtJs Store (populate from Unigui) as a true client dataset. For lookups, for example. I have a "prototype" code for use store as lookups (but I don't known ExtJS). It's fast. BUt we need a Farshad "native" solution.
  9. It's time to use ExtJs Stores power, with a dedicate components for manage LOCAL (CLIENT) datasets. I need to download "static" memory tables (or queries) to clients for lookups or other needs, freeing up resources on server for every session. We need 2 different type of datasets: server and client one. Unigui already fill the client dataset, but leave open the original resource on server for manage changes and updates. Good is to have a client dataset, for several pourpose, that is disconnected from the server (zip lookups, cities, etc..) or for perform fast calculations on CLIENT side. Better is to have a client dataset with "cached update" features. So we can disconnect and close server query, perform CRUD ALL ON CLIENT, and reconnect to server for apply updates. This can save a lot of resource on server (especially on installation with a lot of users) and very very much network traffic. (now there is a call for every grid scroll or navigation key). UNIGUI is wonderful, but now we need more powerful CLIENT dedicate components in addition to existing ones, for optimize resource and traffic, shifting the load to the client. In the above scenario, many of the tables can be sent to the client (an operation that Unigui already does very well) without having to leave them open on the server. This for every session. That's a nice saving if you have 1000 active sessions :-) (Sorry for my bad english :-))
  10. I think the best solution is to create a client service on localhost that manage all scanning operations; Then you can call the service from javascript and send the result to server with ajax...
  11. HI Hayri, With Stress Tools Unigui works very well... also with a lot of sessions. But I want to avoid the excessive number of calls to the server when they are not needed. In my case, if I don't have data to display in other editors, and if I just have to search in a grid, there is no need to synchronize the server for each row and column movement, because I don't apply calculations or other controls. For this, I have adopted the system already addressed in another thread: function select(sender, selected, eOpts) { return false } For now this resolve my need on simple search lists (40% of application's forms) and optimize server calls :-) Thanks a lot
  12. Hi, I have the same problem in RowEdit mode. If I have an ActionColumn (a button), I need that is visible also on editing. Because that action button perform some calculation during editing or fill some default values.
  13. HI Hayri, I known very well stress tool, but I think that there is time to "rethink" some behaviors, which are harmful when we want publish applications with a high number of users. It is clear that Unigui chats with the server because it has to update both the data and the current record, otherwise the data logic on the server cannot be used. But I think it's time to introduce optional behaviors to perform operations on the client's store data (ExtJS store), with the management of the grids only on the client side, with the possibility of carrying out the cached updates on the "all-in-one" server call, and without any call to server events during input and navigation, unless expressly desired by the programmer. Only in this way will we be able to manage data traffic with the server efficiently, according to our needs. I don't think it's acceptable to have 1000 users scrolling through grids with a lot of data for consultation, and maybe inserting or modifying only a few records, generating continuous traffic with the server. Alternative solutions must be found to "lighten" the situation in certain cases. A kind of "cached updates" between client and server can be an excellent solution, for start. (We also have to deal with competing products on the web, which behave totally differently, as you know...) Sorry for my poor English :-)
  14. Hi, when user scroll records in dbgrids or navigate column by column, Unidbgrid calls continuos server. Tricky Question: in a Big application with a lot of users (thousands), how many users are needed to pull down a server, if all users "play" by scrolling and browsing continuously on a grid (with many records)?
  15. Hi Micromundo, it's time to ask Farshad for a "dedicate" property like "CustomProp" or similar in every Unigui components. You cannot continue to abuse with Hint property! :-) :-) Good job!
  16. Ok Farshad, I'm distressed by that 200 in Max limit... :-) Good job
  17. Hi Farshad, my simple test application have one form and few components. But at startup there are already 300-400 handles in server monitor. Why? Looking at resource savings for large projects, I need to understand why with an empty app there are already so many handles used. Thanks
  18. Hi, can you share your example code for this, so I will try if works for my scenario? Thanks in advance.
  19. Hi, Have you solved your problem? I have the same trouble; sometimes files are showed, sometimes they are blocked with code 405. Any hint? Thanks!
  20. Hi, I need to understand when a new session is created in server code. For avoid unecessary invalid sessions and resource consuption, especially on massive attacks or user hacking attemps, and also when I open sessions from links with additional parameters (via email), I need to understand when exactly the session is created, with the intention to abort the connection if there are wrong information WITHOUT create first a session and then destroy it. I see in other post that in TUniServerModule.UniGUIServerModuleHTTPCommand is used, when connection must be rejected: AResponseInfo.CloseConnection := true; AResponseInfo.CloseSession; At this point, session is already created and then destroyed, or never created ?? I am looking for a way for avoiding session creation on strange situations and directly close connection. Thanks in advance!
×
×
  • Create New...