Home | Blog | Screencasts | Projects
# Wednesday, October 15, 2008

You may not have heard about Microsoft Search Server 2008 Express, just as SQL Server Express is the little brother of SQL Server, Search Server 2008 Express is the little brother of MOSS. It offers most of the enterprise search capabilities of MOSS minus the BDC.

I’ve put together a screen cast of the install and initial setup of the product, you’ll find that the entire process is almost the same as WSS or MOSS, that is because the product is built from the same components. The one notable difference is the new Server Wizard page, it combines all the common settings such as app pool accounts, selection of the index server, content access accounts into one place.

The search administration is the same as MOSS with the infrastructure updates, in fact the infrastructure updates goal was to align the work done around the Enterprise Search Server space with the search capabilities of MOSS, new features like federated search etc.

 

I highly recommend taking a look at Search Server 2008 Express if you want to provide search to your organisation without the committing to a full MOSS install or even to increase the search capabilities of your WSS farm.

 

The install steps are:

  • Launch the installer, make sure you select the ‘Install all components’  from the advanced option if you wish to connect to a SQL Server, otherwise the stand alone option if you wish to use the SQL Express version.
  • The configuration wizard will run after the install (just like SharePoint), depending on your option, I choose to create a new farm.
  • Enter your database server name and the database access account, this account should have permissions to create databases.
  • Specify a port for central admin to run on, try to make this consistent across all your farms, it makes it easy to remember that way.
  • Once the setup completes, central admin will be launched, a page specific to Search Server will be presented. This page will ask for the content access account, the application pool account and various other options. I really like this consolidated page, hopefully we will see more of it in SharePoint 14
  • In my case the web application was created successfully, however the site collection wasn’t created, so I selected the create site collection option in central admin and used the search centre template.

 

The higher quality screen cast can be found here or the youtube version:

 

Of course you should also subscribe to the Microsoft Enterprise Search Blog to help stay up to date with this product.

Wednesday, October 15, 2008 7:27:00 AM (E. Australia Standard Time, UTC+10:00)  #    Comments [0] - Trackback
Screencast | Search Server | setup
# Tuesday, October 14, 2008

So the big news is that Silverlight 2 has been released, I haven’t really paid much attention to Silverlight up until the Devsta competition which gave me the incentive to jump right in and start developing with it.

I remember on the first day of development of Console Connect I was really frustrated that I couldn’t get the exact layout of UI elements that I wanted, I hadn’t fully understood the power of the StackPanel. Once I got over that hurdle I found myself applying the same text styles to numerous textboxes which didn’t feel right, then I discovered the shared resources, by now the light was on and I was lovin it.

I was really impressed by how easy it was to pick up, I don’t recall having any problems at the code level, just the UI issues I previously mentioned. Within a week I had a couple of small games working and could do all the same things that I could in a winforms app like calling webservices and changing the UI in response to the users input. If I was a little more graphically inclined, my games could come to life with animations and sounds, but that is best left to those right side of the brain people.

One of my colleagues said to me that he didn’t think that Silverlight would get much widespread adoption, but my thoughts after having a good play with the technology are a little different.

I think the key is the shallow learning curve for .NET developers, something like this: 

 

Silverlearningcurve

 

Once you get over the little UI hump (which is basically the same for WPF) and learn a handful of things like data binding, resources and the way the UI can use panels, your just about at the top of the curve. I think Scott Hanselman had much of the same experience when started on his babysmash experiment.

So ultimately I think the success of Silverlight will be around the fact that developers can pick it up quickly and experience all that developer love from Microsoft. All the things that make development a breeze like a full debugger, intelli-sense and a framework that is familiar.

 

Or maybe I’m completely wrong and the rest of the world will have the same view as Ruby On Rail’s David Heinemeier Hansson who basically thinks that we are only scratching the surface with what can be done with Javascript and HTML, maybe rich internet applications will be a passing fad?

Tuesday, October 14, 2008 11:01:00 PM (E. Australia Standard Time, UTC+10:00)  #    Comments [1] - Trackback
Silverlight

I previously blogged about using the BDC with MOSS user profiles and how to set that whole process up. Well I thought that I might write a little about the BDC application definition file (ADF) that is imported into MOSS and is used by the BDC to generate the meta-data and to ultimately connect to the data source.

An ADF file contains metadata describing entities and methods to populate those entities.

These are the methods that are of interest to us, all have nice relevant names:

 

IDEnumerator – These methods can perform filtering and can be passed parameters, the idea is that it returns an ID (and a timestamp if possible), as it’s name implies it is used to enumerate all the ID’s (or primary keys). In the context of the profile import, if your key is say, an Active Directory email address, then the IDEnumerator should return the email address field.

Specific Finder – This method accepts an ID and returns just the information related to that ID. You’ll probably create a number of these using different filter descriptors.

 

Now that you have an idea of what the methods are and how they operate you can design web services that are low friction for the BDC.

