<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Steve Fox</title><subtitle type="html">Rich Silverlight Application Development in SharePoint</subtitle><id>http://blogs.msdn.com/steve_fox/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/steve_fox/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/steve_fox/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2009-07-08T16:33:22Z</updated><entry><title>SP Connections Decks</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/steve_fox/archive/2009/11/11/sp-connections-decks.aspx" /><id>http://blogs.msdn.com/steve_fox/archive/2009/11/11/sp-connections-decks.aspx</id><published>2009-11-11T20:12:35Z</published><updated>2009-11-11T20:12:35Z</updated><content type="html">&lt;p&gt;This week I was at SharePoint Connections in Vegas and ran through a few sessions on SharePoint Development. I’ve posted the decks here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://cid-40a717fc7fcd7e40.skydrive.live.com/browse.aspx/SP%5E_Connections%5E_Decks" href="http://cid-40a717fc7fcd7e40.skydrive.live.com/browse.aspx/SP%5E_Connections%5E_Decks"&gt;http://cid-40a717fc7fcd7e40.skydrive.live.com/browse.aspx/SP%5E_Connections%5E_Decks&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I will post the code and some additional commentary that I showed in the coming days before the end of the week.&lt;/p&gt;  &lt;p&gt;Steve&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9921023" width="1" height="1"&gt;</content><author><name>Steve Fox</name><uri>http://blogs.msdn.com/members/Steve+Fox.aspx</uri></author></entry><entry><title>VSLive Virtual SharePoint 2010 Conference</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/steve_fox/archive/2009/11/07/vslive-virtual-sharepoint-2010-conference.aspx" /><id>http://blogs.msdn.com/steve_fox/archive/2009/11/07/vslive-virtual-sharepoint-2010-conference.aspx</id><published>2009-11-07T16:32:00Z</published><updated>2009-11-07T16:32:00Z</updated><content type="html">&lt;P&gt;I participated in a virtual conference this week that was all about SharePoint 2010. I presented a couple of sessions, one on a Developer Roadmap and the other on the Developer Tools. I posted the decks here:&lt;/P&gt;
&lt;P&gt;&lt;A title=http://cid-40a717fc7fcd7e40.skydrive.live.com/browse.aspx/VSLive%5E_Virtual href="http://cid-40a717fc7fcd7e40.skydrive.live.com/browse.aspx/VSLive%5E_Virtual"&gt;&lt;FONT color=#0000cc&gt;http://cid-40a717fc7fcd7e40.skydrive.live.com/browse.aspx/VSLive%5E_Virtual&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;I’m cleaning up some of the code and will post before the Beta 2 becomes available.&lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;Steve&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9919080" width="1" height="1"&gt;</content><author><name>Steve Fox</name><uri>http://blogs.msdn.com/members/Steve+Fox.aspx</uri></author><category term="SharePoint development" scheme="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint+development/default.aspx" /><category term="SharePoint" scheme="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint/default.aspx" /><category term="sharepoint 2010" scheme="http://blogs.msdn.com/steve_fox/archive/tags/sharepoint+2010/default.aspx" /></entry><entry><title>SAP TechEd 2009 Office &amp; SharePoint session</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/steve_fox/archive/2009/10/28/sap-teched-2009-office-sharepoint-session.aspx" /><id>http://blogs.msdn.com/steve_fox/archive/2009/10/28/sap-teched-2009-office-sharepoint-session.aspx</id><published>2009-10-28T11:35:44Z</published><updated>2009-10-28T11:35:44Z</updated><content type="html">&lt;p&gt;I did a session this morning that discussed integration between SAP with Office and SharePoint 2010. It was a very well attended session, and I (along with my good friend Juergen Grebe) walked through the different ways in which you can integrate Office and SharePoint 2010 with SAP. I showed a few demos, including a Word Add-in for Office 2010 that shows how you can integrate different external data sources with a custom task pane and then insert the data using content controls. Here’s the VS 2010 view with the custom document and content controls. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SAPTechEd2009OfficeSharePointsession_4080/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SAPTechEd2009OfficeSharePointsession_4080/image_thumb.png" width="514" height="310" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When you F5, you can pull data into the document from an external data source and ‘bind’ to the content controls. The F5 experience looks like the following: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SAPTechEd2009OfficeSharePointsession_4080/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SAPTechEd2009OfficeSharePointsession_4080/image_thumb_1.png" width="520" height="326" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can click the Load button to add data into the document from the different data sources, and then you can click the Upload button to sync the data with a SharePoint list. Note that Word and SharePoint are both 2010. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SAPTechEd2009OfficeSharePointsession_4080/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SAPTechEd2009OfficeSharePointsession_4080/image_thumb_2.png" width="526" height="317" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I also showed a great new demo we’re working on, which highlighted the integration of Silverlight, SharePoint and SAP. This is an awesome demo that leverages the BCS and binds to Silverlight and then takes the SAP data offline. I can’t give away the code just yet, but we’ll make sure that we get this out to you all in the future. Silverlight, SAP and SharePoint offer a wealth of opportunity for the developer. Here are a couple of screenshots for you.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SAPTechEd2009OfficeSharePointsession_4080/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SAPTechEd2009OfficeSharePointsession_4080/image_thumb_3.png" width="549" height="338" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Another screenshot of a custom Word add-in that is WPF-based.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SAPTechEd2009OfficeSharePointsession_4080/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SAPTechEd2009OfficeSharePointsession_4080/image_thumb_4.png" width="558" height="350" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I added the presentation and some of the code I showed here: &lt;a title="http://cid-40a717fc7fcd7e40.skydrive.live.com/browse.aspx/SAP%5E_TechEd%5E_2009" href="http://cid-40a717fc7fcd7e40.skydrive.live.com/browse.aspx/SAP%5E_TechEd%5E_2009"&gt;http://cid-40a717fc7fcd7e40.skydrive.live.com/browse.aspx/SAP%5E_TechEd%5E_2009&lt;/a&gt;. You may not be able to compile the code until you get a copy of the Office Beta 2. However, you can download and use something like Notepad to review the different .cs files in the solution. &lt;/p&gt;  &lt;p&gt;My&amp;#160; buddy Mario also took a few snapshots of the over-capacity crowd. Lots of interest in Office and SharePoint 2010 here in Vienna!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SAPTechEd2009OfficeSharePointsession_4080/IMAG0114_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="IMAG0114" border="0" alt="IMAG0114" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SAPTechEd2009OfficeSharePointsession_4080/IMAG0114_thumb.jpg" width="577" height="348" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9914031" width="1" height="1"&gt;</content><author><name>Steve Fox</name><uri>http://blogs.msdn.com/members/Steve+Fox.aspx</uri></author></entry><entry><title>SAP TechEd 2009</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/steve_fox/archive/2009/10/28/sap-teched-2009.aspx" /><id>http://blogs.msdn.com/steve_fox/archive/2009/10/28/sap-teched-2009.aspx</id><published>2009-10-28T04:59:39Z</published><updated>2009-10-28T04:59:39Z</updated><content type="html">&lt;p&gt;Fresh off the heels of SPC, I’m in Vienna at the annual SAP TechEd conference. We wanted to attend this conference for a couple of reasons. First, the curtains have lifted on Office and SharePoint 2010 so we can now get out there and show it, talk about the innards, and get developers excited about it. Second, whenever you talk about OBAs SAP is top-of-mind for me. It represents a great opportunity for integrating Office and SharePoint with SAP to enhance the IW experience; it represents a major piece of the quintessential OBA. For example, if you check out the architecture below (yes, very high-level), you’ll see that for the developer there are a number of entry points for building OBAs that integrate with SAP. This is no different from any other OBA: you can use Silverlight and integrate with SharePoint; you can create custom web parts; using the BCS you can now create read/write lists called External Lists (read/write into the SAP back-end); you can extend the client UI to create add-ins or doc-level solutions; and you can also leverage Open XML to manage SAP data into and out of documents. Very powerful stuff. &lt;/p&gt;  &lt;p&gt;I will admit that the below is not all-encompassing when it comes to integrating SAP with Office and SharePoint; it is a starting point for programmatically tying the technologies together. (As an alternate to building, you can go the buy route and implement the partner solution between MS and SAP called Duet: &lt;a title="http://www.duet.com/" href="http://www.duet.com/"&gt;http://www.duet.com/&lt;/a&gt;.) You can also use the SharePoint iView, Business Server Pages, and CMIS for example. However, if you want to architect and design your OBA from the ground up, you’d be looking at this type of architecture to build that solution.&amp;#160; Of note in the services layer are the fact that you as the developer have options. For example, you can leverage the WS* standards, use the BizTalk LOB adapters to implement your connection as a WCF-based integration, or you can also use BCS, which adds the value of supporting an offline story.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SAPTechEd_12AF3/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SAPTechEd_12AF3/image_thumb.png" width="531" height="300" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;I’ve talked about BCS in a previous &lt;a href="http://blogs.msdn.com/steve_fox/archive/2009/10/22/spc-day-2-3.aspx"&gt;post&lt;/a&gt;, but will spend a few posts on this as to me this seems like a really promising technology. For example, you can create what’s called an External Content Type (ECT)—the successor to the application definition file in SharePoint 2007, and then use the ECT to load external data into SharePoint. The interesting thing here is the fact that you can build service-based ECTs, so the BCS works as a higher-level layer to ASMX or WCF (the other service entry points in SAP) or other adaptors that are service-based. And simply put, the ECT is a metadata file—an XML file that defines the relationship your application has with the external data source. See below for a very simple ECT:&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;Model xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns=&amp;quot;http://schemas.microsoft.com/windows/2007/BusinessDataCatalog&amp;quot; Name=&amp;quot;BusinessDataCatalog1&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;LobSystems&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;LobSystem Name=“HelloWorld&amp;quot; Type=&amp;quot;DotNetAssembly&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;LobSystemInstances&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;LobSystemInstance Name=“HelloWorldInstance1&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;/LobSystemInstances&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;Entities&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;Entity Name=&amp;quot;Product&amp;quot; Namespace=&amp;quot;ProductModel.BusinessDataCatalog1&amp;quot; EstimatedInstanceCount=&amp;quot;1000&amp;quot; Version=&amp;quot;1.0.0.13&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;Properties&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;Property Name=&amp;quot;Class&amp;quot; Type=&amp;quot;System.String&amp;quot;&amp;gt;ProductModel.BusinessDataCatalog1.ProductService, HelloWorld&amp;lt;/Property&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;/Properties&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;Identifiers&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;Identifier Name=&amp;quot;ID&amp;quot; TypeName=&amp;quot;System.String&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;/Identifiers&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;Methods&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;Method Name=&amp;quot;FindAllEntities&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;Parameters&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;Parameter Direction=&amp;quot;Return&amp;quot; Name=&amp;quot;returnParameter&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;TypeDescriptor TypeName=&amp;quot;System.Collections.Generic.IEnumerable1[[ProductModel.BusinessDataCatalog1.Entity1, HelloWorld]]&amp;quot; IsCollection=&amp;quot;true&amp;quot; Name=&amp;quot;Entity1List&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;TypeDescriptors&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;TypeDescriptor TypeName=&amp;quot;ProductModel.BusinessDataCatalog1.Entity1, HelloWorld&amp;quot; Name=&amp;quot;Entity1&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;TypeDescriptors&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;TypeDescriptor TypeName=&amp;quot;System.String&amp;quot; IdentifierName=&amp;quot;ID&amp;quot; Name=&amp;quot;ID&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;TypeDescriptor TypeName=&amp;quot;System.String&amp;quot; Name=&amp;quot;Manufacturer&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;TypeDescriptor Name=&amp;quot;Name&amp;quot; TypeName=&amp;quot;System.String&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;/TypeDescriptors&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;/Parameter&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;/Parameters&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;MethodInstances&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;MethodInstance Type=&amp;quot;Finder&amp;quot; ReturnParameterName=&amp;quot;returnParameter&amp;quot; Default=&amp;quot;true&amp;quot; Name=&amp;quot;FindAllEntities&amp;quot; DefaultDisplayName=&amp;quot;Entity1 List&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;/MethodInstances&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;/Method&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;/Methods&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;/Entity&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;/Entities&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;/LobSystem&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;/LobSystems&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;lt;/Model&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;BCS also comes with its own API, so you could use the ECT to load SAP data (which supports CRUD operations). If you’re not realizing this is big already, BCS also has an offline story. So, you can effectively create a symmetrical entity relationship across server and client. You’re probably asking how, right?&lt;/p&gt;  &lt;p&gt;If you look at the diagram below, you’ll see that if you move from the left to the right you need to do a few things to get an OBA working using the BCS. Starting from the left, you first need to have your external system up and running. For SAP, this would mean, for example, having a BAPI in place and then creating a web service wrapper to that business object using the native SAP developer workbench. Second, once you’ve got your service you can use tools like SharePoint Designer 2010 to create the ECT (you create the ECT with multiple operations that are each configured against the web methods within your service connection, e.g. GetAllFlights would be a read operation and UpdateSpecificFlightData would be an update operation). You can also create the External List directly from within SharePoint Designer, which results in your read/write SharePoint list. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SAPTechEd_12AF3/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SAPTechEd_12AF3/image_thumb_1.png" width="535" height="303" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once you’ve created the External List, you can do one of two things: you can code against it on the server or you can take it offline and create a client-side integration. The below is an example of where we’ve coded against the BCS API using Silverlight and then added the Silverlight apps as a web part in SharePoint. The interesting thing about the example below is that the data is aggregated from multiple data sources—yet to your user the experience is seamless across the two data sources. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SAPTechEd_12AF3/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SAPTechEd_12AF3/image_thumb_3.png" width="523" height="389" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Okay, since we’re now through step 3 we can move onto step 4, which is where we can begin coding against the client-side cache of the data (when you take the data offline, you essentially are creating an offline cache of the data). For example, the following code sample gets all of the entities you’ve taken offline and loads them into a listbox so the user can choose from them. In reality, you could use the catalog object to get a specific entity and pass the * parameter to get them all. &lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;private void getLOBEntities(object sender, EventArgs e)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;{&lt;/font&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;RemoteSharePointFileBackedMetadataCatalog catalog = new RemoteSharePointFileBackedMetadataCatalog();&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;INamespaceEntityDictionaryDictionary entDictAll = catalog.GetEntities(“*”);&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;foreach (INamedEntityDictionary entDict in entDictAll.Values)&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;{&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;#160;&amp;#160; foreach(IEntity entity in entDict.Values)&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myListBox.Items.Add(entity.Name);&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font color="#0000ff" size="2" face="Courier New"&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The result of the client-side coding exercise is very compelling: you have Office add-ins that can interact with the client-side cache of the data. Users can work from within their Office applications and interact with the data offline. What pushes the data back to the server is a BCSSync (essentially a listener service) that listens for and queues changes on the client and then pushes those changes to the server. The final step would be to deploy the add-in on the client using the ClickOnce deployment method (or other supported method). &lt;/p&gt;  &lt;p&gt;Overall, I see the BCS reflecting some serious value—especially when you look at the ability for it to tie into a service layer. While this is especially relevant this week as I’m attending SAP TechEd, it’s also very relevant to other LOB systems as well (e.g. Siebel, PeopleSoft, Dynamics, and so on). Essentially, create a service and you can connect the BCS to it and create your OBA. &lt;/p&gt;  &lt;p&gt;Okay, more to come soon. &lt;/p&gt;  &lt;p&gt;Steve&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9913890" width="1" height="1"&gt;</content><author><name>Steve Fox</name><uri>http://blogs.msdn.com/members/Steve+Fox.aspx</uri></author></entry><entry><title>Office &amp; Sharepoint Development at PDC</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/steve_fox/archive/2009/10/25/office-sharepoint-development-at-pdc.aspx" /><id>http://blogs.msdn.com/steve_fox/archive/2009/10/25/office-sharepoint-development-at-pdc.aspx</id><published>2009-10-25T14:36:59Z</published><updated>2009-10-25T14:36:59Z</updated><content type="html">&lt;p&gt;The Professional Developer Conference (PDC) is quickly approaching, and if you have not registered yet I would encourage you to do so. PDC is about what’s here today in terms of technology, but mostly tries to cover what’s coming. The ‘what’s coming’ part can range from months to in some cases 2 year visions, but in the case of Office and SharePoint it’s a matter of months. Here’s a taste of what’s coming to PDC for business productivity for the developer. &lt;/p&gt;  &lt;p&gt;First the keynote. Kurt DelBene, Senior VP in Office, will be doing the keynote this year. Kurt is a very technical guy and is great when it comes to talking to developers. He understands the space and the audience very well, and it’s great that he can be there to kick off PDC for us.&lt;/p&gt;  &lt;p&gt;Second the sessions. At PDC, Office and SharePoint have a number of great sessions. For example, some highlights on what you’ll see are: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;John Durant&lt;/strong&gt; talking about Office 2010 development and the innovations for this space, including things like .NET-based apps for Office, Fluent UI extensibility, service integration (think Azure), and SharePoint integration with Office. John’s also going to do a lunch session to deconstruct. &lt;a title="Developing .NET Managed Applications Using the Office 2010 Developer Platform" href="http://microsoftpdc.com/Sessions/P09-06"&gt;Developing .NET Managed Applications Using the Office 2010 Developer Platform&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Mike Ammerlaan&lt;/strong&gt; giving you an introduction to SharePoint development and then go deep on the SharePoint Client Object Model—a new way of interacting with SharePoint data from JavaScript, .NET or Silverlight applications.&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a title="Overview of SharePoint 2010 Programmability" href="http://microsoftpdc.com/Sessions/P09-18"&gt;Overview of SharePoint 2010 Programmability&lt;/a&gt;&lt;/li&gt;      &lt;li&gt;&lt;a title="Developing Solutions for Microsoft SharePoint Server 2010 Using the Client Object Model" href="http://microsoftpdc.com/Sessions/PR07"&gt;Developing Solutions for Microsoft SharePoint Server 2010 Using the Client Object Model&lt;/a&gt;&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;strong&gt;Paul Stubbs&lt;/strong&gt; coding up some great Silverlight and SharePoint integrations and showing you how you can tie these two great technologies together. &lt;a title="Developer Patterns to Integrate Microsoft Silverlight 3.0 with Microsoft SharePoint 2010" href="http://microsoftpdc.com/Sessions/P09-05"&gt;Developer Patterns to Integrate Microsoft Silverlight 3.0 with Microsoft SharePoint 2010&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;David Ollason&lt;/strong&gt; extending the OCS UI with Silverlight and WPF with the new support for UI customization in UC. &lt;a title="Integrating and Extending the Microsoft Office Communicator Experience with Windows Presentation" href="http://microsoftpdc.com/Sessions/PR13"&gt;Integrating and Extending the Microsoft Office Communicator Experience with Windows Presentation&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Rob Howard&lt;/strong&gt; extending your SharePoint on-premises experience to the cloud by walking you through the development story for SharePoint Online. &lt;a title="SharePoint is not Just On-Premise- Developing and Deploying Solutions to Microsoft SharePoint On" href="http://microsoftpdc.com/Sessions/PR10"&gt;SharePoint is not Just On-Premise- Developing and Deploying Solutions to Microsoft SharePoint On&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Maxim Lukiyanov&lt;/strong&gt; going deep on SharePoint and services. He’ll talk to the range of options in SharePoint 2010 and then go deep on WCF and REST to show you what’s possible. &lt;a title="SharePoint is not Just On-Premise- Developing and Deploying Solutions to Microsoft SharePoint On" href="http://microsoftpdc.com/Sessions/PR10"&gt;SharePoint is not Just On-Premise- Developing and Deploying Solutions to Microsoft SharePoint On&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Zeyad Rajabi&lt;/strong&gt; taking you into the Open XML zone. Zeyad’s one of Microsoft’s Open XML gurus, and this represents a great opportunity to learn about the new Open XML SDK and APIs. &lt;a title="Document Assembly and Manipulation on Microsoft SharePoint Server 2010 Using Word Services and O" href="http://microsoftpdc.com/Sessions/PR09"&gt;Document Assembly and Manipulation on Microsoft SharePoint Server 2010 Using Word Services and Open&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Steve Fox&lt;/strong&gt; (yours truly) pulling up the hood on Business Connectivity Services (BCS), which will be on the main ways of integrating LOB systems with SharePoint and then extending this to the client. &lt;a title="Developing Solutions with Business Connectivity Services in Microsoft SharePoint Server 2010" href="http://microsoftpdc.com/Sessions/PR06"&gt;Developing Solutions with Business Connectivity Services in Microsoft SharePoint Server 2010&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Chris Mayo&lt;/strong&gt; diving into the future of UC programmability. &lt;a title="Microsoft Unified Communications- Developer Platform Futures" href="http://microsoftpdc.com/Sessions/P09-12"&gt;Microsoft Unified Communications- Developer Platform Futures&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Andrew Bybee&lt;/strong&gt; showing you how you can integrate Microsoft xRM and Azure to create great business solutions. &lt;a title="Developing xRM Solutions Using Windows Azure" href="http://microsoftpdc.com/Sessions/P09-07"&gt;Developing xRM Solutions Using Windows Azure&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Overall, there’s a great line-up to learn a lot about how to develop for Office and SharePoint (and even UC and CRM/xRM) as well as a ton of other topics as well ranging from Silverlight to Azure, so make sure you register today and come out to PDC ready to have your brain bleed code! &lt;/p&gt;  &lt;p&gt;You can check out all of the sessions at PDC here: &lt;a title="http://microsoftpdc.com/Sessions" href="http://microsoftpdc.com/Sessions"&gt;http://microsoftpdc.com/Sessions&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;You can check out all of the keynotes for PDC here: &lt;a title="http://microsoftpdc.com/" href="http://microsoftpdc.com/"&gt;http://microsoftpdc.com/&lt;/a&gt;. (Click Keynotes.)&lt;/p&gt;  &lt;p&gt;And most importantly, you can register here: &lt;a title="http://microsoftpdc.com/Registration" href="http://microsoftpdc.com/Registration"&gt;http://microsoftpdc.com/Registration&lt;/a&gt;. There’s a discount in effect until the end of October, so register today!&lt;/p&gt;  &lt;p&gt;I hope to see you in LA!&lt;/p&gt;  &lt;p&gt;Steve&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9912606" width="1" height="1"&gt;</content><author><name>Steve Fox</name><uri>http://blogs.msdn.com/members/Steve+Fox.aspx</uri></author></entry><entry><title>Leaving las Vegas: a successful spc</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/steve_fox/archive/2009/10/23/leaving-las-vegas-a-successful-spc.aspx" /><id>http://blogs.msdn.com/steve_fox/archive/2009/10/23/leaving-las-vegas-a-successful-spc.aspx</id><published>2009-10-23T13:14:34Z</published><updated>2009-10-23T13:14:34Z</updated><content type="html">&lt;p&gt;What a week! It was an incredibly busy week what with the opening of the curtains on SharePoint and Office 2010. There was a lot of great press and buzz around the new products, and all attendees that I spoke to were super excited and can’t wait to get their hands on the bits. &lt;/p&gt;  &lt;p&gt;I met with quite a few customers this week and saw some great solutions on the exhibition floor. I’m always amazed at the innovation, and was especially happy to see companies like Tyson who showed a number of their OBAs at the show, eSponder, who have a great SharePoint response management system, Infragistics, and ComponentOne--who are innovating in great ways to bring together Silverlight and SharePoint. &lt;/p&gt;  &lt;p&gt;Yesterday, I also got a chance to take in a couple of sessions. I checked out Nazeer’s BCS Security session and also saw Andrew Connell’s Developing SharePoint Services session—after which my brain was bleeding because he had so much code! I was surprised at the level of interest around the BCS; I saw early interest in some of the internal developer training we’ve done through the Developer &amp;amp; Platform Evangelism (DPE) Metro program (this is a program run by the group I work for at Microsoft). However, the amount of people who attended the 200-400 sessions was pretty amazing. It was also great to see the buzz around the new Client Object Model—Paul Stubbs presented a kick-a** session with lots of great accolades. All good stuff. &lt;/p&gt;  &lt;p&gt;After this week, there were a couple of things that were apparent to me. Not only is SharePoint and Office 2010 a game-changer for developers, but this community is very tightly-knit. There’s a natural inertia and glue that supports the momentum for SharePoint and Office, and this is exciting to see. This week, it was even more exciting to experience. So, while I’m sad to officially say goodbye to the SharePoint Conference 2009, I was glad to be a part of a great week. &lt;/p&gt;  &lt;p&gt;I will add that it was fantastic to connect with a lot of friends and colleagues across the industry. Ted “Paddy” Pattison, AC, Rob Bogue, Todd “Rocker” Baginski, Barks, John Holliday, Todd Shick, the gang from Penton, the gang from Intelligent Effects, Karine, Shirley and Gary, and many, many, many more. And hell, what would Las Vegas be without a themed wedding and an Elvis sighting!!! That’s right, last night I bore witness to my good friends Barks and Bags getting remarried at the lovely Viva Las Vegas. To leave with you a smile, here are a couple of snapshots of the wedding. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/LeavinglasVegasasuccessfulspc_540F/DSC00495%5B1%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="DSC00495[1]" border="0" alt="DSC00495[1]" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/LeavinglasVegasasuccessfulspc_540F/DSC00495%5B1%5D_thumb.jpg" width="526" height="396" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/LeavinglasVegasasuccessfulspc_540F/DSC00494%5B1%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="DSC00494[1]" border="0" alt="DSC00494[1]" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/LeavinglasVegasasuccessfulspc_540F/DSC00494%5B1%5D_thumb.jpg" width="521" height="392" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Steve&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9912044" width="1" height="1"&gt;</content><author><name>Steve Fox</name><uri>http://blogs.msdn.com/members/Steve+Fox.aspx</uri></author></entry><entry><title>SharePoint 2010 SDK live</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/steve_fox/archive/2009/10/22/sharepoint-2010-sdk-live.aspx" /><id>http://blogs.msdn.com/steve_fox/archive/2009/10/22/sharepoint-2010-sdk-live.aspx</id><published>2009-10-22T18:25:10Z</published><updated>2009-10-22T18:25:10Z</updated><content type="html">&lt;p&gt;If you’re looking to get some in-depth information about SharePoint 2010, a current version is available to you online:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/dd776256.aspx" href="http://msdn.microsoft.com/en-us/library/dd776256.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd776256.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There’s a lot of great information here for you, for example I posted an earlier post on BCS, and there is a lot of good info on this in the newly posted SDK.&lt;/p&gt;  &lt;p&gt;Steve&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9911587" width="1" height="1"&gt;</content><author><name>Steve Fox</name><uri>http://blogs.msdn.com/members/Steve+Fox.aspx</uri></author></entry><entry><title>SPC Day 2 &amp; 3</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/steve_fox/archive/2009/10/22/spc-day-2-3.aspx" /><id>http://blogs.msdn.com/steve_fox/archive/2009/10/22/spc-day-2-3.aspx</id><published>2009-10-22T15:41:15Z</published><updated>2009-10-22T15:41:15Z</updated><content type="html">&lt;p&gt;The last couple of days have been crazy here at SPC. The excitement for Office and SharePoint 2010 has continued to swell. I’ve had the opportunity to meet with lots of customers here and actually got a chance to see Huey Lewis and the News on Tuesday night. That was a little bit of a blast from the past! &lt;/p&gt;  &lt;p&gt;Yesterday, I gave a session on the Business Connectivity Services (BCS)—the session was entitled Creating Office Business Applications with Business Connectivity Services. It was a 300-level code heavy session that showed developers how they could take the BCS from the server offline to the client and begin to code against it using the BCS. &lt;/p&gt;  &lt;p&gt;If you think about the idea of an OBA being the ability to integrate SharePoint and/or Office to LOB systems, the BCS represents another way to connect your data. However, there are some great advantages to the BCS.&lt;/p&gt;  &lt;p&gt;1. It is read/write (where its predecessor the BDC was read-only).&lt;/p&gt;  &lt;p&gt;2. It provides the ability to work with data from both the server &lt;em&gt;and&lt;/em&gt; the client. &lt;/p&gt;  &lt;p&gt;3. You can work with the data on the client offline without the need to have connectivity with the server. &lt;/p&gt;  &lt;p&gt;4. There is a rich OM that enables you to program against that data on the server and on the client.&lt;/p&gt;  &lt;p&gt;Below is a diagram that shows you how the BCS fits into the OBA architecture. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SPCDay23_7A23/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SPCDay23_7A23/image_thumb.png" width="504" height="379" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If we take the BCS part of this diagram and drill into it, you can see that there’s quite a bit going on. For example, the below diagram shows that you’ve got something called an External Content Type (ECT) on the server—this is the successor to the BDC’s application definition file but provides CRUD operations. You’ll also see that you can create an External List (a SharePoint list that provides read/write capabilities into your external data source) and then take it offline (which uses ClickOnce deployment to the client). The offline story is a cache of the data you take offline with the ability to code against that cache coming from the Office installation (i.e. the BCS runtime).&amp;#160; And lastly, there is a mechanism that polls and queues the changes you make on the client and then updates those changes to the server. This is very cool stuff because you can create the ECT using SharePoint Designer 2010 or VS 2010 and then map it to a service end-point, hence you can consume WCF, ASP.NET, Azure, and of course ADO.NET service or classic endpoints. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SPCDay23_7A23/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SPCDay23_7A23/image_thumb_1.png" width="509" height="383" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I’ve posted my deck from the session here: &lt;a title="http://cid-40a717fc7fcd7e40.skydrive.live.com/browse.aspx/BCS%5E_SPC" href="http://cid-40a717fc7fcd7e40.skydrive.live.com/browse.aspx/BCS%5E_SPC"&gt;http://cid-40a717fc7fcd7e40.skydrive.live.com/browse.aspx/BCS%5E_SPC&lt;/a&gt;. I’m also going to clean up the code and post it here later in the week. &lt;/p&gt;  &lt;p&gt;After I presented, I took a number of questions and the audience asked me to post one thing and that was a small tip to include a “?wsdl” when creating the ECT. For example, when you create your service, you will have a service endpoint that you’ll need to configure in SharePoint Designer. You configure it by clicking External Content Types and then External Content Type to create a new ECT-see below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SPCDay23_7A23/ECTs_In_SPD_Part2_1_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ECTs_In_SPD_Part2_1" border="0" alt="ECTs_In_SPD_Part2_1" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SPCDay23_7A23/ECTs_In_SPD_Part2_1_thumb.jpg" width="497" height="374" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;However, once you’ve created a new ECT you can add a new connection, you need to specify the WCF as your service configuration (applies to all types of services, e.g. ASP.NET and WCF). If you enter the Service Metadata URL as in the below figure you’ll get an error; you need to add a “?wsdl” after the service URL and that will configure properly. For example, for the &lt;strong&gt;Service Metadata URL&lt;/strong&gt; you might enter something like &lt;a href="http://fabrikamhockey:1190/Service.asmx?wsdl"&gt;http://fabrikamhockey:1190/Service.asmx?wsdl&lt;/a&gt;, and for the &lt;strong&gt;Service Endpoint URL&lt;/strong&gt;, you’d enter &lt;a href="http://fabrikamhockey:1190/Service.asmx"&gt;http://fabrikamhockey:1190/Service.asmx&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SPCDay23_7A23/clip_image001_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SPCDay23_7A23/clip_image001_thumb.jpg" width="264" height="375" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’ll talk more about the BCS in upcoming posts. There’s a wealth of information and very cool things within the BCS, and it takes OBAs to the next level. I’m pumped about the BCS, and I know that when you all get availability to the bits you’re going to love this new feature of SharePoint and Office. &lt;/p&gt;  &lt;p&gt;Steve&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9911439" width="1" height="1"&gt;</content><author><name>Steve Fox</name><uri>http://blogs.msdn.com/members/Steve+Fox.aspx</uri></author></entry><entry><title>Visual Studio 2010 Beta 2 goes live</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/steve_fox/archive/2009/10/19/visual-studio-2010-beta-1-goes-live.aspx" /><id>http://blogs.msdn.com/steve_fox/archive/2009/10/19/visual-studio-2010-beta-1-goes-live.aspx</id><published>2009-10-19T18:18:46Z</published><updated>2009-10-19T18:18:46Z</updated><content type="html">&lt;p&gt;Today, the release of Visual Studio 2010 Beta 2 was announced. For those of you who are Office and SharePoint developers, this release of Visual Studio will be huge as it not only has the Office templates you’ve come to know and love, but it also has an out-of-the-box experience for the SharePoint 2010 project templates as well. If you haven’t heard about the templates in 2010, you need to check them out!&lt;/p&gt;  &lt;p&gt;To get started, you can go to the Beta 2 landing page to check out some of the product details: &lt;a title="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx" href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx"&gt;http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx&lt;/a&gt;. You’ll find product information and the download links for the different SKUs that are available for trial download. The download is pretty seamless; I installed on my Windows 2008 R2 64 bit laptop. As per the below, I installed the Visual Studio Team System 2010 Beta. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/VisualStudio2010Beta1goeslive_5C42/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/VisualStudio2010Beta1goeslive_5C42/image_thumb.png" width="532" height="409" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Once you install the VS 2010 Beta 2, you can find the 2010 Office templates under the Office 2010 Project Template category and the SharePoint templates under the SharePoint 2010 Project Template category. You’ll notice that all of the templates that were supported in 2007 are persisted forward; however, you won’t find the Office 2003 Office templates. If you want to build add-ins for Office 2003, you’ll need to use VS 2008. &lt;/p&gt;  &lt;p&gt;For in-depth instructions on how to download, you can see Brian Keller’s post here: &lt;a title="http://channel9.msdn.com/shows/10-4/10-4-Episode-33-Downloading-and-Installing-Visual-Studio-2010-Beta-2/" href="http://channel9.msdn.com/shows/10-4/10-4-Episode-33-Downloading-and-Installing-Visual-Studio-2010-Beta-2/"&gt;http://channel9.msdn.com/shows/10-4/10-4-Episode-33-Downloading-and-Installing-Visual-Studio-2010-Beta-2/&lt;/a&gt;. &lt;strong&gt;&amp;#160;&lt;/strong&gt;Also, MSDN has just published a new portal where you can get lots of info on VS 2010: &lt;a title="http://msdn.microsoft.com/en-us/library/default.aspx" href="http://msdn.microsoft.com/en-us/library/default.aspx"&gt;http://msdn.microsoft.com/en-us/library/default.aspx&lt;/a&gt;. &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9909288" width="1" height="1"&gt;</content><author><name>Steve Fox</name><uri>http://blogs.msdn.com/members/Steve+Fox.aspx</uri></author></entry><entry><title>SPC Day 1: Keynote</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/steve_fox/archive/2009/10/19/spc-day-1-keynote.aspx" /><id>http://blogs.msdn.com/steve_fox/archive/2009/10/19/spc-day-1-keynote.aspx</id><published>2009-10-19T18:16:53Z</published><updated>2009-10-19T18:16:53Z</updated><content type="html">&lt;p&gt;I’m here at a sold-out SharePoint Conference (SPC) – 7,400 attendees, and the buzz in the keynote is crazy. The keynote line-up includes Tom Rizzo, Steve Ballmer and Jeff Teper. &lt;/p&gt;  &lt;p&gt;In the keynote, Tom gave a great introduction talking about some of the key and fun stats at the conference such as 7.4 miles of cable. He also talked to the attendee count being up from 3,800 from the last SPC that happened in Seattle last year. Over 70 countries are represented here at SPC. Wow! &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SPCDay1Keynote_7F1A/DSC00484.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="DSC00484" border="0" alt="DSC00484" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SPCDay1Keynote_7F1A/DSC00484_thumb.jpg" width="507" height="380" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Steve talked about productivity using the ‘three screens’: PC, Phone and TV—the confluence of productivity through these three different form factors with SharePoint and Office driving this productivity. Core to his keynote was the fact that “SharePoint is at the center of it…” where he emphasized the strength and value (citing Kraft as an example of a company that saved over $2M through using SharePoint) of on-premises or cloud-based solutions built on SharePoint. He announced the fact that there are 1M people signed up for SharePoint Online. &lt;/p&gt;  &lt;p&gt;Steve also introduced the new SharePoint 2010 workloads (sites, communities, content, search, insights, and composites) and walked through the workloads and the gains that companies can feel through the adoption of SharePoint. He also announced the Public Beta of SharePoint and Office 2010 will be available in November. It was great to see him talk about SharePoint extensibility, as I personally feel that this is one of the strongest leaps forward for SharePoint—with tools, service/OM improvements, and a strong developer community development for SharePoint is poised to take off even further with this release. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SPCDay1Keynote_7F1A/DSC00488.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="DSC00488" border="0" alt="DSC00488" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SPCDay1Keynote_7F1A/DSC00488_thumb.jpg" width="511" height="384" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Tom did a number of demos and announced the ability to develop SharePoint on top of Windows 7 and also showed the new Business Connectivity Services (BCS) and hooked a SQL Server instance to a SharePoint external list using SharePoint Designer 2010 (which is free!). See a screenshot of the SharePoint Designer interface below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SPCDay1Keynote_7F1A/ECTs_In_SPD_Part2_1_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ECTs_In_SPD_Part2_1" border="0" alt="ECTs_In_SPD_Part2_1" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SPCDay1Keynote_7F1A/ECTs_In_SPD_Part2_1_thumb.jpg" width="518" height="390" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Tom showed the new VS 2010 extensibility tools that are now available in the VS 2010 Beta 1. Using the new tools, he showed how to create a new visual web part and then also showed the Developer Dashboard after deploying the web part to SharePoint 2010. He also showed sandboxed solutions, which enables you to create and deploy web parts to SharePoint Online (or on-premises) without administrator intervention-- a nice way to deploy web parts to a site collection or site that you own. Tom also talked to WCM and FAST, showing some demos for these areas. It was great to see Tom talk about the integration of Silverlight and SharePoint! In the WCM demo, he showed the media web part, FAST integration, Silverlight support in SharePoint, and&amp;#160; then talked to the fact that SharePoint now supports the XHTML standard. All great stuff!&lt;/p&gt;  &lt;p&gt;To kick off his keynote, Jeff traced some history around strategy and benefit and thanked the partners and customers and encouraged the SharePoint community to keep the feedback loop open to help improve the product.During his keynote of the keynote he focused on the numerous new end-user features of SharePoint—talking, for example, about the productivity gains with the SharePoint ribbon and new navigation structure for SharePoint and the improvements in the social computing space. He also talked about x-browser, MUI and Office client support and also discussed the new SharePoint Workspace (the evolved Groove) and also talked about the Mobile experience with SharePoint. The new SharePoint Workspace enables users to take SharePoint lists and libraries offline. &lt;/p&gt;  &lt;p&gt;All in all, some great reactions from the keynote audience—lots of buzz here in Las Vegas and an incredible amount of news and content that will pervade the week. There’s 300 hrs of new content for Office and SharePoint 2010, and 45 hours of HOLs here for attendees to work through. &lt;/p&gt;  &lt;p&gt;More to come tomorrow as I attend sessions, meet with customers and prepare for my BCS session on Wednesday.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9909286" width="1" height="1"&gt;</content><author><name>Steve Fox</name><uri>http://blogs.msdn.com/members/Steve+Fox.aspx</uri></author></entry><entry><title>office and SharePoint 2010 conferences</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/steve_fox/archive/2009/09/29/office-and-sharepoint-2010-conferences.aspx" /><id>http://blogs.msdn.com/steve_fox/archive/2009/09/29/office-and-sharepoint-2010-conferences.aspx</id><published>2009-09-29T23:31:49Z</published><updated>2009-09-29T23:31:49Z</updated><content type="html">&lt;p&gt;Wow, what a busy time…conference season is right around the corner, and there’s lots of interesting conferences coming up. For example, here is a short-list of conferences that I’ll be hitting over the next few weeks (in chronological order): &lt;/p&gt;  &lt;p&gt;1. &lt;a href="http://www.mssharepointconference.com/Pages/default.aspx"&gt;SharePoint Conference (10/19-10/22) – Las Vegas, Nevada&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;2. &lt;a href="http://www.sapteched.com/emea/home.htm"&gt;SAP TechEd (10/27-10/29) – Vienna, Austria&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3. &lt;a href="http://www.devconnections.com/"&gt;DevConnections (11/9-11/11) – Las Vegas, Nevada&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;4. &lt;a href="http://microsoftpdc.com/"&gt;Professional Developer Conference (11/17-11/19) – Los Angeles, USA&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In each of these conferences, we’ll be addressing both SharePoint and Office development in a number of areas, and I’ll make sure I send out reports and code for those of you looking to get a head start on 2010 development as we present. (Note: One of the major ones that’s not on this list is TechEd EU, which runs concurrent to DevConnections.)&lt;/p&gt;  &lt;p&gt;If you’re wondering which one to attend, some thoughts about the above. The SharePoint Conference (SPC) is where you’ll see a ton of SharePoint and Office sessions—for both the IT Pro and the Developer. (Note that ODC is now a part of SPC.) Lots of good stuff there that will mostly focus on the new 2010 technologies. At SAP TechEd, Juergen Daiberl and I will be discussing how you can integrate both Office and SharePoint 2010 with SAP in many different ways. Very cool stuff. (Look out for a blog post where I’ll discuss Silverlight, SharePoint and SAP integration. It’ll blow your mind…okay, maybe not but it’s pretty cool.) DevConnections is a great, smaller conference where you’ll see both SharePoint 2007 &lt;em&gt;and&lt;/em&gt; 2010 content. I like DevConnections because you also get the chance to go cross-track with other tracks (e.g. SQL Connections). And finally, for those of you who are operating more in the Pro Dev space, the Professional Developer Conference (PDC) is an awesome forward-looking conference that lays out some of today’s technologies, but focuses mostly on what’s coming in the near- and far-term. PDC is run out of my group (DPE, which stands for Developer and Platform Evangelism) and planning is in full swing as we close in!&lt;/p&gt;  &lt;p&gt;For those of you that have been following this blog, as this conference season starts I’ll be starting to turn my attention to the new Office and SharePoint 2010 features that you can use for your development efforts. &lt;/p&gt;  &lt;p&gt;Some things to look out for are new developer content that will be published out to Channel 9: &lt;a title="http://channel9.msdn.com/" href="http://channel9.msdn.com/"&gt;http://channel9.msdn.com/&lt;/a&gt;. I can’t say much more than it’s going to be great content that you’ll definitely want to dig into. &lt;/p&gt;  &lt;p&gt;More to come soon, but pack your bags and get ready for the conference/launch season is almost upon us!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9900979" width="1" height="1"&gt;</content><author><name>Steve Fox</name><uri>http://blogs.msdn.com/members/Steve+Fox.aspx</uri></author></entry><entry><title>PDC Registration is Now Open!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/steve_fox/archive/2009/08/04/pdc-registration-is-now-open.aspx" /><id>http://blogs.msdn.com/steve_fox/archive/2009/08/04/pdc-registration-is-now-open.aspx</id><published>2009-08-04T17:22:00Z</published><updated>2009-08-04T17:22:00Z</updated><content type="html">&lt;p&gt;The PDC will once again be held this year in Los Angeles, and registration is now open! For those of you who have not been to a PDC, it skews more towards the future-looking and emphasizes deep, technical sessions for the professional developers. There’s also always a great mix of content and speakers, and this is where you see the top speakers geek out on what’s coming.&lt;/p&gt;  &lt;p&gt;Keynoting this year are Ray Ozzie and Bob Muglia—and there will be more great keynote speakers beyond these two.&lt;/p&gt;  &lt;p&gt;My areas of personal interest (and those that are relevant to this blog) cut across Office, SharePoint, Unified Communications, and CRM, and this year there will be some great sessions in each of these areas. For example, last night Microsoft released an initial list of sessions (&lt;a title="http://microsoftpdc.com/Sessions/RSS" href="http://microsoftpdc.com/Sessions/RSS"&gt;http://microsoftpdc.com/Sessions/RSS&lt;/a&gt;), and the ones that mapped to the above areas are: &lt;/p&gt;  &lt;p&gt;1. Under the Hood with Microsoft SharePoint 2010 Programmability—a deep dive on the innards of SP 2010 OM, services, tools, and so on. &lt;/p&gt;  &lt;p&gt;2. Microsoft Unified Communications Futures—discusses how you can integrate UC presence into your WPF and Silverlight apps using .NET programmability.&lt;/p&gt;  &lt;p&gt;3. Developing xRM Solutions using Windows Azure—the integration of xRM and Azure, which can result in very compelling business solutions.&lt;/p&gt;  &lt;p&gt;4. Developing .NET Managed Applications using the Office 2010 Developer Platform—a deep dive into the new additions to the Office developer platform including services, APIs, tools, and so on. &lt;/p&gt;  &lt;p&gt;5. Developer Patterns to Integrate Microsoft Silverlight 3.0 with Microsoft SharePoint 2010—a way to integrate Silverlight and SharePoint through a set of reusable patterns.&lt;/p&gt;  &lt;p&gt;There’s also quite a few more initial sessions listed, so check them out here: &lt;a title="http://microsoftpdc.com/" href="http://microsoftpdc.com/"&gt;http://microsoftpdc.com/&lt;/a&gt;. And to register, go here: &lt;a title="http://microsoftpdc.com/Registration" href="http://microsoftpdc.com/Registration"&gt;http://microsoftpdc.com/Registration&lt;/a&gt;. I hope to see you there!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://microsoftpdc.com/" target="_blank"&gt;&lt;img title="clip_image001" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="244" alt="clip_image001" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/PDCRegistrationisNowOpen_6793/clip_image001_3.jpg" width="124" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9857152" width="1" height="1"&gt;</content><author><name>Steve Fox</name><uri>http://blogs.msdn.com/members/Steve+Fox.aspx</uri></author></entry><entry><title>SharePoint 2010 Developer Sneak Peek</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/steve_fox/archive/2009/07/13/sharepoint-2010-developer-sneak-peek.aspx" /><id>http://blogs.msdn.com/steve_fox/archive/2009/07/13/sharepoint-2010-developer-sneak-peek.aspx</id><published>2009-07-13T18:35:48Z</published><updated>2009-07-13T18:35:48Z</updated><content type="html">&lt;p&gt;Today, MS published a sneak peek for SharePoint 2010, which you can find more information about here: &lt;a title="http://sharepoint.microsoft.com/2010/sneak_peek/Pages/default.aspx" href="http://sharepoint.microsoft.com/2010/sneak_peek/Pages/default.aspx"&gt;http://sharepoint.microsoft.com/2010/sneak_peek/Pages/default.aspx&lt;/a&gt;. You can click on the either of the Sneak Peek videos to see what Tom, Richard and Paul have to say. You’ll want to check out the live WPC videos on &lt;a title="http://www.digitalwpc.com/" href="http://www.digitalwpc.com/"&gt;http://www.digitalwpc.com/&lt;/a&gt;, as key executives talk about some of the new wave of technologies (e.g. Office 2010 Technical Preview was just announced by Stephen Elop).&lt;/p&gt;  &lt;p&gt;Paul Andrew, Product Manager from the SharePoint group, provides an introduction to some of the cool new features of SharePoint 2010. Specifically, he discussed six key new features:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Visual Studio 2010 SharePoint tools&lt;/li&gt;    &lt;li&gt;Language Integrated Query to SharePoint&lt;/li&gt;    &lt;li&gt;Developer Dashboard&lt;/li&gt;    &lt;li&gt;Business Connectivity Services&lt;/li&gt;    &lt;li&gt;Client Object Model&lt;/li&gt;    &lt;li&gt;Silverlight Web Part&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;My personal favorite, as you might imagine given the flavor of some of the posts in my blog, is the combination of Client Object Model and Silverlight—this will be huge. You can see some of the code that Paul demos in the screenshot below from his Sneak Peek video below:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SharePoint2010DeveloperSneakPeek_78DF/image_8.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="364" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/SharePoint2010DeveloperSneakPeek_78DF/image_thumb_3.png" width="506" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can check out the Sneak Peek video for the SharePoint 2010 Developer and get access to a bunch more SharePoint 2010 screenshots at the following URL: &lt;a title="http://sharepoint.microsoft.com/2010/Sneak_Peek/Pages/Developer-Video.aspx" href="http://sharepoint.microsoft.com/2010/Sneak_Peek/Pages/Developer-Video.aspx"&gt;http://sharepoint.microsoft.com/2010/Sneak_Peek/Pages/Developer-Video.aspx&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;All in all, this Sneak Peek shows that SharePoint 2010 is going to be huge, and there are some great features in the pipeline. To get a feel for when you’ll see more on SharePoint 2010, be sure to sign up for the SharePoint Conference (SPC) in October: &lt;a title="http://www.mssharepointconference.com/Pages/default.aspx" href="http://www.mssharepointconference.com/Pages/default.aspx"&gt;http://www.mssharepointconference.com/Pages/default.aspx&lt;/a&gt;. When you register, be sure to sign up for the 1-day SharePoint 2010 (post-conference) Developer deep dive. It’s a 1-day deep dive that I’ve scheduled for you with Andrew Connell and Ted Pattison! This is a great opportunity to get a download of the key developer features that you’ll need to know by two of the industry’s top SharePoint experts. &lt;/p&gt;  &lt;p&gt;As we get closer to SPC, you’ll see more from me on this blog on the Office &lt;em&gt;and&lt;/em&gt; SharePoint 2010 developer experience.&lt;/p&gt;  &lt;p&gt;Steve&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9831816" width="1" height="1"&gt;</content><author><name>Steve Fox</name><uri>http://blogs.msdn.com/members/Steve+Fox.aspx</uri></author></entry><entry><title>Announcement: Silverlight 3 is now RTW...</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/steve_fox/archive/2009/07/11/announcement-silverlight-3-is-now-rtw.aspx" /><id>http://blogs.msdn.com/steve_fox/archive/2009/07/11/announcement-silverlight-3-is-now-rtw.aspx</id><published>2009-07-11T23:27:00Z</published><updated>2009-07-11T23:27:00Z</updated><content type="html">&lt;P&gt;You can check out more info on how to get up and running on the Silverlight site: &lt;A href="http://silverlight.net/getstarted/default.aspx"&gt;http://silverlight.net/getstarted/default.aspx&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;You can also check out Tim Heuer's blog here: &lt;A href="http://timheuer.com/blog/"&gt;http://timheuer.com/blog/&lt;/A&gt;. He's got some great links on where to get tools/SDK and also some of the changes to expect with the up and coming with the new version. &lt;/P&gt;
&lt;P&gt;Now it's time to update all of those Silverlight&amp;nbsp;and SharePoint integrations you've been&amp;nbsp;building! :-)&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Steve&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9829728" width="1" height="1"&gt;</content><author><name>Steve Fox</name><uri>http://blogs.msdn.com/members/Steve+Fox.aspx</uri></author><category term="Silverlight" scheme="http://blogs.msdn.com/steve_fox/archive/tags/Silverlight/default.aspx" /></entry><entry><title>WCF Services and SharePoint: Integrating SharePoint Web Parts and WCF Services Hosted in IIS</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/steve_fox/archive/2009/07/08/wcf-services-and-sharepoint-integrating-sharepoint-web-parts-and-wcf-services-hosted-in-iis.aspx" /><id>http://blogs.msdn.com/steve_fox/archive/2009/07/08/wcf-services-and-sharepoint-integrating-sharepoint-web-parts-and-wcf-services-hosted-in-iis.aspx</id><published>2009-07-08T18:33:22Z</published><updated>2009-07-08T18:33:22Z</updated><content type="html">&lt;p&gt;I was asked a couple of times recently about WCF and SharePoint—i.e. how do you integrate a WCF service with SharePoint that is hosted in IIS? Well, I did a little digging around over the past few weeks to see what was out there and besides finding Sahil’s &lt;a href="http://blah.winsmarts.com/"&gt;blog&lt;/a&gt;, which has some decent coverage on deploying WCF to the SharePoint hive, I didn’t find a single place where I had ‘the’ (or should I say ‘my’) perfect walkthrough for the following: deploying a WCF service to IIS and then integrating with SharePoint. (I tend to prefer this option as it maximizes my scalability/usability of the service—inside and out of SharePoint.) And while this perfect doc may exist, I grew a little impatient with my search and figured I would just put one together. So, hopefully you’ll find this useful.&lt;/p&gt;  &lt;p&gt;That said, this blog will walk you through the following: &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Creation of a WCF service; &lt;/li&gt;    &lt;li&gt;Deployment of the WCF service to IIS 7.0; &lt;/li&gt;    &lt;li&gt;Creation of a SharePoint web part (ASP.NET web part); and &lt;/li&gt;    &lt;li&gt;Modification of the SharePoint web.config. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The core elements of my development environment are as follows: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows Server 2008&lt;/li&gt;    &lt;li&gt;WSS 3/MOSS 2007 SP2&lt;/li&gt;    &lt;li&gt;Visual Studio (VS) 2008 SP1&lt;/li&gt;    &lt;li&gt;VSEWSS 1.3&lt;/li&gt;    &lt;li&gt;IIS 7.0&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Alright, let’s get started!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; &lt;strong&gt;Creating the WCF Service&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;First, open VS 2008. Create a blank solution, as you’re going to add a couple of projects to it. Second, right-click the solution and select Add and then New Project. I have my VS instance optimized for C# and select WCF Service Application. Provide a name and location and click OK—see figure below. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image_20.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="332" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image_thumb_9.png" width="519" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;A number of files are added to the solution. Of specific interest to you should be the IService.cs file and the Service.svc file (and the Service.svc.cs code-behind file). I renamed mine to be a little more intuitive to my example (which will be a simple tax calculator for three states plus federal tax—so essentially calculating net salary for three states)—see figure below. Note that you’ll need to make some amendments in the web.config file to ensure you’ve got the same service and class names in the that file.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image_30.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="177" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image_thumb_14.png" width="239" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The service contract (which will be located in the ISalary.cs file) is coded as below, which defines the one class I’m going to include within this service. The code for the contract is as follows:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System;      &lt;br /&gt;using System.Collections.Generic;       &lt;br /&gt;using System.Linq;       &lt;br /&gt;using System.Runtime.Serialization;       &lt;br /&gt;using System.ServiceModel;       &lt;br /&gt;using System.Text; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;[ServiceContract]      &lt;br /&gt;public interface ITaxCalculator       &lt;br /&gt;{ &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160; [OperationContract]      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; double GetData(double grossSalary, string state); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The actual meat of the salary calculation is as follows, which as per the contract will accept a double and string as parameters—returning a double for use in the service implementation.&amp;#160; You can see in the following code that I’m validating what state is being passed to the service and then setting a state tax level based on that state. I’m then making a calculation and returning the net salary. &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System;      &lt;br /&gt;using System.Collections.Generic;       &lt;br /&gt;using System.Linq;       &lt;br /&gt;using System.Runtime.Serialization;       &lt;br /&gt;using System.ServiceModel;       &lt;br /&gt;using System.Text; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;public class TaxCalculator : ITaxCalculator      &lt;br /&gt;{       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; double netSalary = 0;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; double fedTaxRate = .25;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; double stateTaxRate = 0;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; double totalTax = 0; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160; public double GetData(double grossSalary, string state)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (state == &amp;quot;WA&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; stateTaxRate = .08;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else if (state == &amp;quot;IL&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; stateTaxRate = .05;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else if (state == &amp;quot;CA&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; stateTaxRate = .12;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else if (state == &amp;quot;NY&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; stateTaxRate = .14;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; totalTax = (grossSalary * fedTaxRate) + (grossSalary * stateTaxRate);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; netSalary = grossSalary - totalTax;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return netSalary;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Before you move on to deploying your service, debug your service to make sure there are no errors. Once you’ve got no errors, you can move on to deploying the service. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: One thing I reiterate constantly when I present on SharePoint is testing often. This may mean using tools like Fiddler or just employing defensive testing practices such as debugging after each new amendment to your code. Either way, this is one of the best ways to understand not only what is happening with your code, but also to ensure you understand where things may go awry with your code.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2. Deploying the Service to IIS 7.0&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;With the service code done, the next thing you’ll want to do is deploy the service. This is a fairly simple process and requires you to open IIS 7.0. To do this, click Administrative Tools and select Internet Information Services 7.0. You’ll want to add a new web site, as we will deploy this as an isolated service, so right-click Sites and then select Add Web Site. You’ll then be prompted to add some information for your site. For example, you’ll need a Site name, you’ll need to set an application pool, you’ll need to set the virtual path (which will map to the .svc file we created earlier in this blog—which further references your class/service object), and then you’ll need to assign a port number that is not assigned to 80 (e.g. 774), which is likely your SharePoint server—see figure below. Note that you’ll also want to ensure you’ve got Authentication set properly, so click the Features View tab and select Authentication. Make sure Windows Authentication is enabled. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image_26.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="441" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image_thumb_12.png" width="456" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once you’ve done this, click on the Content tab and you’ll see all of the different files that make up your deployed service in IIS. The figure below shows all of the different files and folders in my service. &lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image_24.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="313" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image_thumb_11.png" width="533" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Note that I have not deployed the service DLL to the GAC; my service is being accessed from within the bin folder within the virtual directory mapping. This is evident from the directives in my Salary.svc file, which reads as follows: &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;%@ ServiceHost Language=&amp;quot;C#&amp;quot; Debug=&amp;quot;true&amp;quot; Service=&amp;quot;SalaryWCFApp.CalcTax&amp;quot; CodeBehind=&amp;quot;Salary.svc.cs&amp;quot; %&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;You could deploy your service DLL to the GAC if you wanted, but then you’d need to have a fully qualified reference in your .svc file that pointed to the GAC-deployed DLL. &lt;/p&gt;  &lt;p&gt;To test run your service, right-click Salary.svc (or whatever your .svc file is called) and select Browse. This will invoke the service. If you’ve deployed correctly and everything is working, you should be prompted with something similar to the below—the invoked service. If your service invokes correctly, you can now move onto creating the SharePoint web part.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image_28.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="401" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image_thumb_13.png" width="564" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;3. Creating the SharePoint Web Part&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;To add the web part project (as mentioned earlier you should have VSEWSS 1.3 installed), right-click the solution and select Add, New Project, select the SharePoint node, and then select the Web Part project template. You’ll need to provide a name for your web part—see figure below. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image_22.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="334" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image_thumb_10.png" width="521" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Note that I typically delete the web part item from the web part project and then re-add the web part as an item and then provide the name I want. This is quirky but it is because the default name of the web part is WebPart1, and I find it quicker and easier to just remove and re-add the web part. I called my new web part TaxCalculatorWP. After creating the project, the following files are created for you.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image_32.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="215" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image_thumb_15.png" width="236" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I added some code into the TaxCalculatorWP.cs file, which is listed below. The gist of this code is fairly straightforward: it represents a UI that comprises some labels, textboxes, and buttons, which will accept some input parameters, call the WCF tax calculation service and then return (and set one of the textbox Text properties with) the net salary (as a double). &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System;     &lt;br /&gt;using System.Runtime.InteropServices;      &lt;br /&gt;using System.Web.UI;      &lt;br /&gt;using System.Web.UI.WebControls;      &lt;br /&gt;using System.Web.UI.WebControls.WebParts;      &lt;br /&gt;using System.Xml.Serialization; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using Microsoft.SharePoint;     &lt;br /&gt;using Microsoft.SharePoint.WebControls;      &lt;br /&gt;using Microsoft.SharePoint.WebPartPages; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;namespace TaxCalculator     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [Guid(&amp;quot;e3783c6e-e74a-4871-8865-72de21de4916&amp;quot;)]      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public class TaxCalculatorWP : System.Web.UI.WebControls.WebParts.WebPart      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; { &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Label lblTitle = new Label(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Label lblGrossSalary = new Label();     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TextBox txtGrossSalary = new TextBox(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Label lblStates = new Label();     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ListBox lstbxStates = new ListBox(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Label lblNetSalary = new Label();     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TextBox txtNetSalary = new TextBox(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Button btnCalcSalary = new Button();     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Button btnClearFields = new Button(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string strState = &amp;quot;&amp;quot;;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; double grossSalary = 0;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; double netSalary = 0; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public TaxCalculatorWP()     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; protected override void CreateChildControls()     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; base.CreateChildControls(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lblTitle.Font.Bold = true;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lblTitle.Font.Size = 14;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lblTitle.Height = 25;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lblTitle.Width = 300;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lblTitle.Text = &amp;quot;Salary Calculator&amp;quot;;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Controls.Add(lblTitle);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Controls.Add(new LiteralControl(&amp;quot;&amp;lt;br&amp;gt;&amp;quot;));      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Controls.Add(new LiteralControl(&amp;quot;&amp;lt;br&amp;gt;&amp;quot;)); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lblGrossSalary.Font.Bold = true;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lblGrossSalary.Height = 25;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lblGrossSalary.Width = 100;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lblGrossSalary.Text = &amp;quot;Grs. Salary:&amp;quot;;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Controls.Add(new LiteralControl(&amp;quot;&amp;#160; &amp;quot;));      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Controls.Add(lblGrossSalary); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; txtGrossSalary.Height = 25;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; txtGrossSalary.Width = 75;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Controls.Add(txtGrossSalary);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Controls.Add(new LiteralControl(&amp;quot;&amp;lt;br&amp;gt;&amp;quot;));      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Controls.Add(new LiteralControl(&amp;quot;&amp;lt;br&amp;gt;&amp;quot;)); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lblStates.Font.Bold = true;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lblStates.Height = 25;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lblStates.Width = 100;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lblStates.Text = &amp;quot;States:&amp;quot;;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Controls.Add(new LiteralControl(&amp;quot;&amp;#160; &amp;quot;));      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Controls.Add(lblStates); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lstbxStates.Items.Add(&amp;quot;WA&amp;quot;);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lstbxStates.Items.Add(&amp;quot;IL&amp;quot;);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lstbxStates.Items.Add(&amp;quot;CA&amp;quot;);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lstbxStates.Items.Add(&amp;quot;NY&amp;quot;);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lstbxStates.Height = 40;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lstbxStates.Width = 150;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Controls.Add(lstbxStates);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Controls.Add(new LiteralControl(&amp;quot;&amp;lt;br&amp;gt;&amp;quot;));      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Controls.Add(new LiteralControl(&amp;quot;&amp;lt;br&amp;gt;&amp;quot;)); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lblNetSalary.Font.Bold = true;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lblNetSalary.Height = 25;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lblNetSalary.Width = 100;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lblNetSalary.Text = &amp;quot;Net Salary:&amp;quot;;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Controls.Add(new LiteralControl(&amp;quot;&amp;#160; &amp;quot;));      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Controls.Add(lblNetSalary); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; txtNetSalary.Height = 25;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; txtNetSalary.Width = 75;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Controls.Add(txtNetSalary);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Controls.Add(new LiteralControl(&amp;quot;&amp;lt;br&amp;gt;&amp;quot;));      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Controls.Add(new LiteralControl(&amp;quot;&amp;lt;br&amp;gt;&amp;quot;)); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; btnCalcSalary.Text = &amp;quot;Calc. Salary&amp;quot;;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; btnCalcSalary.Height = 10;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; btnCalcSalary.Height = 40;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Controls.Add(btnCalcSalary);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Controls.Add(new LiteralControl(&amp;quot;&amp;#160; &amp;quot;)); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; btnClearFields.Text = &amp;quot;Clear Fields&amp;quot;;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; btnClearFields.Height = 10;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; btnClearFields.Height = 40;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Controls.Add(btnClearFields); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; btnCalcSalary.Click += new EventHandler(btnCalcSalary_Click);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; btnClearFields.Click += new EventHandler(btnClearFields_Click); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; void btnClearFields_Click(object sender, EventArgs e)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; txtGrossSalary.Text = &amp;quot;&amp;quot;;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; void btnCalcSalary_Click(object sender, EventArgs e)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strState = lstbxStates.Text;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; grossSalary = Convert.ToDouble(txtGrossSalary.Text); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TaxCalculator.MyTaxCalcWCF.SalaryClient proxy = new TaxCalculator.MyTaxCalcWCF.SalaryClient();     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; netSalary = proxy.GetData(grossSalary, strState);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; txtNetSalary.Text = &amp;quot;$&amp;quot; + netSalary.ToString();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; proxy.Close();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;If you want to have an intuitive title and description for your web part, then you’ll need to edit the .webpart file, which you can see I’ve done as per the below. You will see this when you browse for the deployed web part in the SharePoint Web part Gallery. &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;      &lt;br /&gt;&amp;lt;webParts&amp;gt;       &lt;br /&gt;&amp;#160; &amp;lt;webPart xmlns=&amp;quot;&lt;/font&gt;&lt;a href="http://schemas.microsoft.com/WebPart/v3&amp;quot;"&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;http://schemas.microsoft.com/WebPart/v3&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;metaData&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;!--       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; The following Guid is used as a reference to the web part class,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; and it will be automatically replaced with actual type name at deployment time.       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; --&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;type name=&amp;quot;e3783c6e-e74a-4871-8865-72de21de4916&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;importErrorMessage&amp;gt;Cannot import TaxCalculatorWP Web Part.&amp;lt;/importErrorMessage&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/metaData&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;data&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;properties&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;strong&gt;&amp;lt;property name=&amp;quot;Title&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;TaxCalculatorWP Web Part&amp;lt;/property&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;property name=&amp;quot;Description&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;Web Part that calculates tax.&amp;lt;/property&amp;gt;         &lt;br /&gt;&lt;/strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/properties&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/data&amp;gt;       &lt;br /&gt;&amp;#160; &amp;lt;/webPart&amp;gt;       &lt;br /&gt;&amp;lt;/webParts&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;You can debug your web part before deploying if you want to by clicking F5. Just remember to click Yes on the Script Debugging Disabled dialog, as per the below figure—which you can opt out of as well if you choose. When you deploy, VS will attach to w3wp and then you can deploy and test the web part. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image12.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="190" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image12_thumb.png" width="463" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;At this point, then, you should have two projects in your solution—similar to the below figure. You can now build and deploy your web part to your local SharePoint server. To do this, right-click the web part project and select Deploy. You’ll note in the VS output window that a number of actions are invoked (e.g. checking for conflicts, resetting IIS, etc.). &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image_18.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="337" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image_thumb_8.png" width="229" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The one thing I like about VSEWSS 1.3 is that I can amend and re-deploy the web parts and each time VS finds and prompts the resolution of conflicts—as per the figure below. This makes it easy for me to test and redeploy my web parts. For example, I made a number of enhancements when creating my ASP.NET UI, and this feature came in handy when I was doing this.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image_12.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="266" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image_thumb_5.png" width="491" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Note that you might get an error on deployment if you don’t remove the pkg directory. The error will read something like this: “Value does not fall within expected range.” To get past this error, remove the pkg directory and redeploy. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image_34.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="92" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image_thumb_16.png" width="179" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;At this point, you should have created, tested and deployed your service and also created, tested and deployed your SharePoint web part. We’re now going to move on to the final stage of the blog: editing the web.config file. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;4. Editing the Web.config File&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Now this is where things get interesting. Because you’ve deployed the service, and you’ve deployed the web part but there is this little thing called the web.config (your SharePoint server web.config that is) that needs to contain some information for the service to actually run. If you don’t believe me, don’t add anything to the web.config file and then watch how you’ll never get past the postback of the web part. Okay, just take my word for it. &lt;/p&gt;  &lt;p&gt;For the above service to work, I added a number of things to the system.servicemodel element in SharePoint’s web.config file. Specifically, I added an entry for the serviceHostingEnvironment with aspNetCompatabilityEnabled set to true, I added the actual service (SalaryWCFApp.CalcTax) along with a number of properties, I added the behavior, I added the bindings, and then I lastly added a client configuration element as well. Note that this information exists; it just lives within the web.config file of your service and the app.config file of your web part. For example, the information for the client element lives in your web part app.config file. Note that if you add an entry for behavior and don’t add a separate entry for it, SharePoint will complain. And to be frank, figuring out what needs to go into the web.config file is probably the trickiest part of this whole blog—and the part that is, in my humble opinion, under-documented. &lt;/p&gt;  &lt;p&gt;To edit your SharePoint server web.config navigate to your SharePoint’s root directory (e.g. in my case this is c:\Inetpub\wwwroot\wss\VirtualDirectories\80) and then right-click the web.config and select Edit in Visual Studio 2008. In your web.config, you’ll want to make similar edits that I have in mine below. Note you also may want to add different elements as well. &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;…&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;system.serviceModel&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;serviceHostingEnvironment aspNetCompatibilityEnabled=&amp;quot;true&amp;quot; /&amp;gt;&amp;#160; &lt;br /&gt;&amp;lt;services&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160; &amp;lt;service name=&amp;quot;SalaryWCFApp.CalcTax&amp;quot;&amp;#160; behaviorConfiguration=&amp;quot;SalaryWCFApp.Service1Behavior&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;endpoint address=&amp;quot;&lt;/font&gt;&lt;a href="http://stefoxdemo.redmond.corp.microsoft.com:774/Salary.svc&amp;quot;"&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;http://stefoxdemo.redmond.corp.microsoft.com:774/Salary.svc&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt; binding=&amp;quot;wsHttpBinding&amp;quot; bindingConfiguration=&amp;quot;NtlmBinding&amp;quot; contract=&amp;quot;SalaryWCFApp.ISalary&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;identity&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;dns value=&amp;quot;localhost&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/identity&amp;gt;       &lt;br /&gt;&amp;#160; &amp;lt;/endpoint&amp;gt;       &lt;br /&gt;&amp;lt;/service&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;…&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/services&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;…&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;behavior name=&amp;quot;SalaryWCFApp.Service1Behavior&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;serviceMetadata httpGetEnabled=&amp;quot;true&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;!-- To receive exception details in faults for debugging purposes, set the value below to true.&amp;#160; Set to false before deployment to avoid disclosing exception information --&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;serviceDebug includeExceptionDetailInFaults=&amp;quot;false&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/behavior&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;…&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;bindings&amp;gt;&amp;#160; &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;wsHttpBinding&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;binding name=&amp;quot;WSHttpBinding_ISalary&amp;quot; closeTimeout=&amp;quot;00:01:00&amp;quot; openTimeout=&amp;quot;00:01:00&amp;quot; receiveTimeout=&amp;quot;00:10:00&amp;quot; sendTimeout=&amp;quot;00:01:00&amp;quot; bypassProxyOnLocal=&amp;quot;false&amp;quot; transactionFlow=&amp;quot;false&amp;quot; hostNameComparisonMode=&amp;quot;StrongWildcard&amp;quot; maxBufferPoolSize=&amp;quot;524288&amp;quot; maxReceivedMessageSize=&amp;quot;65536&amp;quot; messageEncoding=&amp;quot;Text&amp;quot; textEncoding=&amp;quot;utf-8&amp;quot; useDefaultWebProxy=&amp;quot;true&amp;quot; allowCookies=&amp;quot;false&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;readerQuotas maxDepth=&amp;quot;32&amp;quot; maxStringContentLength=&amp;quot;8192&amp;quot; maxArrayLength=&amp;quot;16384&amp;quot; maxBytesPerRead=&amp;quot;4096&amp;quot; maxNameTableCharCount=&amp;quot;16384&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;reliableSession ordered=&amp;quot;true&amp;quot; inactivityTimeout=&amp;quot;00:10:00&amp;quot; enabled=&amp;quot;false&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;security mode=&amp;quot;Message&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;transport clientCredentialType=&amp;quot;Windows&amp;quot; proxyCredentialType=&amp;quot;None&amp;quot; realm=&amp;quot;&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;message clientCredentialType=&amp;quot;Windows&amp;quot; negotiateServiceCredential=&amp;quot;true&amp;quot; algorithmSuite=&amp;quot;Default&amp;quot; establishSecurityContext=&amp;quot;true&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/security&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/binding&amp;gt;       &lt;br /&gt;&amp;#160; &amp;lt;/wsHttpBinding&amp;gt;       &lt;br /&gt;&amp;lt;/bindings&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;…&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;client&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;endpoint address=&amp;quot;&lt;/font&gt;&lt;a href="http://localhost:774/Salary.svc&amp;quot;"&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;http://localhost:774/Salary.svc&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt; binding=&amp;quot;wsHttpBinding&amp;quot; bindingConfiguration=&amp;quot;WSHttpBinding_ISalary&amp;quot; contract=&amp;quot;MyTaxCalcWCF.ISalary&amp;quot; name=&amp;quot;WSHttpBinding_ISalary&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;identity&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;dns value=&amp;quot;localhost&amp;quot; /&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/identity&amp;gt;       &lt;br /&gt;&amp;#160; &amp;lt;/endpoint&amp;gt;       &lt;br /&gt;&amp;lt;/client&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;…&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/system.serviceModel&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;…&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;So, with all of the above, you should have a fully functional ASP.NET web part that is deployed to SharePoint that you can use to calculate the net salary of a user entering some data. You can test out your salary calculator by adding the web part to a SharePoint site from your Web part Gallery. The result would likely look like the web part in the figure below: you enter in some numbers for the gross salary, select a state, and then click Calc. Salary. And shazam, SharePoint calls the WCF service and calculates the net salary. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image10.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="214" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WCFServicesandSharePoint_BEA9/image10_thumb.png" width="344" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now while I know you’re trying to contain your enthusiasm, look beyond the simplicity of the app to the broader ‘pattern.’ This pattern (the integration of an ASP.NET web part with SharePoint and a WCF service deployed to IIS) can be reused across your other web parts or SharePoint applications. &lt;/p&gt;  &lt;p&gt;Happy coding!&lt;/p&gt;  &lt;p&gt;Steve &lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:3d8927aa-fd43-4a02-9e6c-445def33bab0" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MSDN" rel="tag"&gt;MSDN&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WCF" rel="tag"&gt;WCF&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SharePoint+and+WCF" rel="tag"&gt;SharePoint and WCF&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SharePoint+web+part+development" rel="tag"&gt;SharePoint web part development&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9824169" width="1" height="1"&gt;</content><author><name>Steve Fox</name><uri>http://blogs.msdn.com/members/Steve+Fox.aspx</uri></author></entry></feed>