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 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