Sign In
Nicholas Allen's Indigo Blog
Windows Communication Foundation From the Inside
Translate This Page
Translate this page
Powered by
Microsoft® Translator
Tags
Answers
Bindings
Channel Extensibility
Channels
Conferences
Contracts
Debugging
Encoders
Faults
Hosting
HTTP
Indigo
Learning
Message Security
Messages
Net4
Networking
Orcas
Pages
Performance
Proxies
Queues
Releases
Reliable Messaging
Security
Security Algorithms
Serialization
Service Architecture
Service Model
Silverlight
Standards
Stream Upgrades
TCP/IP
Transport Security
Transports
Browse by Tags
MSDN Blogs
>
Nicholas Allen's Indigo Blog
>
All Tags
>
channels
Tagged Content List
Blog Post:
Channel Development Survey
Nicholas Allen
The WCF channels team has posted a short survey on channel development to collect some of your feedback about what to work on after .Net 4 is released. You can help them out if you've previously written or tried to write a layered channel, transport channel, or message encoder. The survey should only...
on
29 Mar 2010
Blog Post:
Parsing Standard Uris, Part 2
Nicholas Allen
Here's another look at defining what it means to have a URI for the TCP or named pipe transports. You can compare these definitions to the version I gave yesterday using the parser syntax flags. I'll only cover the net.tcp URI scheme as the two are almost identical except for the use of ports. What...
on
26 Feb 2010
Blog Post:
Parsing Standard Uris
Nicholas Allen
The System.Uri class has built-in parsing rules for a variety of schemes, including http, https, file, ftp, gopher, mailto, news, nntp, telnet, and ldap. There are also parsers for the WCF net.tcp and net.pipe schemes. These parsing rules allow a uri using the scheme to be recognized, broken into its...
on
25 Feb 2010
Blog Post:
Finding the Remote Client Address
Nicholas Allen
After being a highly-requested feature, back in .Net 3.5 we added the ability to see the network address from which the client request had arrived. Here's how it works. Participating transports capture the client's network address using whatever sources of information they have available. The transport...
on
18 Feb 2010
Blog Post:
Three Networking Questions Answered with Samples
Nicholas Allen
How do I remove or change the framing headers used for a TCP connection? By writing a transport channel you can control exactly what information is read or written to the TCP socket. An example of doing this is in the WSE interoperability sample . How do I pass credentials from the client to...
on
4 Jan 2010
Blog Post:
What’s New in WCF 4: Channels
Nicholas Allen
As we get closer to the release of .Net 4 it becomes easier to talk about exactly what new features we’re planning to provide. This list is a bit different in places from what you’ve seen in the beta 1 release and there’s always a chance that things might change again. The first part of the list...
on
12 Aug 2009
Blog Post:
Finding Free Ports, Part 2
Nicholas Allen
Yesterday I talked about the algorithm the TCP transport uses to reserve a unique port when listening on both IPv4 and IPv6 addreses is enabled for a service. Why are the random port numbers drawn from the range 49152-65535? Because that’s the range the operating system uses for dynamic port allocations...
on
24 Jul 2009
Blog Post:
Finding Free Ports
Nicholas Allen
One of the options for the listen URI for the TCP transport is to let the transport make the address unique by filling in details such as the port number. The socket API allows specifying a wildcard port but at the time WCF was written the wildcard port option could only be used with a single IP version...
on
23 Jul 2009
Blog Post:
Top Down Binding Element Order
Nicholas Allen
Why does a message encoder have to be specified before the transport when constructing a binding? A message encoder doesn’t directly fit into a channel stack because the message encoder type doesn’t implement any of the channel shapes. Instead, a message encoder is an auxilliary piece used by one...
on
21 Jul 2009
Blog Post:
Just Exactly What You Asked For
Nicholas Allen
When implementing a transport or layered channel class the marker used to indicate that your class is a channel is to implement the IChannel interface. Therefore, all channels will implement one of the known channel shapes: IInputChannel, IOutputChannel, IDuplexChannel, IRequestChannel, or IReplyChannel...
on
2 Jun 2009
Blog Post:
Levels of Tracing, Part 6
Nicholas Allen
The last article in the levels of tracing series covers the logging of messages at the transport level. Transport level logging generally occurs in the message encoder as that is where the message bytes are actually processed but in some rare cases there are times when the transport sends messages without...
on
20 May 2009
Blog Post:
Non-Destructive Queue Receive State Machine
Nicholas Allen
The state machine for a non-destructive receive has some noticeable similarities to the state machine for a general-purpose communication object, but it's intentional for these two state machines to be different. A non-destructive receive tries with minimal overhead to provide support for at-least once...
on
8 Dec 2008
Blog Post:
Non-Destructive Queue Receive
Nicholas Allen
You should take the time to understand the earlier articles in the series for context if you haven't already. Future of Queuing An Alternative Queuing Model The three basic operations that we talked about for queuing with non-destructive receives are peek, lock, and delete. Rather than...
on
5 Dec 2008
Blog Post:
Advanced Windows Debugging
Nicholas Allen
Channel 9 has put up a new video that mostly plugs the Advanced Windows Debugging book by Mario Hewardt and Daniel Pravat. I recommend the book for someone that needs to debug difficult issues dealing with native resources. For most people working with WCF this is never really a concern, but custom transport...
on
11 Sep 2008
Blog Post:
Waiting for Ready Channels
Nicholas Allen
When I create a channel to a service, how do I know when the service is ready to process the data for that channel? A channel doesn't really know what the service is doing. The service might be actively processing the data being sent over the channel. Or, the service might not. There is a constant...
on
2 Sep 2008
Blog Post:
Adding Headers to a Call
Nicholas Allen
How do I add SOAP headers to an outgoing request? There are a few different ways to add headers to a message depending on how you need to control the header content and where you need to insert the header. I like to think of these methods as being split among the application, the proxy, and the...
on
7 Jul 2008
Blog Post:
Building with Encoders
Nicholas Allen
The basis of a channel stack is that there is a series of objects that share a common interface for communication. This leaves message encoders with something of a problem as the primitive operations for encoding and decoding messages are different than the primitive operations for sending and receiving...
on
29 May 2008
Blog Post:
TIBCO Announces WCF Integration
Nicholas Allen
At their user conference in San Francisco yesterday, TIBCO announced two integration initiatives to bring the TIBCO and Microsoft platforms closer together. TIBCO is developing a TIBCO EMS transport channel for WCF. Although Microsoft doesn't have a formal certification process for releasing third...
on
1 May 2008
Blog Post:
Context Channel Shapes
Nicholas Allen
What channels can be used in a context binding? The primary limitation for building a context binding is that the channel stack has to have the right shape. The context exchange protocol used by a context binding requires that the first invoked operation be a request-reply operation. This is so...
on
21 Apr 2008
Blog Post:
The Pipe DACL
Nicholas Allen
When a named pipe channel listener creates a new named pipe it has to supply a discretionary ACL that describes who can connect to the pipe. Here is how that DACL is constructed: An access control entry is added to deny GENERIC_ALL access to the well-known network SID (S-1-5-2). Access control...
on
1 Apr 2008
Blog Post:
A Proxy Proxy Factory
Nicholas Allen
I have a system that sometimes uses a fast local object and sometimes needs to communicate over a network. I have built a proxy object that wraps the proxy factory for creating typed proxies together with a proxy factory for creating local objects. Are there any downsides to this strategy? Historically...
on
28 Jan 2008
Blog Post:
Concurrent Channel Performance
Nicholas Allen
Being thread-safe is different than being concurrent. The channel interfaces are thread-safe so that multiple callers can use them at the same time without getting garbled messages. However, if multiple callers try to send messages on a single channel at the same time then a few different things might...
on
18 Dec 2007
Blog Post:
Custom Transport Retry Logic
Nicholas Allen
What are the best practices for building retry logic around network transport failures? Let's define some terms first so that we have a common language for communication. I'll say that "retry logic" is any automatically applied compensation activity that replays the same messages to either the same...
on
5 Nov 2007
Blog Post:
Substituting for TryAccept
Nicholas Allen
We're back to the channel pump for another round. In the previous channel pump article we had introduced an asynchronous coroutine between the main channel pump loop and a callback on acquiring a channel throttle. This use of coroutines let us suspend the channel pump until a throttle was available without...
on
26 Oct 2007
Blog Post:
No Session Before Sending
Nicholas Allen
When you create a sessionful channel, that implies the existence of some correlation factor for all of the messages that are associated with the session. For example, the correlation factor for a TCP session is that all of the messages travel over the same TCP connection and the correlation factor for...
on
25 Oct 2007
Page 1 of 4 (99 items)
1
2
3
4