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

Introducing iPhora Automate - User-driven Automation for Your Mission Critical Processes

By trade, I am an Electrical Engineer with a specialty in Microwave Engineering. And as part of my education, I had to take courses in process and industrial engineering which involved process optimization and automation. I hated these two courses and naively thought I would never ever use the information that I learned in these two courses. I only had interest in the technical aspect of engineering and with my first job out of college that is what I did. Never did I ever thought that I would spend the past 20 years focused on stuff that I hated in college. The concepts of iPhora came out of issues that we encountered as we rapidly grew another business many years ago from which spawn our business process automation business which we have been doing for the past 20 years. For the past few years, we have been transforming our consulting service platform into a commercial off-the-shelf product that focuses on the business user as the target audience. We would like to introduce iPhora Aut