<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Microsoft .Net Framework 4 WS-Discovery Team Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/discovery/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/discovery/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 04:02:07 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>WS-Discovery is now an OASIS approved standard</title>
      <link>https://docs.microsoft.com/archive/blogs/discovery/ws-discovery-is-now-an-oasis-approved-standard</link>
      <pubDate>Wed, 01 Jul 2009 13:13:00 GMT</pubDate>
      <dc:creator><![CDATA[Vipul Modi - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/discovery/2009/07/01/ws-discovery-is-now-an-oasis-approved-standard/</guid>
      <description><![CDATA[As of today (July 1st 2009) Web Services Dynamic Discovery (WS-Discovery) Version 1.1&nbsp; is...]]></description>
      <content:encoded><![CDATA[<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Arial','sans-serif'; FONT-SIZE: 10pt">As of today (July 1st 2009) <A href="https://docs.oasis-open.org/ws-dd/ns/discovery/2009/01" mce_href="https://docs.oasis-open.org/ws-dd/ns/discovery/2009/01">Web Services Dynamic Discovery (WS-Discovery) Version 1.1&nbsp;</A> is officially an OASIS standard (<A href="https://lists.oasis-open.org/archives/tc-announce/200906/msg00002.html">https://lists.oasis-open.org/archives/tc-announce/200906/msg00002.html</A>). Discovery bits included in the .NET 4.0 Beta1 package implement this specification. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Discovery Find and FindCriteria</title>
      <link>https://docs.microsoft.com/archive/blogs/discovery/discovery-find-and-findcriteria</link>
      <pubDate>Tue, 09 Jun 2009 13:07:00 GMT</pubDate>
      <dc:creator><![CDATA[sduren]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/discovery/2009/06/09/discovery-find-and-findcriteria/</guid>
      <description><![CDATA[A Discovery Find is initiated by a client in order to discover one or more services, and is one of...]]></description>
      <content:encoded><![CDATA[<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="mso-ansi-language: EN" lang=EN><FONT size=3 face=Calibri>A Discovery Find is initiated by a client in order to discover one or more services, and is one of the main actions in Discovery. Performing a Find sends a WS-Discovery <I style="mso-bidi-font-style: normal">Probe</I> message over the network. Matching services reply with WS-Discovery <I style="mso-bidi-font-style: normal">ProbeMatch</I> messages (Read more about WS-Discovery messages in the <A href="https://docs.oasis-open.org/ws-dd/ns/discovery/2009/01" target=_blank mce_href="https://docs.oasis-open.org/ws-dd/ns/discovery/2009/01">specification</A></FONT><FONT face=Calibri><FONT size=3>). Let's look at a few of the classes in .Net Framework 4 which you can use when doing a Discovery Find operation.</FONT></FONT></SPAN></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="mso-ansi-language: EN" lang=EN><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p><FONT size=3 face=Calibri></FONT></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="mso-ansi-language: EN" lang=EN><FONT face=Calibri><FONT size=3></FONT></FONT></SPAN>&nbsp;</P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="mso-ansi-language: EN" lang=EN><FONT face=Calibri><FONT size=3></FONT></FONT></SPAN>&nbsp;</P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="mso-ansi-language: EN" lang=EN><FONT face=Calibri><FONT size=3>The <B style="mso-bidi-font-weight: normal"><A href="https://msdn.microsoft.com/en-us/library/system.servicemodel.discovery.discoveryclient(VS.100).aspx" target=_blank mce_href="https://msdn.microsoft.com/en-us/library/system.servicemodel.discovery.discoveryclient(VS.100).aspx">DiscoveryClient</A></B> class makes performing discovery client operations easy. It contains a Find() method, which performs a (blocking) synchronous find, and a FindAsync() method, which initiates a non-blocking asynchronous find. Both methods take a FindCriteria parameter, and provide results to the user through a FindResponse object. <o:p></o:p></FONT></FONT></SPAN></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><B style="mso-bidi-font-weight: normal"><SPAN style="mso-ansi-language: EN" lang=EN><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></SPAN></B></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT face=Calibri><FONT size=3><B style="mso-bidi-font-weight: normal"><SPAN style="mso-ansi-language: EN" lang=EN></SPAN></B></FONT></FONT>&nbsp;</P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT face=Calibri><FONT size=3><B style="mso-bidi-font-weight: normal"><SPAN style="mso-ansi-language: EN" lang=EN><A href="https://msdn.microsoft.com/en-us/library/system.servicemodel.discovery.findcriteria(VS.100).aspx" target=_blank mce_href="https://msdn.microsoft.com/en-us/library/system.servicemodel.discovery.findcriteria(VS.100).aspx">FindCriteria</A></SPAN></B><SPAN style="mso-ansi-language: EN" lang=EN> has several properties, which can be grouped into search criteria (specifying what services you’re looking for) and&nbsp;find termination criteria (how long the search should last).</SPAN></FONT></FONT></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT face=Calibri><FONT size=3><SPAN style="mso-ansi-language: EN" lang=EN><o:p></o:p></SPAN></FONT></FONT>&nbsp;</P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="mso-ansi-language: EN" lang=EN><FONT face=Calibri><FONT size=3>Search Criteria:</FONT></FONT></SPAN></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; mso-add-space: auto" class=MsoListParagraphCxSpFirst><SPAN style="FONT-FAMILY: Symbol; mso-ansi-language: EN; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol" lang=EN><SPAN style="mso-list: Ignore"><FONT size=3>·</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri><FONT size=3><B style="mso-bidi-font-weight: normal"><SPAN style="mso-ansi-language: EN" lang=EN>ContractTypeNames</SPAN></B><SPAN style="mso-ansi-language: EN" lang=EN> – Optional. The contract name of the service being searched for, and the criteria typically used when searching for a service.<o:p></o:p></SPAN></FONT></FONT></P>
<P style="MARGIN: 0in 0in 0pt 0.5in; mso-add-space: auto" class=MsoListParagraphCxSpMiddle><SPAN style="mso-ansi-language: EN" lang=EN><o:p><FONT size=3 face=Calibri></FONT></o:p></SPAN></P>
<P style="MARGIN: 0in 0in 0pt 0.5in; mso-add-space: auto" class=MsoListParagraphCxSpMiddle><SPAN style="mso-ansi-language: EN" lang=EN><FONT face=Calibri><FONT size=3>If more than one contract name is specified, only service endpoints matching ALL contracts will reply. Note that in WCF, an endpoint can only support one contract.</FONT></FONT></SPAN></P>
<P style="MARGIN: 0in 0in 0pt 0.5in; mso-add-space: auto" class=MsoListParagraphCxSpMiddle><SPAN style="mso-ansi-language: EN" lang=EN><FONT size=3 face=Calibri></FONT></SPAN>&nbsp;</P>
<P style="MARGIN: 0in 0in 0pt 0.5in; mso-add-space: auto" class=MsoListParagraphCxSpMiddle><SPAN style="mso-ansi-language: EN" lang=EN><o:p><FONT size=3 face=Calibri></FONT></o:p></SPAN></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; mso-add-space: auto" class=MsoListParagraphCxSpLast><SPAN style="FONT-FAMILY: Symbol; mso-ansi-language: EN; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol" lang=EN><SPAN style="mso-list: Ignore"><FONT size=3>·</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri><FONT size=3><B style="mso-bidi-font-weight: normal"><SPAN style="mso-ansi-language: EN" lang=EN>Scopes</SPAN></B><SPAN style="mso-ansi-language: EN" lang=EN> – Optional. Scopes are absolute URIs which are used to categorize individual service endpoints.</SPAN></FONT></FONT><FONT face=Calibri><FONT size=3><SPAN style="mso-ansi-language: EN" lang=EN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN></FONT></FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; mso-add-space: auto" class=MsoListParagraphCxSpLast><FONT face=Calibri><FONT size=3><SPAN style="mso-ansi-language: EN" lang=EN></SPAN></FONT></FONT>&nbsp;</P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; mso-add-space: auto" class=MsoListParagraphCxSpLast><FONT face=Calibri><FONT size=3><SPAN style="mso-ansi-language: EN" lang=EN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Let's take an example to understand Scopes better. Suppose&nbsp;there&nbsp;are multiple printers in different levels of a building. A user in the first level who wants to search for a printer would prefer to find a one which is present in the same level. If he searches using only the contract then&nbsp;all the printers will respond back. To futher fine tune the responses, the user can decorate the endpoints&nbsp;of the Printers&nbsp;using scopes. The user can then specify the scopes as part of the FindCriteria and only services that have endpoints which match the scopes will respond. Another example could be where there is one single service with two (or multiple) endpoints. One endpoint could be an&nbsp;external facing BasicHttpBinding endpoint and the other could be an internal facing NetTcpBinding endpoint. The user can decorate these endpoints with appropriate scopes to categorize them.</SPAN></FONT></FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; mso-add-space: auto" class=MsoListParagraphCxSpLast><FONT face=Calibri><FONT size=3><SPAN style="mso-ansi-language: EN" lang=EN></SPAN></FONT></FONT>&nbsp;</P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal><SPAN style="mso-ansi-language: EN" lang=EN><FONT face=Calibri><FONT size=3>If more than one scope is specified, only service endpoints matching ALL scopes will reply.</FONT></FONT></SPAN></P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal><SPAN style="mso-ansi-language: EN" lang=EN><FONT size=3 face=Calibri></FONT></SPAN><SPAN style="mso-ansi-language: EN" lang=EN><SPAN style="mso-ansi-language: EN" lang=EN><FONT size=3 face=Calibri></FONT></SPAN>&nbsp;</P>
<P style="MARGIN: 0in 0in 0pt 0.5in; mso-add-space: auto" class=MsoListParagraphCxSpMiddle><SPAN style="mso-ansi-language: EN" lang=EN><o:p><FONT size=3 face=Calibri></FONT></o:p></SPAN></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; mso-add-space: auto" class=MsoListParagraphCxSpLast><SPAN style="FONT-FAMILY: Symbol; mso-ansi-language: EN; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol" lang=EN><SPAN style="mso-list: Ignore"><FONT size=3>·</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri><FONT size=3><B style="mso-bidi-font-weight: normal"><SPAN style="mso-ansi-language: EN" lang=EN>ScopeMatchBy</SPAN></B><SPAN style="mso-ansi-language: EN" lang=EN> – ScopeMatchBy specify the matching algorithm to use while matching the scopes in the <EM>Probe</EM> message with that of the endpoint</SPAN></FONT></FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; mso-add-space: auto" class=MsoListParagraphCxSpLast><FONT face=Calibri><FONT size=3><SPAN style="mso-ansi-language: EN" lang=EN>.</SPAN></FONT></FONT></SPAN></P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal><SPAN style="mso-ansi-language: EN" lang=EN><FONT size=3 face=Calibri>There are five supported scope-matching rules, as described in the <A href="https://msdn.microsoft.com/en-us/library/system.servicemodel.discovery.findcriteria_fields(VS.100).aspx" target=_blank mce_href="https://msdn.microsoft.com/en-us/library/system.servicemodel.discovery.findcriteria_fields(VS.100).aspx">MSDN documentation</A>. If you do not specify a scope-matching rule, FindCriteria.ScopeMatchByPrefix is used.</FONT></SPAN></P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal><SPAN style="mso-ansi-language: EN" lang=EN><FONT size=3 face=Calibri><STRONG>FindCriteria.ScopeMatchByExact</STRONG> does a basic case-sensitive string comparison.</FONT></SPAN></P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal><SPAN style="mso-ansi-language: EN" lang=EN><FONT size=3 face=Calibri><STRONG>FindCriteria.ScopeMatchByPrefix</STRONG> does matching by segments separated by "/". So a search for https://microsoft/building1 will match a service with scope https://microsoft/building1/floor1. Note that it won't match https://microsoft/building100, because the last two segments don't match.</FONT></SPAN></P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal><SPAN style="mso-ansi-language: EN" lang=EN><FONT size=3 face=Calibri><STRONG>FindCriteria.ScopeMatchByLdap</STRONG> does segment matching using an LDAP URL.</FONT></SPAN></P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal><SPAN style="mso-ansi-language: EN" lang=EN><FONT size=3 face=Calibri><STRONG>FindCriteria.ScopeMatchByUuid</STRONG> does exact matching for a UUID string.</FONT></SPAN></P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal><SPAN style="mso-ansi-language: EN" lang=EN><FONT size=3 face=Calibri><STRONG>FindCriteria.ScopeMatchByNone</STRONG> will only match services which don't have any scope specified.</FONT></SPAN></P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal><SPAN style="mso-ansi-language: EN" lang=EN><FONT size=3 face=Calibri></FONT></SPAN>&nbsp;</P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal><SPAN style="mso-ansi-language: EN" lang=EN><FONT size=3 face=Calibri>It is also possible to specify custom ScopeMatchBy rule, but only custom services which support the type will respond. More on how to implement custom scope-matching in a future post.</FONT></SPAN></P>
<P style="MARGIN: 0in 0in 0pt 0.5in" class=MsoNormal mce_keep="true">&nbsp;</P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="mso-ansi-language: EN" lang=EN><FONT face=Calibri><FONT size=3>Note: A Find using an empty FindCriteria (with no search criteria specified) will match all services listening on the network.</FONT></FONT></SPAN></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="mso-ansi-language: EN" lang=EN></SPAN>&nbsp;</P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><SPAN style="mso-ansi-language: EN" lang=EN><FONT face=Calibri><FONT size=3>Termination Criteria:</FONT></FONT></SPAN></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; mso-add-space: auto" class=MsoListParagraphCxSpFirst><SPAN style="FONT-FAMILY: Symbol; mso-ansi-language: EN; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol" lang=EN><SPAN style="mso-list: Ignore"><FONT size=3>·</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT face=Calibri><FONT size=3><B style="mso-bidi-font-weight: normal"><SPAN style="mso-ansi-language: EN" lang=EN>Duration</SPAN></B><SPAN style="mso-ansi-language: EN" lang=EN> – The maximum time to wait for replies from services on the network. The default duration is 20 seconds.</SPAN></FONT></FONT></P>
<P style="TEXT-INDENT: -0.25in; MARGIN: 0in 0in 0pt 0.5in; mso-list: l0 level1 lfo1; mso-add-space: auto" class=MsoListParagraphCxSpLast><SPAN style="FONT-FAMILY: Symbol; mso-ansi-language: EN; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol" lang=EN><SPAN style="mso-list: Ignore"><FONT size=3>·</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT size=3><FONT face=Calibri><B style="mso-bidi-font-weight: normal"><SPAN style="mso-ansi-language: EN" lang=EN>MaxResults</SPAN></B><SPAN style="mso-ansi-language: EN" lang=EN> – The maximum number of replies to wait for. If MaxResults replies are received before Duration has elapsed, the Find will end. The default MaxResults is int.MaxValue.</SPAN></FONT></FONT></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><B style="mso-bidi-font-weight: normal"><SPAN style="mso-ansi-language: EN" lang=EN><o:p><FONT size=3 face=Calibri>&nbsp;</FONT></o:p></SPAN></B></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT size=3><FONT face=Calibri><B style="mso-bidi-font-weight: normal"><SPAN style="mso-ansi-language: EN" lang=EN></SPAN></B></FONT></FONT>&nbsp;</P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT size=3><FONT face=Calibri><B style="mso-bidi-font-weight: normal"><SPAN style="mso-ansi-language: EN" lang=EN><A href="https://msdn.microsoft.com/en-us/library/system.servicemodel.discovery.findresponse(VS.100).aspx" target=_blank mce_href="https://msdn.microsoft.com/en-us/library/system.servicemodel.discovery.findresponse(VS.100).aspx">FindResponse</A> </SPAN></B><SPAN style="mso-ansi-language: EN" lang=EN>has an Endpoints collection property which contains any replies sent by matching services on the network. If no services replied, the collection will be empty. If one or more services replied, each reply will be stored in an <B style="mso-bidi-font-weight: normal"><A href="https://msdn.microsoft.com/en-us/library/system.servicemodel.discovery.endpointdiscoverymetadata(VS.100).aspx" target=_blank mce_href="https://msdn.microsoft.com/en-us/library/system.servicemodel.discovery.endpointdiscoverymetadata(VS.100).aspx">EndpointDiscoveryMetadata</A></B> object, which contains the address, contract, and some additional information about the service.</SPAN></FONT></FONT></P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT size=3><FONT face=Calibri><SPAN style="mso-ansi-language: EN" lang=EN></SPAN></FONT></FONT>&nbsp;</P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT size=3><FONT face=Calibri><SPAN style="mso-ansi-language: EN" lang=EN></SPAN></FONT></FONT>&nbsp;</P>
<P style="MARGIN: 0in 0in 0pt" class=MsoNormal><FONT size=3><FONT face=Calibri><SPAN style="mso-ansi-language: EN" lang=EN>Here's how it all looks in a snippet of code:</SPAN></FONT></FONT></P><FONT size=3><FONT face=Calibri><SPAN style="mso-ansi-language: EN" lang=EN>
<DIV style="BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; PADDING-BOTTOM: 1pt; PADDING-LEFT: 4pt; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; BORDER-RIGHT: windowtext 1pt solid; PADDING-TOP: 1pt; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt">
<P style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0in; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes">// Create DiscoveryClient<o:p></o:p></SPAN></P>
<P style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0in; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: white; COLOR: #2b91af; FONT-SIZE: 9.5pt; mso-ansi-language: EN; mso-highlight: white" lang=EN>DiscoveryClient</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"> discoveryClient = <SPAN style="COLOR: blue">new</SPAN> </SPAN><SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: white; COLOR: #2b91af; FONT-SIZE: 9.5pt; mso-ansi-language: EN; mso-highlight: white" lang=EN>DiscoveryClient</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes">(<SPAN style="COLOR: blue">new</SPAN> </SPAN><SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: white; COLOR: #2b91af; FONT-SIZE: 9.5pt; mso-ansi-language: EN; mso-highlight: white" lang=EN>UdpDiscoveryEndpoint</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes">());<o:p></o:p></SPAN></P>
<P style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0in; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0in; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes">// Create FindCriteria</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><o:p></o:p></SPAN></P>
<P style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0in; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: white; COLOR: #2b91af; FONT-SIZE: 9.5pt; mso-ansi-language: EN; mso-highlight: white" lang=EN>FindCriteria</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"> findCriteria = new </SPAN><SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: white; COLOR: #2b91af; FONT-SIZE: 9.5pt; mso-ansi-language: EN; mso-highlight: white" lang=EN>FindCriteria</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes">(typeof(</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: white; COLOR: #2b91af; FONT-SIZE: 9.5pt; mso-ansi-language: EN; mso-highlight: white" lang=EN>IPrinterService</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes">));</SPAN></P>
<P style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0in; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes">findCriteria.Scopes.Add(new Uri("https://www.microsoft.com/building1/floor1"));</SPAN></P>
<P style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0in; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes">findCriteria.Duration = <SPAN style="COLOR: #2b91af">TimeSpan</SPAN>.FromSeconds(10); <o:p></o:p></SPAN></P>
<P style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0in; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0in; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 10pt; mso-no-proof: yes">// Find ICalculatorService endpoints<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><o:p></o:p></SPAN></P>
<P style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0in; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; BACKGROUND: white; COLOR: #2b91af; FONT-SIZE: 9.5pt; mso-ansi-language: EN; mso-highlight: white" lang=EN>FindResponse</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes"> findResponse = discoveryClient.Find(findCriteria);<o:p></o:p></SPAN></P>
<P style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0in; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 10pt; mso-no-proof: yes"><o:p>&nbsp;</o:p></SPAN></P>
<P style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: 0in; LINE-HEIGHT: normal; MARGIN: 0in 0in 0pt; PADDING-LEFT: 0in; PADDING-RIGHT: 0in; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0in; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt" class=MsoNormal><SPAN style="FONT-FAMILY: 'Courier New'; COLOR: #2b91af; FONT-SIZE: 10pt; mso-no-proof: yes">Console</SPAN><SPAN style="FONT-FAMILY: 'Courier New'; FONT-SIZE: 10pt; mso-no-proof: yes">.WriteLine(<SPAN style="COLOR: #a31515">"Found {0} ICalculatorService endpoint(s)."</SPAN>, findResponse.Endpoints.Count)</SPAN></P></SPAN></FONT></FONT></DIV>]]></content:encoded>
    </item>
    <item>
      <title>Discovery Announcements</title>
      <link>https://docs.microsoft.com/archive/blogs/discovery/discovery-announcements</link>
      <pubDate>Thu, 04 Jun 2009 13:32:00 GMT</pubDate>
      <dc:creator><![CDATA[OanaPlaton]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/discovery/2009/06/04/discovery-announcements/</guid>
      <description><![CDATA[Now that you are familiar with some Discovery Concepts, let’s find out more about Announcements. I...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>Now that you are familiar with some </FONT><A href="https://blogs.msdn.com/discovery/archive/2009/05/29/discovery-overview.aspx" mce_href="https://blogs.msdn.com/discovery/archive/2009/05/29/discovery-overview.aspx"><FONT face=Calibri size=3>Discovery Concepts</FONT></A><FONT face=Calibri size=3>, let’s find out more about Announcements. I will use the terms:</FONT></P>
<P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><SPAN style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>-</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT size=3><FONT face=Calibri><B style="mso-bidi-font-weight: normal">Target Service:</B> an endpoint that makes itself available for discovery,</FONT></FONT></P>
<P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><SPAN style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>-</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT size=3><FONT face=Calibri><B style="mso-bidi-font-weight: normal">Client: </B>an endpoint that searches for Target Services, </FONT></FONT></P>
<P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"><SPAN style="mso-ascii-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri; mso-bidi-font-family: Calibri"><SPAN style="mso-list: Ignore"><FONT face=Calibri size=3>-</FONT><SPAN style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN></SPAN><FONT size=3><FONT face=Calibri><B style="mso-bidi-font-weight: normal">Discovery Proxy:</B> an endpoint that facilitates discovery of Target Services by Clients.</FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>When a client needs to find a service, one way to search for it is to poll for available services. Another way is to listen for the Hello and Bye announcements. With this approach, the network traffic is reduced and the Client can learn about the presence/departure of the service as soon as announcements are received.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>When a service joins a network and becomes discoverable, it sends a multicast <B style="mso-bidi-font-weight: normal">Hello</B> message that contains key information about the target service, announcing its availability to listening clients. Similarly, when a Target Service leaves a network, it sends a <B style="mso-bidi-font-weight: normal">Bye</B> message announcing its departure. This defines the <B style="mso-bidi-font-weight: normal">ad-hoc</B> mode of operation.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>To scale to a large number of endpoints, the Discovery protocol defines a <B style="mso-bidi-font-weight: normal">managed</B> mode of operation, when a Discovery Proxy is used to find Target Services. In this case, the target service sends unicast announcement messages to a Discovery Proxy. When a Discovery Proxy detects a probe or resolution request sent multicast on an ad hoc network, it sends an announcement for itself, letting the Clients know of its existence.</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>WCF Discovery offers the </FONT><A href="https://msdn.microsoft.com/en-us/library/system.servicemodel.discovery.announcementendpoint(VS.100).aspx" mce_href="https://msdn.microsoft.com/en-us/library/system.servicemodel.discovery.announcementendpoint(VS.100).aspx"><FONT face=Calibri size=3>AnnouncementEndpoint</FONT></A><FONT face=Calibri size=3> and </FONT><A href="https://msdn.microsoft.com/en-us/library/system.servicemodel.discovery.udpannouncementendpoint(VS.100).aspx" mce_href="https://msdn.microsoft.com/en-us/library/system.servicemodel.discovery.udpannouncementendpoint(VS.100).aspx"><FONT face=Calibri size=3>UdpAnnouncementEndpoint</FONT></A><FONT face=Calibri size=3> standard endpoints to allow services and clients to easily send Hello and Bye announcements. Here are the simple steps to configure them to use announcements:</FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=3><FONT face=Calibri><B style="mso-bidi-font-weight: normal"><I style="mso-bidi-font-style: normal">On the service side</I></B>:</FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>To configure the service to send announcements, we need to add a <B style="mso-bidi-font-weight: normal">ServiceDiscoveryBehavior</B> with an announcement endpoint. Considering the CalculatorService we talked about in previous samples and a ServiceHost called serviceHost that hosts it, we can programmatically add the behavior like this:</FONT></P>
<DIV style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt">
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-highlight: white">ServiceDiscoveryBehavior</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"> serviceDiscoveryBehavior = </SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">new</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"> </SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-highlight: white">ServiceDiscoveryBehavior</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">();<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: green; FONT-FAMILY: 'Courier New'; mso-highlight: white">// Announce the availability of the service over UDP multicast<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9.5pt; COLOR: black; FONT-FAMILY: 'Courier New'">serviceDiscoveryBehavior.AnnouncementEndpoints.Add(</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9.5pt; COLOR: blue; FONT-FAMILY: 'Courier New'">new</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9.5pt; COLOR: black; FONT-FAMILY: 'Courier New'"> </SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9.5pt; COLOR: #2b91af; FONT-FAMILY: 'Courier New'">UdpAnnouncementEndpoint</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9.5pt; COLOR: black; FONT-FAMILY: 'Courier New'">());<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: green; FONT-FAMILY: 'Courier New'; mso-highlight: white">// Make the service discoverable over UDP multicast<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 10pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-highlight: white">serviceHost.Description.Behaviors.Add(serviceDiscoveryBehavior);<SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN></SPAN></P></DIV>
<P class=MsoNormal style="MARGIN: 12pt 0in 10pt"><FONT face=Calibri size=3>The behavior can also be configured through the configuration file:</FONT></P>
<DIV style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt">
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 12pt 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">&lt;</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-highlight: white">services</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-highlight: white">service</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white"> </SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: red; FONT-FAMILY: 'Courier New'; mso-highlight: white">behaviorConfiguration</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">=</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">"</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">CalculatorBehavior</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">"</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white"> </SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: red; FONT-FAMILY: 'Courier New'; mso-highlight: white">name</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">=</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">"</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">Microsoft.Samples.Discovery.CalculatorService</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">"</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>&lt;!--</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: green; FONT-FAMILY: 'Courier New'; mso-highlight: white">Add Discovery Endpoint</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">--&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-highlight: white">endpoint</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white"> </SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: red; FONT-FAMILY: 'Courier New'; mso-highlight: white">name</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">=</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">"</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">udpDiscoveryEpt</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">"</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white"> </SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: red; FONT-FAMILY: 'Courier New'; mso-highlight: white">kind</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">=</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">"</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">udpDiscoveryEndpoint</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">"</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white"> /&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;/</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-highlight: white">service</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">&lt;/</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-highlight: white">services</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">&lt;</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-highlight: white">behaviors</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-highlight: white">serviceBehaviors</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-highlight: white">behavior</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white"> </SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: red; FONT-FAMILY: 'Courier New'; mso-highlight: white">name</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">=</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">"</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">CalculatorBehavior</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">"</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>&lt;!--</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: green; FONT-FAMILY: 'Courier New'; mso-highlight: white">Add Discovery behavior</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">--&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>&lt;</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-highlight: white">serviceDiscovery</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN></SPAN><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9.5pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&lt;</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9.5pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'">announcementEndpoints</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9.5pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&gt;<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9.5pt; COLOR: blue; FONT-FAMILY: 'Courier New'"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>&lt;</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9.5pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'">endpoint</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9.5pt; COLOR: blue; FONT-FAMILY: 'Courier New'"> </SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9.5pt; COLOR: red; FONT-FAMILY: 'Courier New'">kind</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9.5pt; COLOR: blue; FONT-FAMILY: 'Courier New'">=</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9.5pt; COLOR: black; FONT-FAMILY: 'Courier New'">"</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9.5pt; COLOR: blue; FONT-FAMILY: 'Courier New'">udpAnnouncementEndpoint</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9.5pt; COLOR: black; FONT-FAMILY: 'Courier New'">"</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9.5pt; COLOR: blue; FONT-FAMILY: 'Courier New'"> /&gt;<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9.5pt; COLOR: blue; FONT-FAMILY: 'Courier New'"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>&lt;/</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9.5pt; COLOR: #a31515; FONT-FAMILY: 'Courier New'">announcementEndpoints</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 9.5pt; COLOR: blue; FONT-FAMILY: 'Courier New'">&gt;<o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>&lt;/</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-highlight: white">serviceDiscovery</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>&lt;/</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-highlight: white">behavior</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>&lt;/</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-highlight: white">serviceBehaviors</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">&gt;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 10pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-highlight: white">&lt;/</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #a31515; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-highlight: white">behaviors</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-highlight: white">&gt;</SPAN></P></DIV>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT size=3><FONT face=Calibri>With this simple change, services will send announcements when starting and closing. If the services are aborted, the messages are not sent.<B style="mso-bidi-font-weight: normal"><o:p></o:p></B></FONT></FONT></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><B style="mso-bidi-font-weight: normal"><I style="mso-bidi-font-style: normal"><FONT size=3><FONT face=Calibri>On the client side:<o:p></o:p></FONT></FONT></I></B></P>
<P class=MsoNormal style="MARGIN: 0in 0in 10pt"><FONT face=Calibri size=3>We need to host an </FONT><A href="https://msdn.microsoft.com/en-us/library/system.servicemodel.discovery.announcementservice(VS.100).aspx" mce_href="https://msdn.microsoft.com/en-us/library/system.servicemodel.discovery.announcementservice(VS.100).aspx"><FONT face=Calibri size=3>AnnouncementService</FONT></A><FONT face=Calibri size=3> and subscribe to the <I style="mso-bidi-font-style: normal">OnlineAnnouncementReceived</I> and <I style="mso-bidi-font-style: normal">OfflineAnnouncementReceived</I> events. </FONT></P>
<DIV style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt">
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: green; FONT-FAMILY: 'Courier New'; mso-highlight: white">// Create an AnnouncementService instance<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-highlight: white">AnnouncementService</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"> announcementService = </SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">new</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"> </SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-highlight: white">AnnouncementService</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">();<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: green; FONT-FAMILY: 'Courier New'; mso-highlight: white">// Subscribe the announcement events<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">announcementService.OnlineAnnouncementReceived += OnOnlineEvent;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">announcementService.OfflineAnnouncementReceived += OnOfflineEvent;<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: green; FONT-FAMILY: 'Courier New'; mso-highlight: white">// Create ServiceHost for the AnnouncementService<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">using</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"> (</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-highlight: white">ServiceHost</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"> announcementServiceHost = </SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">new</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"> </SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-highlight: white">ServiceHost</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">(announcementService))<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: green; FONT-FAMILY: 'Courier New'; mso-highlight: white">// Listen for the announcements sent over UDP multicast<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>announcementServiceHost.AddServiceEndpoint(</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">new</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"> </SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-highlight: white">UdpAnnouncementEndpoint</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">());<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>announcementServiceHost.Open();<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-highlight: white">Console</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">.WriteLine(</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-highlight: white">"Press &lt;ENTER&gt; to terminate."</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-highlight: white">Console</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">.ReadLine();<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 10pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-highlight: white">}</SPAN></P></DIV>
<P class=MsoNormal style="MARGIN: 12pt 0in 10pt"><FONT face=Calibri size=3>When an offline/online announcement is received, we have access to the endpoint discovery metadata through the </FONT><A href="https://msdn.microsoft.com/en-us/library/system.servicemodel.discovery.announcementeventargs(VS.100).aspx" mce_href="https://msdn.microsoft.com/en-us/library/system.servicemodel.discovery.announcementeventargs(VS.100).aspx"><FONT face=Calibri color=#0000ff size=3>AnnouncementEventArgs</FONT></A><FONT face=Calibri size=3>:</FONT></P>
<DIV style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 4pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 4pt; PADDING-BOTTOM: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt">
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 12pt 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">static</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"> </SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">void</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"> OnOnlineEvent(</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">object</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"> sender, </SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-highlight: white">AnnouncementEventArgs</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"> e)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-highlight: white">Console</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">.WriteLine(</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-highlight: white">"Received an online announcement from {0}"</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">, e.EndpointDiscoveryMetadata.Address);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">}<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"><o:p>&nbsp;</o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">static</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"> </SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">void</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"> OnOfflineEvent(</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-highlight: white">object</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"> sender, </SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-highlight: white">AnnouncementEventArgs</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"> e)<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">{<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 0pt; BORDER-LEFT: medium none; LINE-HEIGHT: normal; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-layout-grid-align: none; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN></SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-highlight: white">Console</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">.WriteLine(</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: #a31515; FONT-FAMILY: 'Courier New'; mso-highlight: white">"Received an offline announcement from {0}"</SPAN><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-highlight: white">, e.EndpointDiscoveryMetadata.Address);<o:p></o:p></SPAN></P>
<P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 0in; PADDING-BOTTOM: 0in; MARGIN: 0in 0in 10pt; BORDER-LEFT: medium none; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><SPAN style="FONT-SIZE: 9.5pt; BACKGROUND: white; COLOR: black; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-highlight: white">}</SPAN></P></DIV>
<P class=MsoNormal style="MARGIN: 12pt 0in 10pt"><FONT face=Calibri size=3>You can check out the working code in the </FONT><A href="https://msdn.microsoft.com/en-us/library/dd483353(VS.100).aspx" mce_href="https://msdn.microsoft.com/en-us/library/dd483353(VS.100).aspx"><FONT face=Calibri size=3>Announcements .NET Beta1 discovery sample</FONT></A><FONT face=Calibri size=3>. Beyond this simple usage, the user can extend the announcement model (eg. custom announcements). WCF Discovery also offers the possibility to send announcements explicitly, using </FONT><A href="https://msdn.microsoft.com/en-us/library/system.servicemodel.discovery.announcementclient(VS.100).aspx" mce_href="https://msdn.microsoft.com/en-us/library/system.servicemodel.discovery.announcementclient(VS.100).aspx"><FONT face=Calibri size=3>AnnouncementClient</FONT></A><FONT face=Calibri size=3>. Stay tuned for more about this in a future post. </FONT></P>]]></content:encoded>
    </item>
    <item>
      <title>Discovery Concepts</title>
      <link>https://docs.microsoft.com/archive/blogs/discovery/discovery-concepts</link>
      <pubDate>Fri, 29 May 2009 12:37:00 GMT</pubDate>
      <dc:creator><![CDATA[anuragp]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/discovery/2009/05/29/discovery-concepts/</guid>
      <description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The last...]]></description>
      <content:encoded><![CDATA[<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The last entry covered a simple discovery example. Before we get into more complex scenarios, let’s cover some of the core concepts behind WCF-Discovery. The entry below covers the main components, exposed functionality as well as the modes of operation of WCF-Discovery.</P>
<P><STRONG><STRONG>Discovery </STRONG>Components</STRONG></P>
<P><A href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/discovery/WindowsLiveWriter/DiscoveryOverview_86A4/components_2.jpg" original-url="https://blogs.msdn.com/blogfiles/discovery/WindowsLiveWriter/DiscoveryOverview_86A4/components_2.jpg" mce_href="https://blogs.msdn.com/blogfiles/discovery/WindowsLiveWriter/DiscoveryOverview_86A4/components_2.jpg"><IMG title=components style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=308 alt=components src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/discovery/WindowsLiveWriter/DiscoveryOverview_86A4/components_thumb.jpg" original-url="https://blogs.msdn.com/blogfiles/discovery/WindowsLiveWriter/DiscoveryOverview_86A4/components_thumb.jpg" width=246 border=0 mce_src="https://blogs.msdn.com/blogfiles/discovery/WindowsLiveWriter/DiscoveryOverview_86A4/components_thumb.jpg"></A>&nbsp; <BR>In any application architecture, there can be three types of components utilizing discovery. As the picture above shows, Discovery involves a client, a service, and/or a Discovery Proxy. Without resorting to strict definitions, here is how you can think of them and their capabilities: </P>
<UL>
<LI>A <STRONG>Client</STRONG> is an entity that is looking for services and utilizes the “<STRONG>DiscoveryClient</STRONG>” to search for them. A client may also host an “Announcement Service” if it wants to listen for announcements from services. </LI>
<LI>A <STRONG>Service</STRONG> is a WCF service that has endpoints which can be discovered. A Service adds a <STRONG>ServiceDiscoveryBehavior</STRONG> in the service host description, which enables it to respond to find requests from clients. A service may also host an announcement client if it wants to announce itself.&nbsp; </LI>
<LI>A <STRONG>Discovery Proxy</STRONG> – This is a centralized repository that knows about services. This is a not a required component and its necessity is completely dependent on your use case. The framework does not include an implementation of a proxy; though it does provide the building blocks for you to easily create one. There are several uses for a Proxy&nbsp;and we’ll cover this component in detail in subsequent posts. </LI></UL>
<P><STRONG>Discovery Functionality</STRONG> <BR>The real key is, how can a Client become aware of a Service? As hinted at above, discovery functionality can be broken down into two areas: find/ resolve&nbsp;operations and announcements. </P>
<P>The find/resolve functionality is characterized by a client looking for a service. This can be broken down further into: Find and Resolves</P>
<UL>
<LI><STRONG>Find: </STRONG>If a client is looking for a service based on criteria such as the service type, or some scopes, it sends out a <STRONG>Probe</STRONG> message. The recipient of the probe, either a service or a proxy responds back to the client with the appropriate service metadata. </LI>
<LI><STRONG>Resolve: </STRONG>A resolve is used by client to locate a service based on its endpoint address. This is useful when the endpoint address is not network addressable. </LI></UL>
<P>Another functionality open to users is <STRONG>Announcements</STRONG>. In this case Services can announce themselves to the network and clients can be configured to listen for such announcements. In the default case a service sends out a <STRONG>hello</STRONG> message when it comes online and a <STRONG>bye</STRONG> message when going offline. This pattern is useful when a service wants to notify a recipient without having the recipient pinging the network periodically.</P>
<P><STRONG>Operation Modes <BR></STRONG>There are two modes of operation for Discovery, Ad-Hoc mode and Managed mode. </P>
<UL>
<LI>In the <STRONG>Ad-Hoc </STRONG>mode a client sends the <STRONG>Probe</STRONG>/<STRONG>Resolve</STRONG> message over UDP multicast. The range of this message is limited to your subnet. Any service listening for such messages can pick it up and respond. </LI>
<LI>In <STRONG>Managed mode</STRONG> a client sends <STRONG>Probes</STRONG> and <STRONG>Resolves </STRONG>directly to the recipient, and it responds back with the endpoint metdata that matches.</LI></UL>
<P><STRONG>Discovery Protocols</STRONG></P>
<P>The WCF-Discovery product supports two versions of the WS-Discovery protocol. These include:</P>
<UL>
<LI><A class="" href="https://docs.oasis-open.org/ws-dd/ns/discovery/2009/01" mce_href="https://docs.oasis-open.org/ws-dd/ns/discovery/2009/01">WS-Discovery 1.1</A></LI>
<LI><A class="" href="https://specs.xmlsoap.org/ws/2005/04/discovery/ws-discovery.pdf" mce_href="https://specs.xmlsoap.org/ws/2005/04/discovery/ws-discovery.pdf">WS-Discovery April 2005</A></LI></UL>
<P>Currently the default is set to the WS-Discovery April 2005. Selecting the appropriate protocol is important depending on how you want to interop with other implementations of WS-Discovery. We'll cover protocols in depth later on.</P>]]></content:encoded>
    </item>
    <item>
      <title>A Simple Discovery Scenario</title>
      <link>https://docs.microsoft.com/archive/blogs/discovery/a-simple-discovery-scenario</link>
      <pubDate>Thu, 21 May 2009 21:46:00 GMT</pubDate>
      <dc:creator><![CDATA[anuragp]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/discovery/2009/05/21/a-simple-discovery-scenario/</guid>
      <description><![CDATA[Last entry we talked about the benefits of WCF-Discovery, this time we’ll delve into a hello world...]]></description>
      <content:encoded><![CDATA[<p>Last entry we talked about the benefits of WCF-Discovery, this time we’ll delve into a hello world example. You have a WCF Calculator Service and a client that needs to locate it. In order to find the service the client sends out a query. This query can be sent to a Proxy server (more about this later) or it can be multicast out over UDP. The WCF-Discovery solution provides an easy way for clients to do this. All you have to do is point your client to use a DynamicEndpoint such as this:</p>  <table cellspacing="0" cellpadding="0" width="100%" border="1"><tbody>     <tr>       <td valign="top" width="900">         <br />          <pre class="code"><span style="color: #2b91af">DynamicEndpoint </span>dynamicEndpoint = <span style="color: blue">new </span><span style="color: #2b91af">DynamicEndpoint</span>(
    <span style="color: #2b91af">ContractDescription</span>.GetContract(<span style="color: blue">typeof</span>(<span style="color: #2b91af">ICalculatorService</span>)),
    <span style="color: blue">new </span><span style="color: #2b91af">NetTcpBinding</span>());
<span style="color: #2b91af">CalculatorServiceClient </span>client = <span style="color: blue">new </span><span style="color: #2b91af">CalculatorServiceClient</span>(dynamicEndpoint);</pre>
      </td>
    </tr>
  </tbody></table>

<p>That’s all there is to it. Under the covers, we create a client (known as DiscoveryClient) that looks for services based on the default settings. The client created by the DynamicEndpoint will look for a service, matching the service type, over a udp multicast endpoint. The contract, binding and address for this endpoint are set to the values specified by the protocol; pre-defined endpoints such as these are referred to as <a href="https://msdn.microsoft.com/en-us/library/dd456789(VS.100).aspx">StandardEndpoints</a>. </p>

<p>Packets multicast over UDP have the limitation that only listeners in the same subnet will receive them, unless your routers are specifically configured to forward the packets. If the service is on the same subnet and is discoverable over the UdpDiscoveryEndpoint then it will respond back to the client with its metadata if it matches the client’s query. All of this requires two lines of change in your configuration from the service end. Here are the modifications needed to your App.config:</p>

<table cellspacing="0" cellpadding="0" width="100%" border="1"><tbody>
    <tr>
      <td valign="top" width="900">
        <br />

        <pre class="code"><span style="color: blue">&lt;</span><span style="color: #a31515">services</span><span style="color: blue">&gt;
  &lt;</span><span style="color: #a31515">service </span><span style="color: red">behaviorConfiguration</span><span style="color: blue">=</span>&quot;<span style="color: blue">CalculatorBehavior</span>&quot; <span style="color: red">name</span><span style="color: blue">=</span>&quot;<span style="color: blue">Microsoft.Samples.Discovery.CalculatorService</span>&quot;<span style="color: blue">&gt;
    &lt;!--</span><span style="color: green">Add Discovery Endpoint</span><span style="color: blue">--&gt;
    &lt;</span><span style="color: #a31515">endpoint </span><span style="color: red">name</span><span style="color: blue">=</span>&quot;<span style="color: blue">udpDiscoveryEpt</span>&quot; <span style="color: red">kind</span><span style="color: blue">=</span>&quot;<span style="color: blue">udpDiscoveryEndpoint</span>&quot; <span style="color: blue">/&gt;
  &lt;/</span><span style="color: #a31515">service</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">services</span><span style="color: blue">&gt;
&lt;</span><span style="color: #a31515">behaviors</span><span style="color: blue">&gt;
  &lt;</span><span style="color: #a31515">serviceBehaviors</span><span style="color: blue">&gt;
    &lt;</span><span style="color: #a31515">behavior </span><span style="color: red">name</span><span style="color: blue">=</span>&quot;<span style="color: blue">CalculatorBehavior</span>&quot;<span style="color: blue">&gt;
      &lt;!--</span><span style="color: green">Add Discovery behavior</span><span style="color: blue">--&gt;
      &lt;</span><span style="color: #a31515">serviceDiscovery </span><span style="color: blue">/&gt; 
    &lt;/</span><span style="color: #a31515">behavior</span><span style="color: blue">&gt;
  &lt;/</span><span style="color: #a31515">serviceBehaviors</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">behaviors</span><span style="color: blue">&gt;</span></pre>
      </td>
    </tr>
  </tbody></table>

<p>That’s how simple it is, you add a behavior to your service, and then you add a service endpoint that designates where discovery service will look for WS-Discovery messages. This is just as easy to do programmatically also… more about that later though. With the serviceDiscovery behavior added, the service responds back to the client's query and provides it the metadata so that the client can connect to the service. </p>

<p>You can check out the working code in the .NET Beta1 discovery sample here: <a title="https://msdn.microsoft.com/en-us/library/dd483369(VS.100).aspx" href="https://msdn.microsoft.com/en-us/library/dd483369(VS.100).aspx">https://msdn.microsoft.com/en-us/library/dd483369(VS.100).aspx</a>. On the client side, this sample uses the DiscoveryClient directly. A client implementation that uses DynamicEndpoint can be found here: <a title="https://msdn.microsoft.com/en-us/library/dd807387(VS.100).aspx" href="https://msdn.microsoft.com/en-us/library/dd807387(VS.100).aspx">https://msdn.microsoft.com/en-us/library/dd807387(VS.100).aspx</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Welcome to the Discovery Team’s Blog</title>
      <link>https://docs.microsoft.com/archive/blogs/discovery/welcome-to-the-discovery-teams-blog</link>
      <pubDate>Tue, 19 May 2009 06:29:00 GMT</pubDate>
      <dc:creator><![CDATA[anuragp]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/discovery/2009/05/19/welcome-to-the-discovery-teams-blog/</guid>
      <description><![CDATA[This blog marks a first in a series to introduce you to what Discovery is all about. Cutting to the...]]></description>
      <content:encoded><![CDATA[<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3><FONT face=Calibri>This blog marks a first in a series to introduce you to what Discovery is all about. Cutting to the chase, the discovery functionality in .NET 4.0 provides means for making WCF services discoverable and for clients to locate such services. The technology is based on the WS-Discovery protocol, which is going through the standardization track at <A title="Discovery OASIS Standardization" href="https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=ws-dd" target=_blank mce_href="https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=ws-dd">Oasis</A>.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN>This means that the WCF-Discovery functionality is interoperable with lots of other implementations.<SPAN style="mso-spacerun: yes">&nbsp; </SPAN></FONT></FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3 face=Calibri>There are a <B style="mso-bidi-font-weight: normal">lot</B> of benefits to using WCF-Discovery. With simple modifications to your client and service, you don’t need to hard code endpoints and as a result your services and clients become more robust. Clients don’t need to depend on configuration files for service locations, and admins don’t need to maintain such configuration information. Several problems associated with decoupling and distributed applications become much easier to solve with this technology. You can also have your service auto-configure itself; a service can find all the components it needs and be up and running without any effort. </FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3 face=Calibri>We’ve made using discovery as easy as possible – there is extensive support for utilizing discovery through configuration and we also provide powerful programmatic tools so that you can leverage discovery to its full potential. </FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3 face=Calibri>Through this blog, we’ll cover the depth of the WCF-Discovery functionality available to you such as: how to query for services, how to make services discoverable, how to use discovery through the asynchronous programming model, what the modes of operation for the protocol are, and how to build a Discovery Proxy service, to name a few topics. </FONT></P>
<P style="MARGIN: 0in 0in 10pt" class=MsoNormal><FONT size=3 face=Calibri>The WCF-Discovery feature is now available as part of .NET 4.0 Beta1 release. You can download .NET 4.0 Beta1 and Visual Studio 2010 from <A href="https://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx">https://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx</A>. </FONT><FONT size=3 face=Calibri>The WCF-Discovery bits are part of System.ServiceModel.Discovery.dll assembly and are in System.ServiceModel.Discovery namespace.</FONT></P>]]></content:encoded>
    </item>
  </channel>
</rss>