<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://bloggingabout.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tag 'Architecture'</title><link>http://bloggingabout.net/search/SearchResults.aspx?a=1&amp;o=DateDescending&amp;tag=Architecture&amp;orTags=0</link><description>Search results matching tag 'Architecture'</description><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Fast Search for SharePoint problems - simplified architecture diagram</title><link>http://bloggingabout.net/blogs/bas/archive/2011/08/09/fast-search-for-sharepoint-installation-problems-simplified-architecture-diagram.aspx</link><pubDate>Tue, 09 Aug 2011 21:54:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:543102</guid><dc:creator>Bas</dc:creator><description>&lt;p&gt;Recently I had a few &lt;span class="short_text" lang="en" id="result_box"&gt;&lt;span class="hps"&gt;colleagues (and myself) who&amp;nbsp;tried to install&amp;nbsp;FAST search for SharePoint on their development workstation. Despite the&lt;a href="http://technet.microsoft.com/en-us/library/ff381243.aspx" title="Fast installation and configuration guide on MSDN"&gt; well written installation guidelines on MSDN&lt;/a&gt;, they had several problems, and sadly enough, they all faced different problems. These problems varied from not able to crawl the content to not being able to query the indexed content. As most of the colleagues weren&amp;#39;t too familiar with Fast (and SharePoint search in general), I decided to create a small architecture diagram of the SharePoint 2010 Search Service Applications, Fast Search for SharePoint and (some of)&amp;nbsp;their junction points. These junction points are displayed in the image below. To simplify the diagram, some items have been removed, the search query proxy is one example. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/bas/1537.Fast_2D00_diagram.png"&gt;&lt;img src="http://bloggingabout.net/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bas/1537.Fast_2D00_diagram.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;&lt;/span&gt;&lt;/span&gt;The diagram helped me and my colleagues to&amp;nbsp;pinpoint the problems and I hope it will help you in the future with pinpointing problems (well, I hope you wont have any problems at all, but hey, it&amp;#39;s Fast ;)).&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;This post just covers a small subset of problems, but I think that the majority of most common problems are covered here. Whenever you think that a certain common problem is missing in here, please contact me, I will add it as soon as possible. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;Use the following log/event locations to pinpoint problems:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;c:\fastsearch\var\log&lt;/span&gt;&lt;/span&gt; 
&lt;ul&gt;
&lt;li&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;contains a &lt;em&gt;lot &lt;/em&gt;of folders with logging. Whenever problems arise, I check the folder &amp;quot;syslog&amp;quot; first&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;the Eventlog - increase the loglevels in the sharepoint diagnostic logging to verbose for extensive logging&lt;/span&gt;&lt;/span&gt; 
&lt;ul&gt;
&lt;li&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;Application log&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;Fast Search&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;Fast Search Farm&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;SharePoint diagnostic logging - increase the log level to verbose&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;The IIS authentication logging&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;use nctrl status to check the status of your Fast installation&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;Some basic guidance:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;Whenever no log errors appear on the Fast Search farm (event log as well as the \var\log), the problem lies within the SharePoint configuration&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;Whenever no errors appear on the Fast Search application, but errors do appear on the Fast IIS log, it&amp;#39;s most likely&amp;nbsp;a permission problem. My guess: database and/or &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;Whenever errors appear in Fast, you may not have SharePoint or permission problems, but a wrongly configured Fast environment. I didn&amp;#39;t write about these errors below, but hostname configurations appeared to&amp;nbsp;cause problems a lot.&lt;/span&gt;&lt;/span&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;As seen in the diagram, there are several&amp;nbsp;junction points that can cause problems when not configured correctly:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;Crawling SharePoint content&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;Push&amp;nbsp;content into Fast&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;Communicatin with the Search Query and Settins Service&lt;/span&gt;&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;Accessing the admin service the&amp;nbsp;search query and site settings service&lt;/span&gt;&lt;/span&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Configure Fast via PowerShell &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I have seen problems on all of these levels and I will try to (shortly) describe the possible problems, their symptoms and (a link to) their solution. A small disclaimer is in place: this is by no means a full overview of possible problems, but it should help in troubleshooting whenever problems arise.&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;1 -&amp;nbsp;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;Crawling SharePoint content (1)&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;One of the most common problems are the problems with crawling content. Make sure that your default content access account has read permissions on the sharepoint sites that need to be crawled. Normally, this is handled by SharePoint. Possible error message:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;Access is denied. Verify that either the Default Content Access Accouont has access to this repository, or add a crawl rule to crawl this repository. If the repository being crawled is a SharePoint repository, verify that the account you are using has &amp;quot;Full Read&amp;quot; permissions on the SharePoint Web Application being crawled.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;2 - &lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;Push&amp;nbsp;content into Fast&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; (2)&lt;/h3&gt;
&lt;p&gt;After installing fast, pushing content into Fast can be a problem too. Several problems are possible here:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;-&amp;nbsp;SSL communication between the Fast Content Service and the Content Distributor is not configured correctly.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Visit &lt;a href="http://technet.microsoft.com/en-us/library/ff381261.aspx#BKMK_Configure_ssl_enabled_communication"&gt;technet &lt;/a&gt;on how to configure SSL communication. Please make sure that the account used in &amp;quot;&lt;strong&gt;.\SecureFASTSearchConnector.ps1 &amp;ndash;certPath &amp;quot;path of the certificate\certificatename.pfx&amp;quot; &amp;ndash;ssaName &amp;quot;name of your content SSA&amp;quot; &amp;ndash;username &amp;ldquo;domain\username&amp;rdquo; &lt;/strong&gt;is the account that runs the osearch14. In the Administration &lt;em&gt;Services&lt;/em&gt; window this service is called &amp;quot;&lt;em&gt;SharePoint Server Search 14&lt;/em&gt;&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;-&amp;nbsp;Permissions&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;After checking the Fast Content Service installation with &amp;quot;docpush -csp c:\testfile.txt&amp;quot; several errors can appear:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;sp Reported error with &lt;/em&gt;&lt;a href="http://cohowinery.com/c:/temp/bob.txt"&gt;&lt;span style="color:#0066dd;"&gt;&lt;em&gt;http://cohowinery.com/c:\temp\bob.txt&lt;/em&gt;&lt;/span&gt;&lt;/a&gt;&lt;em&gt;: processing:N/A:ProcessorDeploymentException: For pipeline &amp;#39;Office14 (webcluster)&amp;#39;, creating processor CompanyExtractorInclusionAny failed: ConfigurationError: CompanyExtractorInclusionAny: Failed to access or parse configuration file &amp;#39;etc/resources/matching/configuration.companyextractor.inclusion.any.xml&amp;#39;. &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This error can have several causes. Most likely is that the user doesn&amp;#39;t have isn&amp;#39;t member of the FastSearchAdministrators group. Another case I have encountered was that the account was member of that group, but for some reason did not have read access to the directory. Changing permissions fixed this issue for me, &lt;em&gt;but this not recommended to do on a production server!! &lt;/em&gt;The message about &lt;a href="http://cohowinery.com/"&gt;http://cohowinery.com/&lt;/a&gt; is not misconfigured on your system! It&amp;#39;s a&amp;nbsp;fictional company, same like the more known virtual companies contoso and wingtip toys&lt;/p&gt;
&lt;p&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;- &lt;strong&gt;&lt;em&gt;I see dead crawlers&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;Another issue that can arise when Fast is installed on the same server as your SharePoint installation (not recommended, only for dev purposes!!), is that the enterprise crawler died for some reason. This can be checked with nctrl status. I described the cause and the solution &lt;a href="http://bloggingabout.net/blogs/bas/archive/2011/05/19/fast-for-sharepoint-2010-enterprise-crawler-is-not-working.aspx"&gt;here&lt;/a&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;3 - Communication with the Search Query and Settings Service (3)&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;Accessing Fast from your SiteCollection can cause several problems:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;&lt;strong&gt;&lt;em&gt;- No search results are returned&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;When a query is executed and no results are returned, the most likely issue is a permission issue: the account that you logged in with, doesn&amp;#39;t have any permissions to view the indexed content. As the returned results are security trimmed by the query service, it&amp;#39;s possible that the returned set contains 0 items. This happened to me when I created an anonymous Fast Search Center, whereas all my other indexed site collections weren&amp;#39;t anonymously accessible. Another issue can be that (and this happens a lot after a fresh dev-installation!) the test site that is indexed, has content that hasn&amp;#39;t been published yet. That content isn&amp;#39;t indexed and thus, not returned.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;&lt;strong&gt;&lt;em&gt;- Internal Server error exception (when querying)&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;The application pool of the Search Query and settings service is not running. Check your IIS Manager to make sure that your application pool is up and that your website is running. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;&lt;em&gt;&lt;strong&gt;- &lt;span id="ctl00_PlaceHolderMain_LabelMessage"&gt;Unexpected error occurred while communicating with Administration Service&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt; &lt;strong&gt;&lt;em&gt;when&amp;nbsp;accessing one of the following site settings menu entries&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;visual best bets&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;context information&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;promotion/demotion (ranking)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;When this happens, please check the problems mentioned in paragraph&amp;nbsp;5 and 6 &amp;nbsp;too. As these functions communicate with the Fast Administration service, it&amp;#39;s likely that these problems occur, while the query component works fine. It&amp;#39;s most likely a permissions issue, where the Search Query and settings service (mentioned in paragraph 5), doesn&amp;#39;t have the right administration account configured.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;4&amp;nbsp;- &lt;/span&gt;&lt;/span&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;Accessing the admin service through the&amp;nbsp;search query and site settings service&lt;/span&gt;&lt;/span&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;(5)&lt;/h3&gt;
&lt;p&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;em&gt;-&amp;nbsp;&lt;span id="ctl00_PlaceHolderMain_LabelMessage"&gt;Unexpected error occurred while communicating with Administration Service&lt;/span&gt; &lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This error mainly has&amp;nbsp;3 rootcauses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Fast Administration services is not configured correctly (e.g. the wrong location is configured in the Fast Query service application)&lt;/li&gt;
&lt;li&gt;The Fast Administration application pool is not running&lt;/li&gt;
&lt;li&gt;Permissions ;). Make sure that that the right Fast Admin account is configured in the Fast Query service application.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;5&amp;nbsp;- Fast via PowerShell (7)&lt;/h2&gt;
&lt;p&gt;Powershell can show some initial &amp;quot;weird&amp;quot; behaviour. Whenever the Fast WCF-services aren&amp;#39;t running, all of the powershell commands will bug out with an error message. Get-FastSearchContentCollection returns: &lt;/p&gt;
&lt;p&gt;&lt;em&gt;Get-FastSearchContentCollection : Failed to communicate with the WCF service.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Whenever the services are back up, this message will disappear and the right output is returned. But sometimes some Powershell commands do work, and some won&amp;#39;t. This is definately a permissions issue, where the executing account isn&amp;#39;t member of the FastSearchAdministrators group. It&amp;#39;s comparable to the missing/wrong permissions for the fast query service application.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/bas/6012.Fast_2D00_Powershell.png"&gt;&lt;img src="http://bloggingabout.net/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/bas/6012.Fast_2D00_Powershell.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&lt;span class="short_text" lang="en"&gt;&lt;span class="hps"&gt;&lt;/span&gt;&lt;/span&gt;Summary&lt;/h3&gt;
&lt;p&gt;The majority of problems arise whenever permissions are not set correctly. It&amp;#39;s&amp;nbsp;important that the Fast Admin account&amp;nbsp;that is configured in the Fast Query Service, is indeed the &lt;em&gt;right&lt;/em&gt;&amp;nbsp;account, is member of the FastSearchAdministrators group and&amp;nbsp;has access the the FastAdmin database. For dev-purposes you can choose the make use of just one main account to run fast, run the app pools and use as the admin account, but this is no recommended approach for production environments. That is why I advise to always use least privilege installations, even on your dev-environments!&lt;/p&gt;</description></item><item><title>Business Rules Engine: Samples</title><link>http://bloggingabout.net/blogs/chilberto/archive/2009/11/21/business-rules-engine-samples.aspx</link><pubDate>Sat, 21 Nov 2009 07:18:55 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:482490</guid><dc:creator>chilberto</dc:creator><description>&lt;p&gt;I recently presented at the &lt;a href="http://www.acsug.co.nz/Meetings/Practical-exploration-of-the-Business-Rules-Engine.aspx" target="_blank"&gt;Auckland Connected Systems User Group&lt;/a&gt;.&amp;#160; In order to prepare, I created several examples of methods of using the rules engine.&amp;#160; &lt;/p&gt;  &lt;p&gt;The sample solution is &lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/chilberto.BRE/3286.ACSUG.BusinessRulesEngine.zip"&gt;here&lt;/a&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;Included in the sample solution are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Various Vocabulary definitions including using a function in XPath Field (TotalCostOfOrder)&lt;/li&gt;    &lt;li&gt;Various Rules definitions including retrieving from a database, using classes, adding XML Nodes to a document, forward chaining and priority&lt;/li&gt;    &lt;li&gt;Examples implementations of IFactRetriever&lt;/li&gt;    &lt;li&gt;BizTalk Application showing calling rules with both XML Document and objects&lt;/li&gt;    &lt;li&gt;BizTalk Application showing an example of using the BRE for routing&lt;/li&gt;    &lt;li&gt;A WCF Service and Client including an example tracking interceptor&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The WCF Service was my focus of the talk and what I wanted to discuss most of all.&amp;#160; I have found using the BRE very beneficial and now that I have spent time understanding it, I believe it helps to make more maintainable solutions by separating the business rules from the application framework.&amp;#160; This allows for the business logic to more accessible and readable than embedded in BizTalk expressions, maps or custom classes.&amp;#160; &lt;/p&gt;  &lt;p&gt;Because of this I wanted to illustrate how a WCF service could be strongly typed but not require costly rebuilds when the facts or rules change.&amp;#160; Though I believe strongly in SOA, I am not a fan of the un-typed XML in/XML out design.&amp;#160; To achieve this, I took advantage of the KnownTypes attribute to allow WCF to serialize the payloads and to present metadata.&amp;#160; In the example service, the specific classes are retrieved from the web.config, but there is not any reason why this could not have been retrieved from a more dynamic resource.&lt;/p&gt;  &lt;p&gt;Cheers and feedback appreciated.&lt;/p&gt;</description></item><item><title>The foundations of Service Oriented architecting</title><link>http://bloggingabout.net/blogs/carlo/archive/2009/01/05/the-foundations-of-architecting-service-orientation.aspx</link><pubDate>Mon, 05 Jan 2009 20:31:06 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:479370</guid><dc:creator>Carlo Poli</dc:creator><description>&lt;p&gt;A lot has been said about the foundations of Service Orientation. But still, way to often I see people deciding to use SOAP/XML and thinking they are doing Service Orientation. You might recognize the following examples I see as getting Service Orientation wrong:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Services are very technically oriented: service-designers know they should do something on business alignment, but say that the business doesn’t get it and using web service standards is the best we can. &lt;/li&gt;    &lt;li&gt;Services are point-to-point interfaces: ‘services’ are designed on the fact that some information needs to go from system A to system B and therefore a service needs to be created. They then call the service something like the InterfaceInformationService or the SetSomeDataService. Also recognizable by the fact that they always have one operation. &lt;/li&gt;    &lt;li&gt;Services with little responsibility: services are designed around one function and are therefore responsible for only a small bit of data. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I think that, when you talk about architecting Service Oriented solutions, the architecting part is the hardest part. There’s nothing special about that. It’s just decomposing systems into subsystems with clear coherent responsibilities and logical interfaces. But the decomposition is at a higher, abstracter level, which makes it harder. When decomposing applications, you assign responsibilities to concrete components. When decomposing systems, you assign responsibilities to abstract services. But still you need to be concrete and accurate about the responsibility of the service.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Clearly defining the responsibility of the service is the best way to get a service contract right.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Imagine you are designing an Order Management service (OM) in an environment where there is an Customer Management service (CM) available. Now you have to decide whether your OM knows the CM. Whether you want that is based on the way you assign responsibilities. Now let’s say that it’s the CM’s responsibility to manage a customers credit rating. Your options:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;If you make the OM responsible for validating the customers credit rating before accepting an order, your OM will need to know the CM. &lt;/li&gt;    &lt;li&gt;You could also decide that it’s the service consumers responsibility to perform a credit check (the service consumer could very well be a process manager) and the OM doesn’t need to know the CM. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The first option is more strict. There is now way to create an order if the customer doesn’t have a required credit rating. The second option is more flexible, the OM can even handle orders for customers unknown to the CM (imagine merger scenarios). I think that no one option is better than the other, it depends on where you assign responsibilities and that is driven by architecting requirements.&lt;/p&gt;  &lt;p&gt;More generally I think that in any service interaction pattern there are three main parties:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The service consumer. The service consumer knows the service provider. It knows it’s contract, it’s policy, it’s endpoint location. Ideally, the service provider doesn’t know the consumer. &lt;/li&gt;    &lt;li&gt;The service provider. The service provider defines the contract and provides the implementation. It’s implementation might (and often will) include a datastore. &lt;/li&gt;    &lt;li&gt;Other services. These services are used by the service provider to delegate work that’s necessary to realize the responsibility of the service. The service provider plays the role of service consumer to these services. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Deciding on the interacting pattern between the parties is the key to good service contract design. So far, this looks pretty straightforward, isn’t it? Well, it’s often harder then it looks. It’s easier to directly contact&amp;#160; a service to get some work done and if your not careful on that, soon you get a spaghetti of communication services. In following posts I dive deeper into the subject “Deciding on the contract”.&lt;/p&gt;  &lt;p&gt;I really value any feedback you have on this topic. I hope it sparks some discussion. &lt;/p&gt;</description></item><item><title>Restarting my blog</title><link>http://bloggingabout.net/blogs/carlo/archive/2009/01/01/restarting-my-blog.aspx</link><pubDate>Thu, 01 Jan 2009 20:10:11 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:479068</guid><dc:creator>Carlo Poli</dc:creator><description>&lt;p&gt;I haven’t been blogging for over 2,5 years (except for one off topic post). This was partly because I didn’t bother, but the main reason was that I didn’t have a goal, a story I wanted to tell the world. I’ve been doing a lot of stuff around integration and SOA/BPM, ranging from guiding BizTalk development to developing an enterprise integration strategy.&lt;/p&gt;  &lt;p&gt;2008 to me was the year I dived into the theory of architecting and architecture on one side and understanding the core foundations of Service Orientation and Business Process Management on the other side. &lt;/p&gt;  &lt;p&gt;On the theory of architecting I was greatly inspired by the work done by the &lt;a href="http://www.sei.cmu.edu/"&gt;Software Engineering Institute&lt;/a&gt;. I dived into &lt;a href="http://www.amazon.com/Software-Architecture-Practice-2nd-Engineering/dp/0321154959/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1230838685&amp;amp;sr=1-1"&gt;Software Architecture in Practice (2nd Edition)&lt;/a&gt; and was lucky to receive an eight-day training from the writers through Logica, my employer.&lt;/p&gt;  &lt;p&gt;On SOA I was greatly inspired by the work done by &lt;a href="http://www.whatissoa.com/"&gt;Thomas Erl&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;These sources gave me a lot of background on the complex, and still evolving, playground of the Integration Architect.&lt;/p&gt;  &lt;p&gt;For 2009, I’ll take up the next challenge, bringing all this theory into practice. Now, I do think that I already bring a lot of the theory in practice. In my day to day job, I work in an environment where the integration we do is greatly driven (and constrained) by existing systems, but with a vision of having a Service Oriented environment in the long run.&lt;/p&gt;  &lt;p&gt;In the past year I’ve learned a lot on what the real key features of integration architectures are and what kind of decisions are important to make steps toward Service Orientation.&lt;/p&gt;  &lt;p&gt;My goal for this blog is sharing my view on these topics with the world, sparking some discussion. I already have some stuff to talk about, so I guess in the short run I will sound like a teacher telling his story, In the long run I see this blog more as the diary of a tourist touring an environment that is only roughly explored and documented.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;As a side note, I don’t write today as a result of some new year blues with big new intentions. It’s more the holiday season with a lot of days off that allowed me to think about what I want to achieve. But still it is a good day to restart a blog ;-).&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Windows Azure</title><link>http://bloggingabout.net/blogs/chilberto/archive/2008/10/27/windows-azure.aspx</link><pubDate>Mon, 27 Oct 2008 17:49:32 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:476247</guid><dc:creator>chilberto</dc:creator><description>&lt;p&gt;At the PDC, Windows Azure was announced as the Microsoft platform for hosting services in the cloud.&amp;nbsp; Similar to &lt;a href="http://aws.amazon.com/"&gt;Amazon&amp;#39;s cloud services&lt;/a&gt;, Windows Azure will provide a mechanism for hosting solutions in the cloud.&amp;nbsp; In other words, hosted in Microsoft data centers.&lt;/p&gt; &lt;p&gt;Very interesting.&amp;nbsp; Looks like a SOA has just gained a new perspective: on-premise services and cloud services.&amp;nbsp; Very powerful, and as it affects me, lots of work coming into the integration space.&amp;nbsp;&amp;nbsp; &lt;/p&gt;</description></item><item><title>The Myth of Stored Procedures Preference</title><link>http://bloggingabout.net/blogs/adelkhalil/archive/2008/01/05/the-myth-of-stored-procedures-preference.aspx</link><pubDate>Sat, 05 Jan 2008 22:16:28 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:453656</guid><dc:creator>Adel Khalil</dc:creator><description>&lt;p&gt;When looking to the Stored Proscedures debate, there is always those three factors you should measure by.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Productivity&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;- Span code base over multiple staging environments is a pain and harder to maintain.&lt;/p&gt; &lt;p&gt;- Versioning sp code is way harder than versioning application code.&lt;/p&gt; &lt;p&gt;- Minor change to the design require changing in both the SPs and the DAL code.&lt;/p&gt; &lt;p&gt;- Todays IDEs are more advanced than most of the RDBMS offers, implementing on IDEs is obviously preferable.&lt;/p&gt; &lt;p&gt;- Switching between two seprate world to implement single method is always pain.&lt;/p&gt; &lt;p&gt;- It&amp;#39;s impossible to cover every single scenario and write SP for it, which will lead to write these SP as you go, huge consistency problem.&lt;/p&gt; &lt;p&gt;- There is no way to only update single param in the Update method using SPs as there isn&amp;#39;t optional parameters, on every update you need to supply full param collection.&lt;/p&gt; &lt;p&gt;- SPs are not portable if you want to develop application that run over multiple DBMS you will be writing SPs for each DBMS, standard SQL is portable.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;- Big myth over here, using SPs not guarante best security practice and certinly dosn&amp;#39;t mean that your application is SQL Injection proof you can write code like this&lt;/p&gt; &lt;p&gt;string s = &amp;quot;EXEC sp_GetCustomerByEmail &amp;#39;&amp;quot; + txtEmailAddress.Text + &amp;quot;&amp;#39;&amp;quot;;&lt;/p&gt; &lt;p&gt;and you will be using SP and still open to all kind of SQL Injection.&lt;/p&gt; &lt;p&gt;- Another myth regarding security is that if you are using Ad-hoc queries you *most likely* grand permissions for CRUD operations for your application user on the database, no you are not, that&amp;#39;s why Views are invented.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;often when SPs vs. Ad-hoc queries debate intoduced the performance card played, SPs advocates says SPs are pre-compiled which is not let met quate like &lt;a href="http://weblogs.asp.net/fbouma/archive/2003/11/18/38178.aspx" target="_blank"&gt;Frans&lt;/a&gt; did from SQL Server Books Online&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;&lt;font color="#626262"&gt;SQL Server 2000 and SQL Server version 7.0 incorporate a number of changes to statement processing that extend many of the performance benefits of stored procedures to all SQL statements. SQL Server 2000 and SQL Server 7.0 do not save a partially compiled plan for stored procedures when they are created. A stored procedure is compiled at execution time, like any other Transact-SQL statement. SQL Server 2000 and SQL Server 7.0 retain execution plans for all SQL statements in the procedure cache, not just stored procedure execution plans.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;So with no pre-compilation and caching for both SPs and SQL statments there is no advantage for SPs here, in some other databases the SPs compiled into C or C++ but this isn&amp;#39;t the case in SQL Server 7.0/2000.&lt;/p&gt; &lt;p&gt;I have introuduced my view on the SP vs. Dynamic SQL i don&amp;#39;t see any benfit of SPs over the huge amount of productivity, performance that you will gain with dynamic SQL, the only benfit in peformance you will get it when using Managed SPs (SQL Server 2005) but for 0.7/2000 SPs isn&amp;#39;t the right choice for most of the scenarios.&lt;/p&gt; &lt;p&gt;Read more (diverse views):&lt;/p&gt; &lt;p&gt;- Frans Bouma&amp;#39;s &lt;a href="http://weblogs.asp.net/fbouma/archive/2003/11/18/38178.aspx"&gt;Stored procedures are bad, m&amp;#39;kay?&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- Jeff Atwood&amp;#39;s &lt;a href="http://www.codinghorror.com/blog/archives/000292.html" target="_blank"&gt;Stored Procs vs. Ad-hoc&lt;/a&gt; , &lt;a href="http://www.codinghorror.com/blog/archives/000275.html" target="_blank"&gt;Give me parametrized SQL, or give me death&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- Eric Wise&amp;#39;s &lt;a target="_blank"&gt;The Pragmatic Adhoc SQL vs Stored Procedures Discussion&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- Rob Howard&amp;#39;s &lt;a href="http://weblogs.asp.net/rhoward/archive/2003/11/17/38095.aspx" target="_blank"&gt;Don&amp;#39;t use stored procedures yet? Must be suffering from NIHS (Not Invented Here Syndrome)&lt;/a&gt;&lt;/p&gt; &lt;p&gt;- Jeremy D. Miller&amp;#39;s &lt;a href="http://codebetter.com/blogs/jeremy.miller/archive/2006/05/25/145450.aspx" target="_blank"&gt;Why I do not use Stored Procedures&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Security Tip</title><link>http://bloggingabout.net/blogs/adelkhalil/archive/2007/07/17/security-tip.aspx</link><pubDate>Tue, 17 Jul 2007 11:58:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:317153</guid><dc:creator>Adel Khalil</dc:creator><description>&lt;p&gt;Hi folks, When you design your sophisticated &amp;quot;Change Password&amp;quot;&amp;nbsp;feature in your next application&amp;nbsp;make sure to retain the old password so the user can&amp;#39;t re-choose them anymore..&lt;/p&gt;
&lt;p&gt;You can keep a history of passwords and don&amp;#39;t allow to use them again.&lt;/p&gt;
&lt;p&gt;&lt;u&gt;[UPDATE]&lt;/u&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The reason you may wanted to do this..if your password base compromised you wanted to change the password for your clients to something tempporary and also prevent them from changing this back to the old compromized one, however you also will benfit from this stratigy to force users to never having the same password they already changed - why they change their password on the first place - to be using it again... &lt;/p&gt;&lt;/blockquote&gt;</description></item><item><title>Paranoid Programmers</title><link>http://bloggingabout.net/blogs/olaf/archive/2007/06/16/paranoid-programmers.aspx</link><pubDate>Sat, 16 Jun 2007 13:11:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:255298</guid><dc:creator>Olaf Conijn</dc:creator><description>&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Most people should be familiar with the&amp;nbsp;term “defensive programming”. It’s a way of writing code, in which the default mode is to explicitly check &lt;strong&gt;all&lt;/strong&gt; assumptions you have in mind while writing logic (most of the time throwing exceptions to the caller).&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Though, when does this make sense? &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;Assume you are developing a framework, application host or plug-in to an application host. How sure are you all the assumptions you have in mind hold, once having released whatever you are working on “out in the wild”? &lt;br /&gt;&lt;br /&gt;What if a “friendly hacker” wants to exploit some unforeseen extensibility point in your framework, making it do cool stuff beyond something you thought was possible… would that be gain or loss in value for your framework? &lt;br /&gt;Think of all the mash-ups people made against google maps, flicker, whatever web 2.0 stuff is out there. Or extensions made to “application hosts” such as the Visual Studio Shell (&lt;a class="" title="Announcing the Visual Studio 2008 Shell" href="http://blogs.msdn.com/vsxteam/archive/2007/06/05/Announcing-the-Visual-Studio-2008-Shell.aspx" target="_blank"&gt;soon to be released and positioned as a true&amp;nbsp;application host&lt;/a&gt;!). &lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0cm 0cm 10pt;"&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;My default mode is different: I won’t check assumptions I have when coding, “unless …”:&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;- I am exposing some surface of an application to whomever (for instance a public service boundary, user input, whatever “unfriendly hackers” could exploit to do bad things).&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-ansi-language:EN-US;"&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;- I am shielding from&amp;nbsp;conditions that simply cannot be handled gracefully (and will throw an exception anyways). Most of which can be done through basic parameter guarding.&lt;br /&gt;&lt;br /&gt;-Etc&lt;/font&gt;&lt;/font&gt;&lt;/span&gt; 
&lt;p&gt;&lt;span style="FONT-SIZE:11pt;LINE-HEIGHT:115%;FONT-FAMILY:&amp;#39;Calibri&amp;#39;,&amp;#39;sans-serif&amp;#39;;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-theme-font:minor-bidi;mso-fareast-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-fareast-theme-font:minor-latin;mso-bidi-language:AR-SA;"&gt;When exposing a public API I’d love to have people do whatever they think makes sense. &lt;br /&gt;&lt;strong&gt;In return, whatever I expose meets some basic assumptions, around stuff like thread-safety, security and in general its behaviour (implied through convention&amp;nbsp;or somehow more explicit). &lt;br /&gt;&lt;/strong&gt;If something is not thread-safe or possibly unsecure it should not be part of the public API.&lt;br /&gt;&lt;br /&gt;Example would be a pattern such as:&lt;br /&gt;FooBar foo = bar.GetContextualSomething() as FooBar;&lt;br /&gt;if (foo != null) // whatever ContextualSomething I get back, my logic only applies on a FooBar&lt;br /&gt;{&lt;br /&gt;foo.DoStuff();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;I agree that having an API that works regardless of how it is called wouldn&amp;#39;t make sense either, though the consumers of a framework know the problem they are trying to solve best. So why not give them the benefit of doubt?&lt;/span&gt;&lt;/p&gt;</description></item><item><title>UML and the Maverick style</title><link>http://bloggingabout.net/blogs/adelkhalil/archive/2007/04/07/uml-and-the-maverick-style.aspx</link><pubDate>Sat, 07 Apr 2007 00:27:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:155416</guid><dc:creator>Adel Khalil</dc:creator><description>&lt;P align=justify&gt;I'm very confused about UML i didn't had a&amp;nbsp;chance to deeply work with it&amp;nbsp;but now i guess it's already prisoned inside the boundaries of whiteboards nothing like UML will appear in any place other than the white board in the meeting room.&lt;IMG height=229 hspace=16 src="http://www.fiftiesweb.com/tv/maverick-rm.jpg" width=175 align=right&gt;&amp;nbsp;Maybe i don't know I'm not working like you in a fancy software vendor - or it's not a fancy big &lt;/P&gt;
&lt;P align=justify&gt;sw vendor characteristic - so i don't have all the fancy must well done water flow model so we can have the time to do the work, my style is a Maverick style of coding -&amp;nbsp;don't remember who came up with the name -&amp;nbsp;and potential testing where you just wanted to get the initial specs and run into your favorite kinda of IDE and start getting things done - if you know what i mean - even many of the companies that adopt the Agile methodologies dot relaying on UML in design like the idea of Agile and freedom of developer is liberate them from having everything figured out prior.&lt;/P&gt;
&lt;P align=justify&gt;I see software methodologies - management, design, developing ..etc.. - are interrelated&amp;nbsp;together it's hard for me to imagine a Ruby developer doing some deep design before start coding on the fly, in the other hand Java folks or other old OOP languages are more imaginable as design duds.&lt;/P&gt;
&lt;P align=justify&gt;So if this is correct then Agile management will affect other sides of software practise to be agile too as the mentality that choose a style of doing design will choose similar style of management and so on..&lt;/P&gt;
&lt;P align=justify&gt;Back to UML for instance, i&amp;nbsp;see that converting from the high business level to a DB entities for example is alto harder for developers and starting Architects&amp;nbsp;as we learned and worked with the DB point of view very much that the human entities is now so hard to understand in someway we are thinking like Computer better in a certain way than thinking in normal human way, that why we may spending a lot of time on Visio tying to model the business to create the back-end schema when we - as a developer thinking like computers - can easily created the desired table into the DBMS.&lt;/P&gt;
&lt;P align=justify&gt;Maybe this is why i hated UML - well not hated it -&amp;nbsp; but at least not prefer working with it outside the whiteboard.&lt;/P&gt;
&lt;P align=justify&gt;So how you design and what is the pattern of methodologies you are using ? Are you a fan of the Maverick Coders style despite of all it's drawbacks ?&lt;/P&gt;</description></item><item><title>MySpace and ASP.NET</title><link>http://bloggingabout.net/blogs/ramon/archive/2006/12/07/MySpace-and-ASP.NET.aspx</link><pubDate>Wed, 06 Dec 2006 23:44:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:68373</guid><dc:creator>Ramon Smits</dc:creator><description>&lt;p&gt;I just read &lt;a title="Paul Wilson" href="http://weblogs.asp.net/pwilson/"&gt;Paul Winson&lt;/a&gt;'s post about the fact that &lt;a href="http://weblogs.asp.net/pwilson/archive/2006/12/07/note-to-self-myspace-runs-asp-net.aspx"&gt;MySpace uses ASP.NET&lt;/a&gt;. I know this for months but just creates more questions about how &lt;a title="MySpace" href="http://www.myspace.com/"&gt;MySpace&lt;/a&gt; is build.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Do they use c#, vb?&lt;/li&gt;&lt;li&gt;Do they make use of the standaard system.web.* controls?&lt;/li&gt;&lt;li&gt;What kind of application layers do they have?&lt;/li&gt;&lt;li&gt;How do they manage state? Viewstate, cookies, sql, in memory?&lt;/li&gt;&lt;li&gt;What kind of data caching do they use and in which parts?&lt;/li&gt;&lt;li&gt;How do they manage data persistancy?&lt;/li&gt;&lt;li&gt;How big is there web+sql farm?&lt;/li&gt;&lt;/ul&gt;I've heard rumours that the total processing power for &lt;a href="http://www.myspace.com/"&gt;MySpace&lt;/a&gt; exceeds that of &lt;a href="http://www.google.com/"&gt;Google&lt;/a&gt; worldwide!&lt;br&gt;&lt;br&gt;What I read about persistancy is that they have choosen &lt;a href="http://ibatis.apache.org/"&gt;iBatis.NET&lt;/a&gt;. They support three environments: Java, .net and Ruby. I have not yet tested this persistancy O/R framework but I am wondering if it also works with &lt;a title="Mono-Project" href="http://www.mono-project.com/"&gt;Mono&lt;/a&gt; :-).&lt;br&gt;&lt;br&gt;&lt;br&gt;Update:&lt;br&gt;I just found the following information about &lt;a href="http://www.eweek.com/article2/0,1759,1947684,00.asp?kc=EWRSS03119TX1K0000594"&gt;the hardware in use for MySpace&lt;/a&gt;:&lt;blockquote&gt;MySpace's extensive IT architecture currently features 2,682 Web servers, 90 Cache servers with 16GB RAM, 450 Dart Servers, 60 database servers, 150 media processing servers, 1,000 disks in a SAN (storage area network) deployment, three data centers and 17,000MB per second of bandwidth throughput.&lt;br&gt;&lt;br&gt;...&lt;br&gt;&lt;br&gt;MySpace currently sets aside about 100 terabytes for MP3s and videos, and another 200TB for dynamic content.&lt;br&gt;&lt;br&gt;...&lt;br&gt;&lt;br&gt;MySpace is deploying Isilon Systems' software for MP3 and video
streaming, clustering systems together in order to spread files and
data across multiple storage nodes. The technology also reduces storage
capacity constraints, since new nodes can be added as necessary.
Originally starting off with a two-node 3PAR frame, MySpace has since
upgraded to an eight-node cluster. Each storage node delivers 600
megahertz per second, while each cluster spits out 10G bits per second.&lt;br&gt;&lt;/blockquote&gt;
&lt;p&gt;So this seems like an impressive hardware setup :-)&lt;/p&gt;&lt;p&gt;Well that makes you wonder what&amp;nbsp; will happen to this setup when MySpace will expand to China as is mentioned in the media the last couple of months.&lt;br&gt;&lt;/p&gt;&lt;br&gt;</description></item></channel></rss>