Key Benefits - GenuineChannels/GenuineChannels GitHub Wiki

By Dmitry Belikov

Genuine Channels Is...

What is Genuine Channels? The answer is both simple and complex. Simple, because Genuine Channels is a solution that can save you about 1000 man-hours or more than $50,000. Complex, because it depends on who you are.

images/main.gif

  • For Team Managers and Software Architects, Genuine Channels can serve as a reliable middleware framework combining the performance of socket-based solutions, the convenience of .Net Remoting, and the reach functionality of Web Services.

  • For Developer, Genuine Channels is a comprehensive toolset which noticeably simplifies and accelerates the development of robust .Net Remoting applications.

  • For Students and Beginner, Genuine Channels provides an easy-to-use guide for designing, developing, debugging, and deploying distributed software.

Key benefits

  1. Genuine Channels provides accessibility for clients behind NAT, firewalls and web-proxies.
  2. Genuine Channels lets you build event-driven, distributed applications with broadcasting, recipient filtering, and IP Multicasting.
  3. Genuine Channels has the Shared Memory Channel, which is the fastest way to communicate with a remote host on the same computer.
  4. Genuine Channels allows you to monitor a connection state and react to network events.
  5. For managing invocations, Genuine Channels offers reach tools such as compression, timeouts, and connection patterns.
  6. Genuine Channels increases network exchange performance by using the Persistence Connection Scheme.
  7. Genuine Channels provides high-end Security Capabilities such as authorization, authentication, and encryption.
  8. Genuine Channels has a comprehensive toolset for gathering and managing information about the remote host.
  9. Genuine Channels offers true asynchronous .Net Remoting with different modes of Thread Pool usage.
  10. Genuine Channels gives you advanced logging capabilities and greatly simplifies debugging and deploying of distributed applications.
  11. Genuine Channels contains a complete set of documents explaining different strategies and approaches useful in designing, implementing, and supporting client-server software.
  12. Genuine Channels has a prompt and highly qualified support staff.

Benefit #1

images/bad_1.gif

Native TCP and HTTP channels use one TCP or HTTP connection for ferrying calls only in one direction. If you want to invoke client’s object from the server, the server must connect to the client’s port. That is, if your server needs to inform several clients or a specific client about an event generated by the server itself or by any connected clients, then a TCP or HTTP connection is opened from the server to every client. Thus a client has to listen to the specific TCP port and open additional connections in order to receive calls from the server. This scheme spawns firewall, NAT and proxy-related problems because such connections are usually denied by default.

images/good_1.gif

Genuine Channels provides a bidirectional link via connections opened by client applications. You will be able to deliver events and invocations to client applications even if they are behind NAT, firewalls, and web-proxy servers.

With Genuine Channels you will not have any problems with NAT, firewalls, and web-proxy servers. You will safely receive the server’s events even if a client application is thousands of miles apart and get access through a proxy requiring authorization.

Benefit #2

images/bad_2.gif

Imagine that you have several clients connected to a server and you want to send the same message to some or all client applications. There is, in fact, no efficient implementation based on native channels since the native channels always send requests synchronously. That is, either you have to have a thread per client while you deliver the event, or you must invoke all client applications one after another. Having one thread per invocation is unacceptable on the server side. Consecutive invocations are slow, so the server and all clients will suffer from any client application having problems with the connection.

images/good_2.gif

Genuine Channels has the Broadcast Engine that greatly simplifies implementation and management of events. The Broadcast Engine hides event raising; you call the usual object and every invocation of this object will be delivered to all subscribers. Broadcast Engine has a powerful mechanism for tracking event delivery and timeouts, for analyzing event results, and the filtration of recipients. The implementation is very efficient; the message is serialized only once and then sent concurrently and asynchronously. In addition, the Broadcast Engine transparently supports IP Multicasting, which greatly reduces the traffic and load on the server.

Even though raising events is not easy in a distributed environment, Genuine Channels provides a viable solution to implement this quickly and reliably.

Benefit #3

images/bad_3.gif

Sometimes you may need to use services hosted on the same computer. Using native channels is inefficient since the traffic will go via a TCP connection. Using COM objects is more sophisticated and can lead to DLL hell.

images/good_3.gif

Genuine Channels provides the Shared Memory Channel that uses memory shares providing the fastest possible connection. The Shared Memory Channel supports synchronous and asynchronous operations and has a complete set of features provided by the Genuine Channels solution.

Make your server work twice faster with the Genuine Shared Memory Channel! Enable client-server functionality without a network!

Benefit #4

images/bad_4.gif

Using native channels, how is it possible to determine that a connection to the server is not available anymore? How can you tell whether the server has been restarted? How do you know if the server still remembers the current client and it will receive the server’s events? The only way to implement this with native channels it to poll the server constantly, asking, “Do you still remember me?!”

images/good_4.gif

Genuine Channels provides a very reliable system of channel events that eliminates these problems completely. If the server has been restarted or has lost the state of the client application, you will know it immediately. In addition, an end-user can quickly understand what has happened if you display the status of the connection.

