• 0

[C#] soap is slow


Question

I was just noticing while transferring my binary files from my database my network utilization was only running about about 5.26%. Is there a reason .NET doesn't use 100% of your bandwidth when you are calling a web soap call? I'm transferring PDF files (which can avg about 6 MB per file) and it is agonizingly slow. The call is super fast for calls that the file is 500 KB or less. I have the feeling if it was really transferring the soap call as quickly as it could the network % would be 100 would it not?

Link to comment
https://www.neowin.net/forum/topic/1072085-c-soap-is-slow/
Share on other sites

14 answers to this question

Recommended Posts

  • 0

I was just noticing while transferring my binary files from my database my network utilization was only running about about 5.26%. Is there a reason .NET doesn't use 100% of your bandwidth when you are calling a web soap call? I'm transferring PDF files (which can avg about 6 MB per file) and it is agonizingly slow. The call is super fast for calls that the file is 500 KB or less. I have the feeling if it was really transferring the soap call as quickly as it could the network % would be 100 would it not?

Your assumption sir, is incorrect.

  • 0

SOAP isn't really designed for large files. It's supposed to be for messaging between endpoints. I would recommend using SOAP to expose a URL for the file and using normal HTTP or other methods for transferring the files.

This article may help some: http://msdn.microsoft.com/en-us/library/aa480521.aspx

  • Like 2
  • 0

I just spent the last couple months implementing a java soap web service in an asp.net application (it took so long because the group that wrote it either didn't care or didn't know that it didn't work in anything except java applications, and they had to fix it). All the service does is return either an image (as a byte array) or a URL to the image. Most of the images are less than 200KB, but there's a few that are over 1MB, and those take noticeably longer to retrieve and this is an internal intranet site. Like GreyWolf said, it'd be better to expose the URL to the file you want instead of actually returning the file, but if this is not an option, then you just have to work with what you have.

  • 0

Well all of the PDFs are stored as a byte array in a database. So I guess in theory I could save a tmp file and then expose the url to that tmp file. I'm guessing then use another method to download that file. The question is would that create more overhead then the way it's already being done?

  • 0

Well all of the PDFs are stored as a byte array in a database. So I guess in theory I could save a tmp file and then expose the url to that tmp file. I'm guessing then use another method to download that file. The question is would that create more overhead then the way it's already being done?

That's exactly what I did with the images that were coming back. I saved them on the server, then returned the direct URL to that image. There shouldn't be much (if any) overhead doing this other than the amount of time it'd take to save the file and finish the post back.

  • 0

Well all of the PDFs are stored as a byte array in a database. So I guess in theory I could save a tmp file and then expose the url to that tmp file. I'm guessing then use another method to download that file. The question is would that create more overhead then the way it's already being done?

I would say store the PDFs on a server with an accessible URL and store the address in the database. Did you check out the MSDN article I linked earlier? It has a number of suggestions on how to handle exactly what you're trying to do.

This article about SOAP + Attachments is referenced in the MSDN one but the link is old. It may be helpful as well.

  • 0

Sorry I should have mentioned I did look at those articles and they are really interesting. I'm going to go with the WCF MTOM route I think and re-design the core transfer functions. I don't know much about WCF but it looks really similar to regular web service (.asmx) coding. Or I may do the URL part I'm not sure. So many options lol. I really like the idea of the files being stored as a byte array blob in the database but if that just isn't a good practice maybe I should re-consider my methods. Because WCF will be basically the same thing just with a slightly more optimized method of transporting the xml file if I am not mistaken? MTOM just is an optimized method of transferring binary parts via soap message right?

  • 0

can you return sockets from web services to write data to?

You can, but there can be issues with it. Check the section labeled "Other Hybrid Approaches" in that article. :)

In reference to MTOM: http://msdn.microsof...y/aa528822.aspx

If your client and server are both using .NET you might also look into using remoting.

  • 0

I think part of the problem with the method I am currently using is that I may have my app.config setup incorrectly. There is a way I've heard to change how much data gets buffered / sent at once. So in theory if my internet can handle 1.2 MB/s then I could buffer 1.2MB then send it off as one chunk right?

  • 0

I think part of the problem with the method I am currently using is that I may have my app.config setup incorrectly. There is a way I've heard to change how much data gets buffered / sent at once. So in theory if my internet can handle 1.2 MB/s then I could buffer 1.2MB then send it off as one chunk right?

Theoretically; but I wouldn't advise it

This topic is now closed to further replies.
  • Posts

    • But we are talking about Elon Musk, no AT&T... I know big companies are evil, but Elon and his companies are in another level which is much more dangerous.
    • New PowerToys update fixes memory leaks and other issues by Taras Buria Another bug-fixing update is available for PowerToys version 0.100. After releasing version 0.100.1 with a bunch of bug fixes and patches, Microsoft pushed version 0.100.2 to address two important issues with one of Command Palette Dock's features. With PowerToys 0.100.2, Microsoft fixed the performance meter displaying incorrect values and memory leaks, which are particularly unwanted things in the current situation with overpriced PC hardware. Here is the changelog: Reverted a Performance Monitor dock refresh change that forced item refreshes on every metric update Fixed a memory leak in the Performance Monitor dock extension by reusing stable network upload/download band items instead of creating new list items on each refresh For those unfamiliar, Command Palette Dock is a relatively new addition to PowerToys. It is a taskbar-like tool that you can keep on top of the screen to pin various useful widgets, commands, and more. It can display time, weather, your PC's performance metrics, and more. Microsoft introduced the Command Palette Dock in March 2026 in PowerToys 0.98. Microsoft has dedicated documentation for Command Palette Dock, and you can check it out on the official Microsoft Learn website. You can update PowerToys to the latest version by going to Settings > General and clicking "Check for updates." Alternatively, you can download the installer from GitHub using this link. In other news, Microsoft is working on a new window-management utility for PowerToys. Called Alt Window Cycle, it will let you use the Alt + ` shortcut to switch between different windows in a single app. You can learn more about the tool here.
    • You did take leaf out of Trumps book already and had brexit - only to harm yourself. The same goes with this AI nonsense. The obvious solution for these companies is to move their head office to Brussels. I can see quite much irony there... 🙂
    • Thank gawd AT&T never worked with the US gov....
    • Wonder if they are trying to slow down Linux traction (not saying this is the only factor) in the consumer space. With the most pressure probably being steam deck/box, etc.
  • Recent Achievements

    • First Post
      OffsetAbs earned a badge
      First Post
    • Reacting Well
      OffsetAbs earned a badge
      Reacting Well
    • First Post
      Kolakid60 earned a badge
      First Post
    • One Month Later
      xvvxcvv earned a badge
      One Month Later
    • Week One Done
      xvvxcvv earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      422
    2. 2
      +Edouard
      181
    3. 3
      PsYcHoKiLLa
      136
    4. 4
      neufuse
      71
    5. 5
      Steven P.
      71
  • Tell a friend

    Love Neowin? Tell a friend!