You’ll need a web service that returns a list of ID’s (for the IDEnumerator), you’ll need a second webservice that accepts the same ID’s that were returned by the first method, this second method will comprise your Specific Finder methods.

Also don’t create trouble for yourself by building webservices that accept a large number of parameters, you’ll regret it, just keep it simple. The guys that developed the fantastic BDC Meta-Man product also have the same advice.

 

I’ve provided the SQL create statement and ADF file here.

Tuesday, October 14, 2008 9:05:00 AM (E. Australia Standard Time, UTC+10:00)  #    Comments [0] - Trackback
BDC | code | MOSS
# Monday, October 13, 2008

I’ve put together a screencast that demonstrates how to configure a web application so that it can host MOSS MySites.

 

The basic steps are:

  • Create the web application
  • Create a site collection to be hosted in the newly created web application, make sure this is based on the ‘My Site Host Template’
  • Create a managed path for the MySites
  • Change the MySite settings in the SSP central admin to reflect the URL and managed path that was setup in the previous steps
  • Enable self service site creation so that new MySites are created when the user clicks on the My Site link

The high quality version can be found here or the youtube version:

 

Monday, October 13, 2008 7:48:00 AM (E. Australia Standard Time, UTC+10:00)  #    Comments [0] - Trackback
configuration | MySites | Screencast | Sharepoint
# Friday, October 10, 2008

One of the main features of SQL Server 2008 is database backup compression. In SQL 2008 you can now specify the backup as:

BACKUP DATABASE ‘WSSDatabase’

TO DISK = ‘C:\WSSDatabase.bak’
WITH COMPRESSION;

Or if your GUI inclined:

SQL2008Compression

 

This will make managing your content databases a little easier, especially if your already getting heckled by your SAN Administrator or the poor guy trying to backup those 150GB backups.

 

The second feature is Transparent Data Encryption (TDE), this allows you to specify a key that is used for data encryption for example:

ALTER DATABASE ‘WSSDatabase’
SET ENCRYPTION ON;

The scenario where I think this feature works nicely is this; imagine your pay-role people want to store pay details, you could firstly ensure that the site collection they use is located in a nominated content database, then you could turn on the encryption and have another secured means of protecting your data.

 

Further information can be found here.

 

Those two features are pretty compelling, on all our new deployments we are recommending SQL 2008.

Friday, October 10, 2008 8:45:00 AM (E. Australia Standard Time, UTC+10:00)  #    Comments [0] - Trackback
Sharepoint | SQL 2008
# Thursday, October 09, 2008

I’ve put together a screencast that shows how to use your data from an external source such as a SQL Server database and combine it with your user profiles.

The screencast shows how to:

  • Import the application definition to setup the BDC application
  • Setup a custom import connection of type business data catalog and how to set the key between active directory account and BDC data
  • Setting up custom profile property section (the example is cricket statistics)
  • Setting up custom profile properties that import data from the BDC data source
  • Start a full import
  • Perform a search which returns the user and show the new data that is displayed in the users profile page.

A good quality version of the screen cast can be found here (4 mins).

 

Or the low quality youtube version:

 

Thursday, October 09, 2008 11:01:00 AM (E. Australia Standard Time, UTC+10:00)  #    Comments [1] - Trackback
Screencast | Sharepoint | BDC
# Wednesday, October 08, 2008

The question was asked:

How do I load up an XSLT from the style library like:

 

   1: XslCompiledTransform xslTransform = new XslCompiledTransform();   
   2: xslTransform.Load("/styles/file.xslt");  

 

When I do this I get a (401) unauthorized exception

 

Answer

You need to use an XmlUrlResolver and populate the credentials property like:

   1: XmlUrlResolver resolver = new XmlUrlResolver();   
   2: resolver.Credentials = CredentialCache.DefaultCredentials;   
   3:   
   4: XsltSettings settings = new XsltSettings(true, true);   
   5: transform.Load(XSLTUrl, settings, resolver);  

Wednesday, October 08, 2008 10:37:00 AM (E. Australia Standard Time, UTC+10:00)  #    Comments [0] - Trackback
Q&A | Sharepoint
# Tuesday, October 07, 2008

Normally I wouldn’t recommend bulk creating a MySites, but what if you were bringing ten thousand plus users onto your portal at a single time? Imagine if they all hit the My Site link within a small time frame, would your server melt?

Maybe you would like to bulk create the MySites at a time that suits you to avoid this meltdown.

The following code might help you out:

 

   1: class Program
   2:     {
   3:         static void Main(string[] args)
   4:         {            
   5:             using (SPSite site = new SPSite("http://my.sharepoint.url"))
   6:             {
   7:                 ServerContext context = ServerContext.GetContext(site);
   8:  
   9:                 //initialize user profile manager
  10:                 UserProfileManager profileManager = new UserProfileManager(context);
  11:  
  12:                 //this just creates a mysite for everyone in the profile database                             
  13:                 foreach (UserProfile profile in profileManager)
  14:                 {
  15:                     Console.WriteLine("Creating a Personal Site for " + profile["PreferredName"] + "...");
  16:                     try
  17:                     {
  18:                         profile.CreatePersonalSite();
  19:                         Console.Write("Succcess!\n");
  20:  
  21:                     }
  22:                     catch (PersonalSiteExistsException)
  23:                     {
  24:                         Console.Write("Site already exists!\n");
  25:                     }
  26:                 }
  27:             }
  28:         }
  29:     }

 

