Talking to NAS via SBA (socket bus adapter)

TSESDS
Member Posts: 14
We are developing a client, which has to talk to NAS via the Socket Bus Adapter. The client can - for the moment - send two xml-requests, which it wants to send to the NAS to get the corresponding responses. The 1st request wants to get customer information from the navision system. The request is built as xml data which contains the customer id, for which the information should be returned. The 2nd request wants to book a invoice for a customer in the navision system. This requests is also xml data, which contains the customer no, account information, tax information and so on. The xml requests can have different lenghts but follow the same structure. The client comes as an exe file, which is programmed in C++ and can send and receive xml requests via TCP/IP-sockets. There could be several client processes on one or more PC's, which send their requests often simultaneously against the same NAS. To realize this kind of request/response scenario, we have the following problems/questions:
a) Who has experiences in such a scenario with simultaneous requests against NAV? Are there known drawbacks / critical issues?
b) The requests can have different lengths? How can the socket bus adapter recognize the end of any request? We believe that the property "BytesToRead" isn't appropriate for my purpose? The use of the property "ReceivingTimeout" cannot set to 0, because the length of the xml can reach a size where transport of consecutive packets is possible; whereas a high value of this property can slow down the processing of multiple requests for a given time.
c) For booking of invoices we want to take the codeunit "Gen. Jnl.-Post". We have seen that this codeunit uses MESSAGE-calls and the WINDOW-object. This cannot work within the processing in NAS or can it (who presses for example the OK button)?
d) We use SQL-Server as our database? What about deadlock situations when the NAS books invoices and people book invoices from their Navision Client applications?
e) Perhaps for load balancing it is necessary to take several NAS instances on one or more PC's. Does anyone has experiences in solutions with more than one NAS? Who dispatches the work (requests) for the available NAS?
](*,)
And finally we cannot wait for NAV 5.1 ...
Thanks for your help.
a) Who has experiences in such a scenario with simultaneous requests against NAV? Are there known drawbacks / critical issues?
b) The requests can have different lengths? How can the socket bus adapter recognize the end of any request? We believe that the property "BytesToRead" isn't appropriate for my purpose? The use of the property "ReceivingTimeout" cannot set to 0, because the length of the xml can reach a size where transport of consecutive packets is possible; whereas a high value of this property can slow down the processing of multiple requests for a given time.
c) For booking of invoices we want to take the codeunit "Gen. Jnl.-Post". We have seen that this codeunit uses MESSAGE-calls and the WINDOW-object. This cannot work within the processing in NAS or can it (who presses for example the OK button)?
d) We use SQL-Server as our database? What about deadlock situations when the NAS books invoices and people book invoices from their Navision Client applications?
e) Perhaps for load balancing it is necessary to take several NAS instances on one or more PC's. Does anyone has experiences in solutions with more than one NAS? Who dispatches the work (requests) for the available NAS?
](*,)
And finally we cannot wait for NAV 5.1 ...
Thanks for your help.
0
Comments
-
TSESDS wrote:a) Who has experiences in such a scenario with simultaneous requests against NAV? Are there known drawbacks / critical issues?b) The requests can have different lengths? How can the socket bus adapter recognize the end of any request? We believe that the property "BytesToRead" isn't appropriate for my purpose? The use of the property "ReceivingTimeout" cannot set to 0, because the length of the xml can reach a size where transport of consecutive packets is possible; whereas a high value of this property can slow down the processing of multiple requests for a given time.c) For booking of invoices we want to take the codeunit "Gen. Jnl.-Post". We have seen that this codeunit uses MESSAGE-calls and the WINDOW-object. This cannot work within the processing in NAS or can it (who presses for example the OK button)?d) We use SQL-Server as our database? What about deadlock situations when the NAS books invoices and people book invoices from their Navision Client applications?e) Perhaps for load balancing it is necessary to take several NAS instances on one or more PC's. Does anyone has experiences in solutions with more than one NAS? Who dispatches the work (requests) for the available NAS?
Edited: And sorry, after I wrote it I found, that you are talking about Socket bus and I am talkig about Microsoft Message Queues. :oops:
But may be something will inspire you...0 -
Thank you very much for your quick reply
I have to study your "inspirations". Some are independent of the choosen bus adapter. But with MessageQueues you don't have the problem to determine the end of each request. With the SBA you have :?
Do you know also a good docu for SBA?0 -
May be it is why the MSMQ is used in standard Microsoft solutions (Comerce Gateway, Employee portal etc.). Sorry, I have no docs about SBA.0
-
kine wrote:May be it is why the MSMQ is used in standard Microsoft solutions (Comerce Gateway, Employee portal etc.). Sorry, I have no docs about SBA.
I believe that the decision about the bus adapter isn't so important. Maybe we use also MSMQ. The base problem for all e-commerce applications which integrates with Navision seems to be the fact, that all "traffic" is handled by the NAS (CG/CP/EP/Webshop also use the NAS - that's right isn't it?), And the NAS works strictly sequential. Imagine a web shop where 20 customers enter their customer id to fetch their data from navision. Then these 20 requests run to NAS and are serialized. One by one get the corresponding response. Say that the 5th request blocks in a database operation (recCustomer.GET( '4711'). All the other requests have to wait until the block is over or a timeout occurs (is it possible to set a timeout for each GET operation?). It's difficult for me to imagine that "real" e-commerce applications can work in an acceptable manner with this sequential behavour. How do other developers face this problem? ](*,)
Thanks in advance.0 -
Many e-shops are running over some replicated DB (Commerce server etc.) - just few things are asking for "live" data over NAS or just when some data need to be stored into NAV (new order etc.). It means, data, which can be used off-line, are used off-line (product catalog etc.).0
Categories
- All Categories
- 73 General
- 73 Announcements
- 66.6K Microsoft Dynamics NAV
- 18.7K NAV Three Tier
- 38.4K NAV/Navision Classic Client
- 3.6K Navision Attain
- 2.4K Navision Financials
- 116 Navision DOS
- 851 Navision e-Commerce
- 1K NAV Tips & Tricks
- 772 NAV Dutch speaking only
- 617 NAV Courses, Exams & Certification
- 2K Microsoft Dynamics-Other
- 1.5K Dynamics AX
- 320 Dynamics CRM
- 111 Dynamics GP
- 10 Dynamics SL
- 1.5K Other
- 990 SQL General
- 383 SQL Performance
- 34 SQL Tips & Tricks
- 35 Design Patterns (General & Best Practices)
- 1 Architectural Patterns
- 10 Design Patterns
- 5 Implementation Patterns
- 53 3rd Party Products, Services & Events
- 1.6K General
- 1.1K General Chat
- 1.6K Website
- 83 Testing
- 1.2K Download section
- 23 How Tos section
- 252 Feedback
- 12 NAV TechDays 2013 Sessions
- 13 NAV TechDays 2012 Sessions