You need guarantees that the server is behaving as expected — that it was not restarted or shut down. Genuine Channels give you these guarantees. You will be able to react to network events quickly and efficiently.

Benefit #5

images/bad_5.gif

You may want to perform different business operations with different network options and content processing features. This can include the use of compression, security services, invocation modes, and invocation parameters. There is no easy way to apply invocation options for particular invocations with native channels.

images/good_5.gif

Genuine Channels allows you to specify different options for your invocations. You can apply compression, different security options, timeouts, and invocation modes to some or all invocations as needed.

An efficient client-server application must rule its actions. Genuine Channels provides a wide range of controlling options.

Benefit #6

images/bad_6.gif

Native channels have the peculiarity of opening one connection per invocation. Establishing each connection takes additional time, CPU and network resources. In addition, native channels do not care why the connection was lost, despite the fact that it is the shortest way to recognize a change in the state of the server.

images/good_6.gif

Genuine Channels uses the Persistent Connection Pattern by default. In this connection mode, a single connection is established by the client application and is used as a bidirectional link. This improves performance because the network layer operates with IP packets, not connections. The fewer connections you have, the fewer IP packets you need to send.

Genuine Channels recognizes changes in server behavior by controlling the connections. For example, if a connection is broken, it is necessary to check whether the server is available and whether it has been restarted. No messages are lost if the connection is successfully reestablished. If the connection cannot be reestablished or a remote host has lost the state, you will know about this through Channel Events.

Genuine Channels uses network resources efficiently. With Genuine Channels there is no need to worry about missing important application events.

Benefit #7

images/bad_7.gif

Native channels provide only rudimentary security options. You will have to write your own sinks and will find it difficult to customize security at runtime. Framework 2.0 is a step up but will not fix the entire situation.

images/good_7.gif

Genuine Channels provides the full spectrum of security services including encryption, content integrity checking, content signing, impersonation, delegation, and custom authentication. You can create and use different politics concurrently and independently. Genuine Channels provides the technology to authenticate a user without sending a password through the network.

Genuine Channels provides a complete set of security services. You need just three lines of code to use SSPI and Kerberos with Genuine Channels.

Benefit #8

images/bad_8.gif

How will you know whether the user has passed authorization? How will you keep information related to a remote host and fetch it every time a client makes a request? What about data compression? How will you invoke services on the client side?

images/good_8.gif

Genuine Channels answers all these questions. The collection associated with a particular remote host is called Client Session and is available anywhere you need it. The URI assigned to each host turns each remote host into a server. Since a client application gets connected to the server application, there is virtually no difference between them!

With Genuine Channels you can really use .NET Remoting, not merely accommodate to it. You can continue using all the concepts implemented in ASP.NET and other client-server methodologies without reinventing the wheel.

Benefit #9

images/bad_9.gif

Initially Completion Ports were designed to load all available CPUs as efficiently as possible. However, if a working thread must wait for a device or network information, the CPU is being not used. To avoid this situation, the .NET Framework creates several working threads per CPU, but their number is always limited. As a result, if a server performs any long-duration actions or talk with client applications, there is a chance that all working threads will be exhausted causing the server to stop working.

images/good_9.gif

Genuine Channels supports different modes of Thread Pool usage which avoids this and similar problems completely.

The Thread Pool issue can create difficulties. But not for you when you use Genuine Channels.

Benefit #10

images/bad_10.gif

Once you have a client-server solution, you need to stay informed about processes taking place on both client and server. If problems arise, you need to know what steps are necessary to reproduce them. You might need to know how the server behaved while you were absent. The native channels do not provide any reasonable network logging capabilities, tracking of invocations, or problem details. And you do not have the source code for native channels. You will not be able to walk through the execution path to understand what happened and why.

images/good_10.gif

Genuine Channels provides logging of network and channel events through its built-in logging system and channel event system. Each exception fired by Genuine Channels contains all the details of the problem and has a unique type and error identifier. And Genuine Channels is distributed with source code. You will not be left guessing at unpredictable situations.

With Genuine Channels you will be able to understand exactly how your distributed solution works. Save time with Genuine Channels!

Benefit #11

images/bad_11.gif

Each technology has specific pros and cons. If you are going to achieve success with .NET Remoting, you must understand its hidden dangers. You might think it is interesting to face new difficulties every day. But if you want to get results in predictable time frames, you will have to conform to the .NET Remoting way.

images/good_11.gif

Genuine Channels provides a Beginner’s Guide containing all the information vital to any beginner. The Programming Guide explains technical issues. Knowledge Base and a Discussion Group allow you to share problems and solutions with other developers.

The Genuine Channels Solution is not just a DLL. It is a documented and approved path to success.

Benefit #12

images/bad_12.gif

Are you faced with unanswered questions while learning .NET Remoting technology? Do you need to know how to implement a specific functionality? Does your application not behave as expected? Do you want to see if you have arrived at the best solution?

images/good_12.gif

Choose Genuine Channels and we will answer all your questions! Normal response time is within 24 hours, and we always provide a solution or a workaround. Ask your questions via email or in the Discussion Group. No question will be left unanswered.

Feel safe with our support. Our documentation and accumulated support experience will certainly benefit you.