|
|
External News
-
|
|
I've nearly given up blogging as you can probably tell by the gaps between my posts
these days and am uncertain whether I'll ever get that going again or not. Who
knows? However, something weird happened today related to ADFS that I thought
might be worth a post that I decided to document for posterity.
Essentially, a colleague of mine at work was trying to install the ADFS Web Agent
on a Win2K3 R2 server using the standard method of "Add/Remove Windows Components".
The OS w... [ read more]
|
-
|
|
We have just released an updated version of the SSDS sample application called 'PhluffyFotos'.
Clouds are fluffy and this is a cloud services application - get it? This sample
application is a ASP.NET MVC and Windows Mobile application showing how to build a
photo tagging and sharing site using our cloud data service, SSDS. For this
update:
Updated to MVC Preview 4. We have removed hardcoded links and used the new filtering
capability for authorization. Of cours... [ read more]
|
-
|
|
I have just updated the Code Gallery
page to reflect the new version of the REST-based library for SSDS. This
is a fairly major update to library and adds a ton of new features to make working
with SSDS even easier than it already is for the .NET developer. Added in this
release:
Concurrency support via Etags and If-Match, If-None-Match headers. To get a
basic understanding of how this works, refer
here.
Blob support. The library introduces a new type called SsdsBlo... [ read more]
|
-
|
|
Eugenio already covered concurrency via the SOAP interface with with latest
post. The idea is exactly the same in REST, but the mechanics are slightly
different. For REST, you specify a "Etag" value and either the If-Match or If-None-Match
headers.
Here is a simplified client that does a PUT/POST operation on SSDS:
internal void Send(Uri
scope, string etag, string method, string data,
Action<string, WebHeaderCollection> action,
Action<WebException> exception) { using ... [ read more]
|
-
|
|
Here is my last installment in this series of working with objects in SQL Server Data
Services. For background, readers should read the following:
Serialization in SSDS
Working with Objects
in SSDS Part 1
Working with Objects
in SSDS Part 2
Last time, we concluded with a class called SsdsEntity<T> that
became an all-purpose wrapper or veneer around our CLR objects. This made it
simple to take our existing classes and serialize them as entities in SSDS.
In this post, ... [ read more]
|
-
|
|
This is the second post in my series on working with SQL Server Data Service (SSDS)
and objects. For background, you should read my post on Serializing
Objects in SSDS and the first
post in this series.
Last time I showed how to create a general purpose serializer for SSDS using the standard XmlSerializer class
in .NET. I created a shell entity or a 'thin veneer' for objects called SsdsEntity<T>,
where T was any POCO (plain old C#/CLR object). This allowed me to abstra... [ read more]
|
-
|
|
Last time we talked
about SQL Server Data Services and serializing objects, we discussed how easy it was
to use the XmlSerializer to deserialize objects using the REST interface.
The problem was that when we serialized objects using the XmlSerializer,
it left out the xsi type declarations that we needed. I gave two possible solutions
to this problem - one that used the XmlSerializer and 'fixed' the
output after the fact, and the other built the XML that we needed using XLINQ and
Ref... [ read more]
|
-
|
|
I officially love LINQPad. Joe Albahari
has done a great job of introducing a light weight tool that is great for learning
and prototyping LINQ queries. From what I gather, Joe and Ben Albahari built
this tool as part of their
book offering. It was so useful, it has taken on a life of its own.
It may not be entirely obvious, but it turns out don't have to use LINQPad solely
for LINQ queries. You can actually prototype any type of snippet of code.
I have been usin... [ read more]
|
-
|
|
A member in the book's
forum mentioned some code I had originally posted here in
the blog for asynchronous, paged searches in System.DirectoryServices.Protocols (SDS.P).
He questioned whether or not it was thread safe. I honestly don't know - it
might not be as I didn't test it extensively.
Regardless, I had actually moved on from that code and started using anonymous delegates
for callbacks instead of events. I liked this pattern a bit better because it
also got rid of the ... [ read more]
|
-
|
|
I just posted the first version of PhluffyFotos,
our SQL Server Data Services (SSDS) sample app to CodePlex. PhluffyFotos is
a photo sharing site that allows users to upload photos and metadata (tags, description)
to SSDS for storage. As the service gets more features and is updated, the sample
will be rev'd as well.
Points of interest that will likely also be blog posts in themselves:
This sample has a LINQ-to-SSDS provider in it. You will notice we don't use
any strings... [ read more]
|
-
|
|
It seems like I've deteriorated into semi-annual blog posts. Sigh. At
least the discussion groups at www.directoryprogramming.net continue
to flourish and we are seeing a nice uptick in activity on the ADFS board there.
I think the writing may be on the wall for me as a blogger, but who knows. Perhaps
I'll get back on the wagon.
Anyway, thanks to all the people who came to see my talks at DEC this year.
I hope you enjoyed visiting my town and you got a lot out of... [ read more]
|
-
|
|
If you are interested in learning more about Visual Studio 2008, make sure you check
out the Visual Studio 2008 Training
Kit. Weighing in at roughly 120MB compressed, it contains, "a full
5-days of technical content including 20 hands-on labs, 28 presentations, and 20 scripted
demos. The technologies covered in the kit include: LINQ, C# 3.0,
VB 9, WCF, WF, WPF, Windows CardSpace, Silverlight, ASP.NET Ajax, .NET Compact Framework
3.5, VSTO 3.0, Visual Studio Team Sys... [ read more]
|
-
|
|
There are three ways of figuring out things that have changed in Active Directory
(or ADAM). These have been documented for some time over at MSDN in the aptly
titled "Overview
of Change Tracking Techniques". In summary:
Polling for Changes
using uSNChanged. This technique checks the 'highestCommittedUSN' value to start
and then performs searches for 'uSNChanged' values that are higher subsequently.
The 'uSNChanged' attribute is not replicated between domain controllers, so... [ read more]
|
-
|
|
Given that I haven't posted on this blog for months, I'm not sure if anyone still
reads it, but I thought I'd take a few moments to inform my loyal readers of a new
addition to the family.
Micah Kaplan Yarbrough was born October 15, 2007 at 11:40 AM at Prentise Women's Hospital
(part of Northwestern Memorial Hospital) in downtown Chicago, just like like his older
brother Evan.
He arrived 10 days before he was expected and almost a month sooner than his brother
(who was quite late) and was a... [ read more]
|
-
|
|
A question came up the other day on how to get LINQ to SQL to participate in using
the SQL Notification Services. Of course, I didn't know, but Mike Pizzo from
the ADO.NET team was kind enough to answer. I figured it must be possible, and
sure enough, it is. Essentially, you have to create a SQL dependency context,
which is very similar to a transaction context. Any code that participates within
that context will automatically be associated with the SQLDependency. ... [ read more]
|
-
|
|
Link pair attributes in Active Directory and ADAM can be quite big. I don't
know the official limit, but needless to say, for practical purposes you can assume
they are quite large indeed. By default, AD and ADAM will not return the entire
attribute if it contains more than a certain number of values (1000 for Windows 2000
and 1500 for Windows 2003+ by default). As such, if you truly want robust code,
you need to always use what is called range retrieval for link value paired ... [ read more]
|
-
|
|
I have previously
covered pretty extensively the options for getting a user's group membership in
Active Directory or ADAM (soon to be Active Directory LDS (Lightweight Directory Services))
here on the blog, in the forum,
and in the
book. However, there is a new option for users of .NET 3.5 that should be
of interest.
The Directory Services group at Microsoft has released in beta form a new API for
dealing with a lot of the common things we need to do with users, groups, and computers
i... [ read more]
|
-
|
|
One of the major changes introduced with IIS7 is the removal of the metabase.
This probably comes as a great relief to many of the admins and developers that struggled
with coordinating configuration across multiple machines. Instead of the metabase,
IIS7 has chosen to schematize all the web server settings and host them centrally
in a new XML file called applicationHost.config located at '%windir%\system32\inetsrv\config'.
The schema itself can be found in the 'schema' folder rig... [ read more]
|
-
|
|
I was checking on the book's website the
other day and noticed that we broke the 54,000 mark for downloads of our sample code.
That really surprised me. I just didn't think that there were that many people
in the world working on these types of scenarios.
Now, I happen to know that we did not sell that many copies of the
book, so this means a lot of people are downloading just the samples. For
the record, that is perfectly fine and we encourage people to look at the sa... [ read more]
|
-
|
|
I almost missed this
one from Tomek, but he has a good analysis of what happens when you have many
results to return from the directory and a nice comparison of how the different stacks
(System.DirectoryServices vs. System.DirectoryServices.Protocols) handle it.
The moral of the story: if you have a ton of results coming back, it might be
in your interest to pursue using the Protocols stack.
|
-
|
|
If you are the type of person that loves learning the latest and greatest technologies
and sharing it with others, then we have two job openings right up your alley.
My manager has more
details here.
|
-
|
|
I was lucky enough to attend DEC again this year and was even more lucky to have been
asked to speak due to an unfortunate last minute cancellation. This year, I
presented on a variation of the same type of stuff that Ryan and I presented
on at DEC 2006. This year, I had to fly solo as Ryan could not attend.
:(
Here's what we did differently this time around:
No PowerShell (DEC already had 2 PowerShell sessions, so why bother?)
Focus on some new Longhorn LDAP and AD fea... [ read more]
|
-
|
|
Microsoft has added a new LDAP feature to AD in Windows 2003 SP2 and Longhorn server
called the LDAP_MATCHING_RULE_IN_CHAIN. Essentially, it is an extension filter
type that allows you to search withing the content of a distinguished name-syntax
attribute and do matching throughout the entire chain of linked values instead of
just within the immediate values. The docs are here and
the syntax looks like this:
(memberOf:1.2.840.113556.1.4.1941:=CN=some group,CN=xxxx,DC=xxxx,DC=xxxx)... [ read more]
|
-
|
|
Fellow MVP, Ethan Wilansky has a new article on MSDN outlining the System.DirectoryServices.Protocols
stack. I haven't had a chance to read every last word in it yet (it's a huge
article!), but it appears to show roughly 80% of everything you might want to do with
SDS.P. Check it out.
Link to Introduction
to System.DirectoryServices.Protocols (S.DS.P)
|
-
|
|
If hot-LDAP-filter-action is your thing, but you were let down in my
last post since it required SP2 and Longhorn, then this should get you all hot
and bothered again: Hotfix
for SP1.
I know, it's a hotfix - which means you have to contact Microsoft to get it.
But if you want to take advantage of the new LDAP_MATCHING_RULE_IN_CHAIN without upgrading
to SP2 or Longhorn, then this is it.
|
|
|