Skip to main content

Those Damn NRPCs

Since Notes is a client server solution it generates a significant amount of NRPC calls between the Notes client and the Domino server. Thousands of NRPCs are created during simple actions like searches and lookups. If you are developing Notes client applications that are used only inside your LAN you will never notice this because the NRPCs are quickly processed. However, if you are accessing the Domino server through the Web, the time to process the NRPCs grows exponentially as packet jumps from router to router. What took less then a second on your LAN could take minutes or longer. One way to reduce the delay cause by NRPCs is to process as much of your transactions using RunOnServer agents.

For our applications, we package everything as XML and process the XML using RunOnServer agents and return the response as XML which is then process on the Notes client using string manipulation which is very fast. From the response XML, we then populate the form. Therefore, there is separation between the data and form. In theory this should keep the NRPCs to a minimum.

I was on-site at our customers working with them to modify a project management tool that we developed. Since most of the users do not reside in the office where the server is located we spend a significant amount of time creating RunOnServer agents to handle the majority of the transactions. We also spent a significant amount of time on the UI to make the experience pleasant for the user. However, even with all this effort the NRPCs continue to bite us and each transaction is slower then it should be. The problem that I have discovered is that the field population process itself like:

doc.fieldName = "hello"

generates NRPCs though everything should be processing on the Notes client. This was very frustrating.

Comments

Christian Zalto said…
Well, I know exactly what you're talking about and facing the same problems with latency times summing up over WAN.
Typically I'd try to spread several replicas all over the world so that users don't need to work on a server located on a different continent. Even for applications that need a central storage place to avoid conflicts it is possible to reduce network traffic by replicating just the configuration database needed for lookups etc.
Another possibility is moving the application frontends to the web browser - no more RPCs calls at all from the client!
Christian,

This issue is one of the reasons beside others is why we are looking to move away from the Notes client. We are experimenting with Flex and AIR as a replacement for the Notes client. I do not know what IBM's exact plans are for this cloud computing (LotusLive) with the Notes client, but this NRPC issue makes the experience unpleasant. IBM should provide the Notes client the option to access the Domino server using HTTP services. This would resolve this issue.

Popular posts from this blog

Creating Twitter Bootstrap Widgets - Part II - Let's Assemble

Creating Twitter Bootstrap Widgets - Part I - Anatomy of a Widget Creating Twitter Bootstrap Widgets - Part II - Let's Assemble Creating Twitter Bootstrap Widgets - Part IIIA - Using Dojo To Bring It Together This is two part of my five part series "Creating Twitter Bootstrap Widgets".   As I mentioned in part one of this series, Twitter Bootstrap widgets are built from a collection standard HTML elements, styled, and programmed to function as a single unit. The goal of this series is to teach you how to create a Bootstrap widget that utilizes the Bootstrap CSS and Dojo. The use of Dojo with Bootstrap is very limited with the exception of Kevin Armstrong who did an incredible job with his Dojo Bootstrap, http://dojobootstrap.com. Our example is a combo box that we are building to replace the standard Bootstrap combo box. In part one, we built a widget that looks like a combo box but did not have a drop down menu associated with it to allow the user to make a select

The iPhora Journey - Part 8 - Flow-based Programming

After my last post in this series -- way back in September 2022, several things happened that prevented any further installments. First came CollabSphere 2022 and then CollabSphere 2023, and organizing international conferences can easily consume all of one's spare time. Throughout this same time period, our product development efforts continued at full speed and are just now coming to fruition, which means it is finally time to continue our blog series. So let's get started... As developers, most of us create applications through the conscious act of programming, either procedural, as many of us old-timers grew up with, or object-oriented, which we grudgingly had to admit was better. This is true whether we are using Java, LotusScript, C++ or Rust on Domino. (By the way, does anyone remember Pascal? When I was in school, I remember being told it was the language of the future, but for some reason it didn't seem to survive past the MTV era).  But in the last decade, there a

The iPhora Journey - Part 4 - JSON is King - The How

  The iPhora Journey - Part 1 - Reimagining Domino The iPhora Journey - Part 2 - Domino, the Little Engine that Could The iPhora Journey - Part 3 - Creating an Integrated UI Framework The iPhora Journey - Part 4 - JSON is King - The Why The iPhora Journey - Part 4 - JSON is King - The How As we mentioned yesterday, in reimagining Domino, we wanted Domino to be a modern web application server, one that utilized a JSON-based NoSQL database and be more secure compared to other JSON-based NoSQL platforms. A Domino document existing within a Domino database is the foundational data record used in iPhora, just as it is with traditional Domino applications. But instead of just storing data into individual fields, we wanted to store and process the JSON in a Domino document.  However, text fields (AKA summary fields) in Domino documents are limited to only 64 KBytes, and that is a serious limitation. 64 KBytes of JSON data does not even touch what the real world typically transfers back and fo