It simply iterates through each user profile and calls the CreatePersonalSite() method on each user profile.

 

Of course the other big issue to consider is the impact of the content databases, these should all be created and some thought should be given as to the potential size of these databases. If you say have 10000 users each with 100MB Quota your potentially looking at a 100GB database, which might be a little hard to work with. So you should have an idea of the total number of users, the quota size of each MySite and then setup the content database limits. These values can be viewed from the ‘Content Databases’ Option under ‘SharePoint Web Application Management’ in the Application Management section of central admin:

ContentDatabases

 

The above page will let you control how your sites are distributed across your databases.

Tuesday, October 07, 2008 10:46:00 PM (E. Australia Standard Time, UTC+10:00)  #    Comments [0] - Trackback
Sharepoint | MySites

I put in an entry into this year’s devsta competition, since the submission display page doesn’t work too well, I thought I’d post the full description of my entry here:

 

Console Connect – The Connected Console

 

What would Facebook like if it was around in the green screen terminal days? Console Connect provides this experience, it's the socially connected console, with ASCII art profile pictures and a friend list that is updated in real time when your friend's status changes or they come online enabling you to keep connected with your friends with real time messaging.

The console is delivered via a Silverlight control which provides the user with 3 rich green screen games: the classic pong game, space invaders and bomb drop. Your high scores are posted to a shared scoreboard for all to marvel.

Nothing says old school like a green screen ... are you ready to get connected?

 

 

ConsoleConnect

 

Once you login to your console session, you are presented your friends list with indicators that let you know when they come online.

You can search for new friends and instantly start following their status and online indicator. If your feeling happy and you want all your friends to know it, then select [1] and enter your status for all your friends to see.

The console supports messages, so you can instant message your friends, simply select the send message [2] menu option and type your message,
your friend will receive the message if they are logged into the console and it will also display next time they login.

To test these features you should open two consoles and login to each as a different user (the user 'demo' and 'sally').

 

 

Space

 

Any good social networking tool needs to have games that users can compete against each other, of course being a green screen application means
that all those fancy graphics are non existent. Select the applications menu [4] and select the [2] space invaders option. Level 1 is pretty easy if you move quickly to the right and attack slowly, level 2+ adds more difficulty when the alien ships start moving.

Your score will be posted to a shared scoreboard, so all your friends will be able to compete with you. Maybe you can find the hidden way to cheat this game?

 

 

 

 

 

 

 

PongAndBomber

 

If space invaders isn't your thing, how about a hard core pong session, this is a game of endurance, how hard core are you about beating your friends score?

The bomb drop game gives you control of a bomber (yes imagination is required ... you still have one? ) that needs to bomb a building. Each miss will take one of your three lives. When you score a direct hit the plane will fly at a higher altitude and the building will move closer. If you keep progressing your aircraft will be fitted with missiles that drop at a faster speed further increasing the challenge.

Again your scores will be posted to a shared scoreboard, your friends can be amazed that you played pong for an hour straight!

Tuesday, October 07, 2008 8:31:40 AM (E. Australia Standard Time, UTC+10:00)  #    Comments [1] - Trackback
Work
# Monday, October 06, 2008

The SharePoint community have a number of useful tools that can aide you in your performance testing of MOSS. The tool that comes to mind is the SharePoint 2007 Test Data Population Tool, this tool can bulk load data into SharePoint. If you click on the Releases tab you will see a release: MOSS Performance Load Tests. This is a series of web tests that can be loaded up into visual studio team system:

 

PerfTesting

 

The visual studio load testing features can simulate multiple users over a period of time all running a defined test mix. In the above image the homepage is hit 9% of the time, whereas the general PageView test which is a broad selection of pages makes up 28% of the test mix. Your test mix will depend on how you perceive your users using the site.

Visual studio has a number of options that you can tweak such as:

  • Browser mix – provides a way to simulate multiple browser types i.e. mobile devices, firefox, IE etc ..
  • Network mix – your test network might not be the same as production, this allows you to test with network limitations in place
  • Load pattern – Constant, Step or Goal based, depending on what your testing, you could hammer your server with a constant load, or you could build up in a controlled manner.
  • Warm up time – You can warm the server up to avoid the initial compile times from impacting your results.

In the example above I’m using the test mix from the Microsoft document: Estimate performance and capacity requirements for portal collaboration environments, you can find other documentation for different portal types here.

Monday, October 06, 2008 9:46:00 AM (E. Australia Standard Time, UTC+10:00)  #    Comments [0] - Trackback
Sharepoint | Performance
Statistics
Total Posts: 134
This Year: 0
This Month: 0
This Week: 0
Comments: 20