Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C#
  4. Developing a Client/Server application

Developing a Client/Server application

Scheduled Pinned Locked Moved C#
questioncsharpsysadminxmlperformance
12 Posts 5 Posters 1 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • K Offline
    K Offline
    Kingvest
    wrote on last edited by
    #1

    Hi, I have to develop a client/server application in C#. The connection between the server and the client hast to be persistent and encrypted. There will be steady dataflow on push basis from the server. My question is, what is the best approach to build this kind of application? Speed is one of the most important factors. I read an article about Bear Stearns who built their new stock market transaction server as XML web service. So, if anybody has some gnereal ideas i'd greatly appreciate that

    G H 2 Replies Last reply
    0
    • K Kingvest

      Hi, I have to develop a client/server application in C#. The connection between the server and the client hast to be persistent and encrypted. There will be steady dataflow on push basis from the server. My question is, what is the best approach to build this kind of application? Speed is one of the most important factors. I read an article about Bear Stearns who built their new stock market transaction server as XML web service. So, if anybody has some gnereal ideas i'd greatly appreciate that

      G Offline
      G Offline
      Guillermo Rivero
      wrote on last edited by
      #2

      I suggest to read about Remoting. I just finished a client/server application using remoting and it works very good. You can persist and encrypt using Remoting. Search in CP about remoting. Visit www.ingorammer.com[^] Free your mind...

      K 1 Reply Last reply
      0
      • G Guillermo Rivero

        I suggest to read about Remoting. I just finished a client/server application using remoting and it works very good. You can persist and encrypt using Remoting. Search in CP about remoting. Visit www.ingorammer.com[^] Free your mind...

        K Offline
        K Offline
        Kingvest
        wrote on last edited by
        #3

        I did but to me it looked more like remoting is used to offload processing to another computer. What I want are persistent connections for a couple hundred clients, constantly pushing or pulling data. So, this will be very performance critical. What are the other possibilities to approach this type of application? However, I'll have a deeper look at remoting and see whether it suits my needs

        G 1 Reply Last reply
        0
        • K Kingvest

          I did but to me it looked more like remoting is used to offload processing to another computer. What I want are persistent connections for a couple hundred clients, constantly pushing or pulling data. So, this will be very performance critical. What are the other possibilities to approach this type of application? However, I'll have a deeper look at remoting and see whether it suits my needs

          G Offline
          G Offline
          Guillermo Rivero
          wrote on last edited by
          #4

          Try webservices, but webservices will work for pulling data, as you know it works using a web server, and the web server can't send information to the clients, unless the client ask for the information. I used remoting to push and pull info from the server and the clients. Free your mind...

          K 1 Reply Last reply
          0
          • G Guillermo Rivero

            Try webservices, but webservices will work for pulling data, as you know it works using a web server, and the web server can't send information to the clients, unless the client ask for the information. I used remoting to push and pull info from the server and the clients. Free your mind...

            K Offline
            K Offline
            Kingvest
            wrote on last edited by
            #5

            That's the reason why I can't use web services as the data hast to be pushed to the client. What about developing an own TCP/IP Server... do you see any benefit in doing this?

            N G 2 Replies Last reply
            0
            • K Kingvest

              Hi, I have to develop a client/server application in C#. The connection between the server and the client hast to be persistent and encrypted. There will be steady dataflow on push basis from the server. My question is, what is the best approach to build this kind of application? Speed is one of the most important factors. I read an article about Bear Stearns who built their new stock market transaction server as XML web service. So, if anybody has some gnereal ideas i'd greatly appreciate that

              H Offline
              H Offline
              Heath Stewart
              wrote on last edited by
              #6

              I agree with the first reply that .NET Remoting is worth looking into, but there is another, easier alternative. You can use XML Web Services over HTTPS (HTTP over SSL) if your server has a valid certificate. If you're developing an internal application and have ActiveDirectory, you (or IT) can use the Certificate Services to create a Web Server certificate and install it in IIS. For external applications, I recommend getting an SSL cert from VeriSign, Thawte, or any other certificate authorities (CAs). Then, just make sure you use a URL to access your Web Servce using the https scheme instead of http. It is automatically encrypted without you having to do anything. If you do look into .NET Remoting - which is far more robust, though WS Security is certainly providing additional features for Web Services - I recommend a good book for both new and intermediate Remoting developers from Microsoft Press, ".NET Remoting" by McLean, Naftel, and Williams: http://www.microsoft.com/mspress/books/6172.asp[^]. You could use channel sinks to encrypt, compress, route, or anything else to the messages in an abstract manner. This book cover that and even includes an example channel sink and derivative RealProxy for doing basic load balancing. It's a good book!

              -----BEGIN GEEK CODE BLOCK----- Version: 3.21 GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++ -----END GEEK CODE BLOCK-----

              K B 2 Replies Last reply
              0
              • H Heath Stewart

                I agree with the first reply that .NET Remoting is worth looking into, but there is another, easier alternative. You can use XML Web Services over HTTPS (HTTP over SSL) if your server has a valid certificate. If you're developing an internal application and have ActiveDirectory, you (or IT) can use the Certificate Services to create a Web Server certificate and install it in IIS. For external applications, I recommend getting an SSL cert from VeriSign, Thawte, or any other certificate authorities (CAs). Then, just make sure you use a URL to access your Web Servce using the https scheme instead of http. It is automatically encrypted without you having to do anything. If you do look into .NET Remoting - which is far more robust, though WS Security is certainly providing additional features for Web Services - I recommend a good book for both new and intermediate Remoting developers from Microsoft Press, ".NET Remoting" by McLean, Naftel, and Williams: http://www.microsoft.com/mspress/books/6172.asp[^]. You could use channel sinks to encrypt, compress, route, or anything else to the messages in an abstract manner. This book cover that and even includes an example channel sink and derivative RealProxy for doing basic load balancing. It's a good book!

                -----BEGIN GEEK CODE BLOCK----- Version: 3.21 GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++ -----END GEEK CODE BLOCK-----

                K Offline
                K Offline
                Kingvest
                wrote on last edited by
                #7

                thanks for both your replies. I'll definitely have a deeper look at remoting. Unfortunately I can not use XML Web Services as i have to push date from the server to the client.

                1 Reply Last reply
                0
                • K Kingvest

                  That's the reason why I can't use web services as the data hast to be pushed to the client. What about developing an own TCP/IP Server... do you see any benefit in doing this?

                  N Offline
                  N Offline
                  Niels Penneman
                  wrote on last edited by
                  #8

                  This was already discussed elsewhere I think. I'll give you some advice: don't develop a server which handles each client in a separate thread, cause that will cause processor overloading with >20 clients. Maybe you'll find the answer at .NET 247 ;-) greetz ;-) *Niels Penneman*


                  Software/Dev Site
                  Personal Site


                  K 1 Reply Last reply
                  0
                  • H Heath Stewart

                    I agree with the first reply that .NET Remoting is worth looking into, but there is another, easier alternative. You can use XML Web Services over HTTPS (HTTP over SSL) if your server has a valid certificate. If you're developing an internal application and have ActiveDirectory, you (or IT) can use the Certificate Services to create a Web Server certificate and install it in IIS. For external applications, I recommend getting an SSL cert from VeriSign, Thawte, or any other certificate authorities (CAs). Then, just make sure you use a URL to access your Web Servce using the https scheme instead of http. It is automatically encrypted without you having to do anything. If you do look into .NET Remoting - which is far more robust, though WS Security is certainly providing additional features for Web Services - I recommend a good book for both new and intermediate Remoting developers from Microsoft Press, ".NET Remoting" by McLean, Naftel, and Williams: http://www.microsoft.com/mspress/books/6172.asp[^]. You could use channel sinks to encrypt, compress, route, or anything else to the messages in an abstract manner. This book cover that and even includes an example channel sink and derivative RealProxy for doing basic load balancing. It's a good book!

                    -----BEGIN GEEK CODE BLOCK----- Version: 3.21 GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++ -----END GEEK CODE BLOCK-----

                    B Offline
                    B Offline
                    bnieland
                    wrote on last edited by
                    #9

                    You want this book as reffed in this thread, it shows an implementation of an encrytion sink for remoting in Chapter 9. Remoting does seem to be your answer. DTrent

                    1 Reply Last reply
                    0
                    • N Niels Penneman

                      This was already discussed elsewhere I think. I'll give you some advice: don't develop a server which handles each client in a separate thread, cause that will cause processor overloading with >20 clients. Maybe you'll find the answer at .NET 247 ;-) greetz ;-) *Niels Penneman*


                      Software/Dev Site
                      Personal Site


                      K Offline
                      K Offline
                      Kingvest
                      wrote on last edited by
                      #10

                      hm but every client will receive different data concurrently. How else could this be accomplished without threads?

                      N 1 Reply Last reply
                      0
                      • K Kingvest

                        That's the reason why I can't use web services as the data hast to be pushed to the client. What about developing an own TCP/IP Server... do you see any benefit in doing this?

                        G Offline
                        G Offline
                        Guillermo Rivero
                        wrote on last edited by
                        #11

                        Why invent the wheel when you already have rockets going to mars ??? That's up to you, but remoting is very robust. Any way, if you need an example, I can send you some code. Free your mind...

                        1 Reply Last reply
                        0
                        • K Kingvest

                          hm but every client will receive different data concurrently. How else could this be accomplished without threads?

                          N Offline
                          N Offline
                          Niels Penneman
                          wrote on last edited by
                          #12

                          Sorry, it does require multiple threads, but make sure you are not running 200 threads at once, you'll have to pool / manage your threads... But that's something I - too (i guess) - am not familiar with. greetz ;-) *Niels Penneman*


                          Software/Dev Site
                          Personal Site


                          1 Reply Last reply
                          0
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • World
                          • Users
                          • Groups