{"id":58,"date":"2005-11-01T11:34:16","date_gmt":"2005-11-01T18:34:16","guid":{"rendered":"http:\/\/kennyw.com\/indigo\/58"},"modified":"2005-11-01T11:34:16","modified_gmt":"2005-11-01T18:34:16","slug":"from-contract-to-channel","status":"publish","type":"post","link":"https:\/\/kennyw.com\/?p=58","title":{"rendered":"From Contract to Channel"},"content":{"rendered":"<p>When you create a client channel through ServiceModel, the <a href=\"http:\/\/kennyw.com\/indigo\/13\">shape<\/a> of the channel is determined by various properties of your contract. Roughly the mapping is as follows:<\/p>\n<table border=0 cellspacing=0 cellpadding=0 width=411 style='width:308.0pt;margin-left:4.65pt;border-collapse:collapse'>\n<tr>\n<td nowrap valign=bottom style='border:solid windowtext 1.0pt;border-right:none; padding:0in 5.4pt 0in 5.4pt;height:13.5pt'>\n    <b>OneWay<\/b>\n  <\/td>\n<td valign=bottom style='border-top:solid windowtext 1.0pt;  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:none;  padding:0in 5.4pt 0in 5.4pt;height:13.5pt'>\n  <b>Request\/Reply<\/b>\n  <\/td>\n<td nowrap valign=bottom style='border-top:solid windowtext 1.0pt;  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:none;  padding:0in 5.4pt 0in 5.4pt;height:13.5pt'>\n  <b>Session<\/b>\n  <\/td>\n<td nowrap valign=bottom style='border-top:solid windowtext 1.0pt;  border-left:none;border-bottom:solid windowtext 1.0pt;border-right:none;  padding:0in 5.4pt 0in 5.4pt;height:13.5pt'>\n  <b>Callback<\/b>\n  <\/td>\n<td nowrap valign=bottom style='border:solid windowtext 1.0pt;border-left:none;padding:0in 5.4pt 0in 5.4pt;height:13.5pt'>\n <b>Channel<\/b>\n  <\/td>\n<\/tr>\n<tr>\n<td nowrap valign=bottom style='border:none;border-left:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>Any<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>Any<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>Yes<\/td>\n<td nowrap valign=bottom style='border:none; border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>IDuplexChannel<\/td>\n<\/tr>\n<tr>\n<td nowrap valign=bottom style='border:none;border-left: solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>Any<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>Any<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>Yes<\/td>\n<td nowrap valign=bottom style='border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>\n  IDuplexSesionChannel<\/td>\n<\/tr>\n<tr>\n<td nowrap valign=bottom style='border:none;border-left:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>\n  Any<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>Any<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>Yes<\/td>\n<td nowrap valign=bottom style='border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>\n  IDuplexSessionChannel<\/td>\n<\/tr>\n<tr>\n<td nowrap valign=bottom style='border:none;border-left:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>\n  Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>No<\/td>\n<td nowrap valign=bottom style='border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>IDuplexChannel<\/td>\n<\/tr>\n<tr>\n<td nowrap valign=bottom style='border:none;border-left:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>No<\/td>\n<td nowrap valign=bottom style='border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>IRequestChannel<\/td>\n<\/tr>\n<tr>\n<td nowrap valign=bottom style='border:none;border-left:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>No<\/td>\n<td nowrap valign=bottom style='border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>\n  IDuplexSessionChannel<\/td>\n<\/tr>\n<tr>\n<td nowrap valign=bottom style='border:none;border-left:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>No<\/td>\n<td nowrap valign=bottom style='border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>IDuplexSessionChannel<\/td>\n<\/tr>\n<tr>\n<td nowrap valign=bottom style='border:none;border-left:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>No<\/td>\n<td nowrap valign=bottom style='border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>IRequestSessionChannel<\/td>\n<\/tr>\n<tr>\n<td nowrap valign=bottom style='border:none;border-left:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>No<\/td>\n<td nowrap valign=bottom style='border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>IOutputChannel<\/td>\n<\/tr>\n<tr>\n<td nowrap valign=bottom style='border:none;border-left:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>No<\/td>\n<td nowrap valign=bottom style='border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>IDuplexChannel<\/td>\n<\/tr>\n<tr>\n<td nowrap valign=bottom style='border:none;border-left:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>IDuplexSessionChannel<\/td>\n<\/tr>\n<tr>\n<td nowrap valign=bottom style='border:none;border-left:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>IRequestChannel<\/td>\n<\/tr>\n<tr>\n<td nowrap valign=bottom style='border:none;border-left:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>IOutputSessionChannel<\/td>\n<\/tr>\n<tr>\n<td nowrap valign=bottom style='border:none;border-left:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>IDuplexSessionChannel<\/td>\n<\/tr>\n<tr>\n<td nowrap valign=bottom style='border:none;border-left:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>IRequestSessionChannel<\/td>\n<\/tr>\n<tr>\n<td nowrap valign=bottom style='border:none;border-left:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>IRequestChannel<\/td>\n<\/tr>\n<tr>\n<td nowrap valign=bottom style='border:none;border-left:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>IDuplexChannel<\/td>\n<\/tr>\n<tr>\n<td nowrap valign=bottom style='border:none;border-left:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt'>No<\/td>\n<td nowrap valign=bottom style='border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>IDuplexSessionChannel<\/td>\n<\/tr>\n<tr>\n<td nowrap valign=bottom style='border:none;border-left: solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>Yes<\/td>\n<td nowrap valign=bottom style='padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='border:none;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>IRequestSessionChannel<\/td>\n<\/tr>\n<tr>\n<td nowrap valign=bottom style='border-top:none;border-left:solid windowtext 1.0pt;border-bottom:solid windowtext 1.0pt;border-right:none;padding:0in 5.4pt 0in 5.4pt;'>\n  No<\/td>\n<td nowrap valign=bottom style='border:none;border-bottom:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>Yes<\/td>\n<td nowrap valign=bottom style='border:none;border-bottom:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>Yes<\/td>\n<td nowrap valign=bottom style='border:none;border-bottom:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>No<\/td>\n<td nowrap valign=bottom style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0in 5.4pt 0in 5.4pt;'>\n  IDuplexSessionChannel<\/td>\n<\/tr>\n<\/table>\n<p>ServiceModel also has internal adapters so that, for example, if your stack supports IOutputSessionChannel, then ServiceModel can adapt that channel to a desired IOutputChannel. More on this in a later post.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When you create a client channel through ServiceModel, the shape of the channel is determined by various properties of your contract. Roughly the mapping is as follows: OneWay Request\/Reply Session Callback Channel Any Any No Yes IDuplexChannel Any Any No Yes IDuplexSesionChannel Any Any Yes Yes IDuplexSessionChannel Yes Yes No No IDuplexChannel Yes Yes No [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-58","post","type-post","status-publish","format-standard","hentry","category-indigo"],"_links":{"self":[{"href":"https:\/\/kennyw.com\/index.php?rest_route=\/wp\/v2\/posts\/58","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kennyw.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kennyw.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kennyw.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/kennyw.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=58"}],"version-history":[{"count":0,"href":"https:\/\/kennyw.com\/index.php?rest_route=\/wp\/v2\/posts\/58\/revisions"}],"wp:attachment":[{"href":"https:\/\/kennyw.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=58"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kennyw.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=58"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kennyw.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=58"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}