Making WCF "Behave" - Part Four

Over the past month or so I've demonstrated how to create a custom behavior for WCF. I explained how behaviors fit into the WCF stack, created one based on the Message Dispatcher and then added it to the service via the configuration file.

The last piece is enabling our behavior to take property information from the configuration file.

Currently, our behavior intercepts the output message a replaces it with some text that has been hard coded into the behavior class. This is great, but how often do we hard code data like that in the code and never have to change it? That's right; almost never.

The plan then is to make some alteration so our behavior so that it can accept the message to insert from our configuration file:

<CustomBehaviorElement customMessage="This is a test message"/>

In part three I changed our class to implement the BehaviorExtensionElement so that it could be added to the service runtime via configuration. I did this for the sake of simplicity, but in general this is not a good idea. You will want to keep the behavior logic separate from the logic that allows it to be managed via the configuration. You'll see why in a few minutes.

This also gives me an opportunity to back up a little and explain what BehaviorExtensionElement does. Last time when we set up the behavior to be added via configuration, we changed the class to inherit from BehaviorExtensionElement and we referenced the behavior in the configuration like such (remember, the "type" information has to be on one line, no breaks please):

<add name="CustomBehaviorElement" 
    type="CustomBehaviorSample.MyCustomMessageFormatter, Behavior, 
        Version=1.0.0.0, 
        Culture=neutral, 
        PublicKeyToken=null" />

The WCF runtime looked in the behavior assembly for a class that derives from BehaviorExtensionElement named MyCustomMessageFormatter. This trick is, it doesn't necessarily expect that class to be the behavior. It merely expects the class to know how to create the behavior.

This abstraction presents us with some interesting possibilities. For example, with the behavior code in a separate class we have the ability to influence how the behavior is created in different circumstances by creating different classes that implement BehaviorExtensionElement.

Some key benefits of this separation of duties is the ability to pass runtime information to the behavior via the configuration and to control how the actual behavior class is created.

The first step in making our change is to add a member variable to hold the message we are going to be sending. Simply stated....

private string _message;

The next step is creating  (or if you already have one, changing) the constructor for the behavior class (MyCustomMessageFormatter) to take a string from the config, which just so happens to be our message:

public MyCustomMessageFormatter(string serviceMessage)
            : base()
        {
            this._message = serviceMessage;
        }

You can have any initialization code in this constructor you want. Need four different parameters for your constructor? Not a problem. Want to make some database calls to perform initialization? You can do that too. Want to delegate to some other class or service? Just write the code.

A change also needs to be made to the actual code that inserts the new message. Instead of using the hard coded message, it will now use the value that is being passed in to the constructor:

xmlDictionary.WriteString(this._message);

Now we have to make a new class that derives from BehaviorExtensionElement. We'll go ahead and call this BehaviorExtensionElementSample. Once we've done that we need to change the behavior class (MyCustomMessageFormatter) and remove it's inheritance reference to this class. In doing this, we will need to move the BehaviorType property and the CreateBehavior method we previously created in out behavior to the new class:

class BehaviorExtensionElementSample : BehaviorExtensionElement
{
    public override Type BehaviorType
    {
        get 
        {
            return typeof(MyCustomMessageFormatter);
        }
    }

    protected override object CreateBehavior()
    {
        return new MyCustomMessageFormatter(this.CustomMessage);
    }
}

As you can see, a change was also made to the CreateBehavior method that calls the constructor of the Behavior class. It's going to pass in a string that will be the message text from the config file. But it doesn't even need to do that. You have a lot of flexibility at this point in what kind of behavior gets created. For example, you could use the incoming configuration information to determine what kind of behavior to create (Strategy pattern anyone?) including not creating a behavior at all.

Again, the WCF runtime doesn't necessarily expect the class that inherits from BehaviorExtensionElement to provide the behavior logic, but it does expect it to be able to handle the creation of the behavior.

So now that we know how the information gets from BehaviorExtensionElement to our behavior class, how does the information get from the config file to the BehaviorExtensionElement?

To answer that, we need to learn a little bit about some of the classes in the System.Configuration namespace. Specifically ConfigurationProperty and ConfigurationPropertyCollection.

To our BehaviorExtensionElementSample, we add the following:

private ConfigurationPropertyCollection _prop = null;

protected override System.Configuration.ConfigurationPropertyCollection Properties
{
    get
    {
        if (this._prop == null)
        {
            this._prop = new System.Configuration.ConfigurationPropertyCollection();
            this._prop.Add(new System.Configuration.ConfigurationProperty("customMessage", typeof(string), 
                "Default Message", System.Configuration.ConfigurationPropertyOptions.IsRequired));
        }
        return this._prop;
    }
}

A ConfigurationProperty is an abstraction of configuration information, like the kind we have in our config files. It stores the value along with various meta-data like type, default value, type conversion rules and a description of the property. The ConfigurationProperyCollection is (surprise!) a collection of these ConfigurationProperty objects. By adding this code, we are overriding the implementation in ConfigurationElement, which BehaviorExtensionElement inherits from.

So, in the code above our class derived from BehaviorExtensionElement creates a private instance of the ConfigurationPropertyCollection and exposes a protected property called "Properties." Within our override of "Properties" we need to create ConfigurationProperty elements for out custom attributes. We only have one, the "customMessage" so that's all we are creating here. A base class will call this property on our implementation, and over write it's instance of the ConfigurationProperyCollection with ours.

Now that we've got to get our custom message in and out of our BehaviorExtensionElement. We add this code to our BehaviorExtensionElementSample:

[System.Configuration.ConfigurationProperty("customMessage", DefaultValue = "Default message.",
    IsRequired = true)]
public string CustomMessage
{
    get
    {
        return (string)base["customMessage"];               
    }
    set
    {
        base["customMessage"] = value;
    }
}

The first thing you'll notice is the ConfigurationProperty attribute. This mirrors the information we used to create our ConfigurationProperty element for our ConfigurationPropertyCollection above. You'll notice the name "customMessage" is the same identifier that we used to identify our value in the config file. This is very important because it tells the WCF runtime how to map the information from the config file to a property on our class. When the runtime collects the configuration information from the config file and creates an instance of our extension element, it will populate all of our properties automatically for us.

The rest of this is pretty simple "store a value, return a value" type code; storing the incoming value in the ConfigurationPropertyCollection we created ("Properties" is our base classes default indexer property) and returning a value (in our case, cast to a string).

So, to tie all this fun configuration stuff back into our behavior, the code that actually creates the behavior class:

protected override object CreateBehavior()
{
    return new MyCustomMessageFormatter(this.CustomMessage);            
}

Passes in our message to our behavior:

private string _message;

public MyCustomMessageFormatter(string serviceMessage)
    : base()
{
    this._message = serviceMessage;
}

Which in turn, injects it into our outgoing message:

xmlDictionary.WriteString(this._message);

See! It was, uh... easy? :)

In reality, this may seem complicated for something as simple as passing an initialization value into a class. But when you think about it, WCF is a communications framework whose mission to support flexibility and extensibility.  The leveraging of the ConfigurationElement and ConfigurationProperty classes allows us to leverage existing functionality in the .NET framework and the separation of duties between our behavior code and the BehaviorExtensionElement class gives us complete control over how things happen in the runtime. At any point along the way we had the ability to examine what is going on and customize our functionality based on any number of conditions. As complex as this may seem (and once you do a few, it's actually not too tough) I promise it's easier than trying to achieve this same level of configurable customization in ASMX or .NET Remoting!

Over the next few months I'll post some content on how to create/use the other types of behaviors. For now feel free to download and play with the code.

See ya later!

Print | posted on Wednesday, April 02, 2008 1:27 PM

Feedback

# re: Making WCF "Behave" - Part Four

left by gambling games at 1/9/2010 4:39 AM Gravatar
I like to read your blog oftenly and I am getting more news and secret in this. Also Please visit my blog for free, and forum discussion in our online friends community. All the friends online entertainment in our online community website.
http://www.uniqueastro.blogspot.com

# re: Making WCF "Behave" - Part Four

left by Petros at 4/13/2010 2:35 PM Gravatar
This section is not necessary

private ConfigurationPropertyCollection _prop = null;

protected override System.Configuration.ConfigurationPropertyCollection Properties
{
get
{
if (this._prop == null)
{
this._prop = new System.Configuration.ConfigurationPropertyCollection();
this._prop.Add(new System.Configuration.ConfigurationProperty("customMessage", typeof(string),
"Default Message", System.Configuration.ConfigurationPropertyOptions.IsRequired));
}
return this._prop;
}
}

# re: Making WCF "Behave" - Part Four

left by http://www.il-casino-on-line.com at 5/22/2010 3:10 AM Gravatar
A change was also made to the CreateBehavior method that calls the constructor of the Behavior class. It's going to pass in a string that will be the message text from the config file. But it doesn't even need to do that. You have a lot of flexibility at this point in what kind of behavior gets created..
More Enquiry open above hyperlink.......

# re: Making WCF "Behave" - Part Four

left by wholesale laptop battery at 5/24/2010 5:31 AM Gravatar
message a replaces it with some text that has been hard coded into the behavior class. This is great, but how often do we hard code data like that in the code and never have to change it? That's right; almost never.

The plan then is to make some alteration so our behavior so that it can acHP/COMPAQ laptop battery supplier and HP/COMPAQ laptop adapter supplier.

# re: Making WCF "Behave" - Part Four

left by part air jordan at 6/5/2010 3:36 PM Gravatar
I can’t always drop what I’m doing to help them, I’ll be devoting several posts to the basics of WCF. While these posts are created with the new user (no previous WCF experience) in mind, even seasoned users may get something out of these posts.

# re: Making WCF "Behave" - Part Four

left by Breitling Watches at 6/18/2010 11:44 PM Gravatar
Thank you for taking the time to write this blog post. Much appreciated, very valuable information...

# re: Making WCF "Behave" - Part Four

left by Monica at 7/15/2010 5:16 AM Gravatar

# re: Making WCF "Behave" - Part Four

left by cheap nfl jersey at 7/15/2010 5:28 AM Gravatar
Make you feel stylish and charming if you wear our cheap ugg boots. Take action quickly ,please.
How about coming and having a look at our fine workmanship moncler jackets product.Come with cheap price and high quality.
I'd like to share my ideas on these youth nfl jerseys for I have bought these jerseys several times for my students.All my students speak highly of these nfl jerseys.Very fashional outlook and durable quality.

# re: Welcome to our online store.

left by Cheap Gucci at 7/15/2010 5:36 AM Gravatar
Can I call your attention please?Our online store wants to introduce this gucci mens shoes to you.Come with free shipping and fast delivery.Besides,cheap gucci shoes can be also recommended to you for it is really quite good.Some customers find that discount gucci shoes can be also worthy owning.If you are search of other gucci product,you can come to http://www.clothingseries.com to have more choices.Start your shopping now.Welcome!!!

# re: Making WCF "Behave" - Part Four

left by free porn at 7/25/2010 1:35 PM Gravatar
We dropped our towels on the beach and waded into the water. Mom was little ahead of me and stopped and turned around before the water level reached her belly button free porn. I stopped in front of her and just stared. Mom grinned and reached for me, she pulled me close and we kissed, not the kiss of a son and his mother, but a deep passionate kiss, the type a 13 year pornrabbit.com old imagines he will someday experience with his first lover.
DQG827812234 8

# hei

left by hei at 7/25/2010 11:13 PM Gravatar
3Shoes last for a long time, and many stars have approved cheap nike shox. You can use the Nike shoes in almost every part of the world to find all different leading distributors. Importance for Wholesale nike shox . if you plan to buy stylish and fashionable, but comfortable shoes sneakers definitely the best. The cheap shox for a long time friend of every man when it comes to running or walking or sporting or dancing or jogging. Are you sure you feel wearing wholesale nike shoes and good looks definitely like it. Nike Shox grow in different styles and designs and styles every day. Nike shoes are worth the money. The Nike Shox Classic sereies Shoe, with a timeless look and superior technology, will leave them eating your dust.Nike shox china Buy now!<br>

# p90x

left by rosetta stone at 7/30/2010 4:38 AM Gravatar
If there were a rosetta stone TOTALe that could help me communicate with airline reservation agents, I’d order it.A few have been using rosetta stone language software to improve their Spanish.At times, I’ve heard language learning with rosetta stone spanish dismissed in favor of in-country immersion.

The p90x supplements recommended for P90x Reviews has one part protein and four parts of insanity. Tony has recommended the diet and insanity workout only after conducting tests on a sample of people.dws

# mbt

left by MBT at 8/3/2010 3:27 AM Gravatar
LLLLL fans of walking,buy a mbt shoes is important thing,besides exquisite style design, really want to pursue more MBT shoes functionality and comfort, a look of fresh goods MBT shoes!If you want has a comfort feeling when you walking,MBT habari sandals which relieve pressure gait feet is a good chooice.MBT fora shoes can provide training and treatment of muscle damage.And is a nother choose,MBT sandals is specially designed to outdoor activities need high multifunctional shoes outdoors.If you want to purchase more mbt shoes clearance,you can login mbtstore.org.We also provide moncler which is very soft materials for you.Coat can also be used in summer, can increase the moncler jackets,and his personality and improve your impact on others. You can purchase the style and color moncler down jackets. If you want to dress up melting and stable,can be used by Moncler 2010 dressed as a mature.

# re: Making WCF "Behave" - Part Four

left by LieYuan0415 at 8/3/2010 10:55 PM Gravatar
Carry your decision out. MCTSWhen you make a decision, act on it. Commit to making a real decision. CompTIA
What’s a real decision? It’s when you decide on something, CompTIA
and that decision is carried out through action. It’s pointless CompTIA Nerwork+
to make a decision and have it played out in your head, but not doing anything about it. That’s the same as not making a decision at all. CompTIA Exam
If you want to make real changes in life, you have to make it a habit to apply action with your decision until it’s completed.

# re: Making WCF "Behave" - Part Four

left by CDPdiazhuLJPYLL701 at 8/4/2010 12:34 AM Gravatar
Purchase computer-based 70-680
training guides. This is very similar to the above method, except that computer 70-270
based training is more 70-290
interactive, more fun, and likely 70-291
more effective for most people than using books. Of course it's also more expensive, although still nowhere near 70-291
$5000.


# re: Making WCF "Behave" - Part Four

left by lyAnswer at 8/4/2010 8:16 AM Gravatar
Bath-time buddy, this Ducky MCSEinMCSE Exam and bright yellow enamel is a fun addition to any collection MCITP Cute, fresh and fashionable, it is a must for any ducky lover. It is most important that the color ofMCSEDucky Charm is so light that MCSEyou get the best effect when wearing it.

# re: Making WCF "Behave" - Part Four

left by replica handbag at 8/5/2010 9:31 PM Gravatar

# re: Making WCF "Behave" - Part Four

left by sisi at 8/6/2010 2:03 AM Gravatar
come here replica watches is your right choice rep1ica.com replica watches In international replica burett watches charm wholesale replica accutron watches has a good and big Chopard Happy Sport Replica Watches charms sale reputation. You can trust the online store replica watch replica watches Provide jewelry styles Come top .com replica watch sale shop replica watches ,shopping kopeez.com replica watch become a gem. Take a look, you like it buy .com/charms-c-140.html replica bertolucci watches charms uk banquet replica bertolucci watches sale UK Most replica watch silver bracelets shoppers get the replica accutron watches watcopy.com replica burett watches replica watches consistent high praise. The shop Replica Jaeger LeCoultre Watches /bracelets cheap replica watch bracelets which are Replica Longines Watches replica watch provided silver chain on top Replica Cartier Pasha Watches are at discount. They are cheap replica watches Replica Louis Vuitton Watches but good quality
  

# re: Making WCF "Behave" - Part Four

left by Kingkle at 8/8/2010 2:30 AM Gravatar
There's not much you Breitling replica watches
can do about these people except to learnreplica Breitling watches
to deal with them, and learn to choose friendsTag Heuer replica watches
who are kind to you, who actually care about you, who make youreplica Cartier watches
feel good about yourself. When you find friends like replica Audemars Piguet watches
this, hold on to them, treasure them, spend time with them, be kind to them, love them.

# timberland 6 inch waterproof boots

left by timberland 6 inch waterproof boo at 8/11/2010 10:35 PM Gravatar
We offer high quality christian louboutin flats women's at wholesale price: cheap louboutin shoes ,Discount,Brand,Online Replica christian louboutin,Fake.Christian Louboutin shoes online shop offers Christian louboutin boots,like christian louboutin fashion shoes, Timberland winter boots
There are all kinds of timberland 6 inch waterproof bootsshoes waiting for you! Time Limited--Buy Now!

We make a promise that all products at our site haven’t any quality problem. As long as your order the shoes, we will send the products as soon as we can. And if your have problems for the sizes or you are unsatisfied with the product, we will provide exchange within three months;

# discount timberland boots

left by timberland boots at 8/14/2010 2:00 AM Gravatar
It is a good timberland 6 inch boots thing that the God Who made us is not impatient with people like me with my timberland shoe company orchid. He lovingly thinks about us all the time timberland boots and he even temporarily gave up His heavenly home and his timberland traditional handsewn hold on diety to die for the sins of timberland mens custom world nearly 2,000 years ago. His death back then covered the sins of every cheap timberland boots person who will ever live. He then rose to life after three mens timberland chukka days and ever since has wanted us to accept His gracious act by loving Him and also those around us. When we do this, we will see people in a totally different timberland womens premium boots light — one that redefines what it means to be ugly or different or weird or strange. Instead, we see people with ugly timberland shoes store problems in whom God is working so they can bloom beautifully — just like I now see in my orchids whether they are “lumps” or blossoms! On a certain timberland work shoes day at a certain hour, we will pull into the station. Bands will be playing and flags waving. Once we get there, so many wonderful dreams will come true and the pieces of our timberland wheat shoes lives will fit together like a completed jigsaw puzzle. How restlessly we pace the aisles, *ing the minutes for timberland for you loitering --waiting, waiting, waiting for the station.

# Air jordan shoes

left by Air jordan shoes at 8/19/2010 4:21 AM Gravatar
I like 125 Air jordan shoes, I think the Authentic Jordan shoes is so nice too. So, beautiful and fashionable girls and boys, come to find Jordan 2010 shop, find where the jordan shoes for sale,when you want to buy a jordan shoes you should have a look about Air jordan 6 | Air jordan 7 | air jordan 11.

# http://www.replica-king.com

left by maggie at 8/19/2010 4:59 AM Gravatar
Silver plate hand and hour mark color is selected,Replica Franck Muller Casablancaespecially for the dial makes it clear that time straightaway no matterreplica Patek Philippe Celestialwhat time of day or lighting.replica Chopard watches

# re: Making WCF "Behave" - Part Four

left by coach bags at 8/22/2010 11:27 PM Gravatar
Market is flooded UGG Boots on Sale with different types UGG Classic Short Boots of leather UGG Classic Tall Boots bags and wallets UGG Argyle Knit Boots. When it comes to UGG Bailey Button Boots choosing a leather bags UGG Classic Cardy Boots or wallet, UGG Baby Coach Leather bags Kids UGG Boots and wallets are Timberland Shoes something that Shoes Timberland you can rely Vibram Five Fingers on. Coach leather bags Vibram FiveFingers and wallets a have Discount Vibram Five Fingers been in the Discount Vibram FiveFingers market since Discount Vibram 1940s. These leather bags Prada Shoes have made a distinguished Gucci Shoes in the market. Not only Coach Bags in terms of quality these leather Coach New Style Bags are popular for both Coach New Style Bags and elegance. Before you go to purchase a leather prada Bags, make up your Gucci Bags which kind of Chanel Bags you want to go for Louis Vuitton Bags. Since these wallets are Jimmy Choo Bags in href="http://www.mbmbt.com/">MBT Shoes you are a MBT Shoes on sale confused as to which MBT Sandals to buy MBT Shoes Outlet. Here are a MBT Sandals on Sale tips to MBT Outlet choose which for MBT Men’s Shoes who are fond of carrying MBT Women’s Shoes all the time, going for a Outlet MBT leather bag also. Ray Ban Sunglasses or bag suits Oakley Sunglasses. Here are lots of Chanel Jewelry first of all Chanel Jewelry Outlet if you are Jewelry Outlet kind of Tiffany Jewelry outlet who carry more Tiffany Jewelry cards than Chanel Jewelry Online, go for the Jewelry Online Outlet which have more credit Cartier Jewelry compartments.

# re: Making WCF "Behave" - Part Four

left by coach bags at 8/22/2010 11:28 PM Gravatar
Market is flooded UGG Boots on Sale with different types UGG Classic Short Boots of leather UGG Classic Tall Boots bags and wallets UGG Argyle Knit Boots. When it comes to UGG Bailey Button Boots choosing a leather bags UGG Classic Cardy Boots or wallet, UGG Baby Coach Leather bags Kids UGG Boots and wallets are Timberland Shoes something that Shoes Timberland you can rely Vibram Five Fingers on. Coach leather bags Vibram FiveFingers and wallets a have Discount Vibram Five Fingers been in the Discount Vibram FiveFingers market since Discount Vibram 1940s. These leather bags Prada Shoes have made a distinguished Gucci Shoes in the market. Not only Coach Bags in terms of quality these leather Coach New Style Bags are popular for both Coach New Style Bags and elegance. Before you go to purchase a leather prada Bags, make up your Gucci Bags which kind of Chanel Bags you want to go for Louis Vuitton Bags. Since these wallets are Jimmy Choo Bags in href="http://www.mbmbt.com/">MBT Shoes you are a MBT Shoes on sale confused as to which MBT Sandals to buy MBT Shoes Outlet. Here are a MBT Sandals on Sale tips to MBT Outlet choose which for MBT Men’s Shoes who are fond of carrying MBT Women’s Shoes all the time, going for a Outlet MBT leather bag also. Ray Ban Sunglasses or bag suits Oakley Sunglasses. Here are lots of Chanel Jewelry first of all Chanel Jewelry Outlet if you are Jewelry Outlet kind of Tiffany Jewelry outlet who carry more Tiffany Jewelry cards than Chanel Jewelry Online, Cartier Jewelry compartments.

# re: Making WCF "Behave" - Part Four

left by duo duo at 8/25/2010 3:54 AM Gravatar

luxury handbags and luxury bags
luxury louis vuitton louis vuitton bag
chanel chanel bags
chanel sale chanel
chanel online chanel handbags
louis vuitton sale louis vuitton handbags
lv bags louis vuitton bags
iwc watches iwc
oris watches on sale oris
Omega Watches For Sale Omega Watches
Breitling Watches For Sale Breitling Watches
Cartier Watches For Women Cartier Watches

# re: Making WCF "Behave" - Part Four

left by GHD at 8/26/2010 1:20 AM Gravatar

<p>This is John customer service from Coach company. Our company are opening online store for GHD Hair Straighteners series products, we are now running a promotion. Buy GHD IV Styler from our website:http://ghdhaiir.com , you can get one free Jewelry,and you can enjoy 7% discount for each GHD Iv Salon Styler. All of our products have own authorised serial menbers..our products are authentic quality and original packages directly from factories. You will be satisfied to buy the products from our store. You will never regret to buy our perfect GHD Straighteners Outlet. Gucci bags and birkenstock sandals are also a good choice for you .If you want to know more about our gucci outlet and the Birkenstock sandals,pelase don’t hesitate to contact with us.</p>

# Miss Mughal

left by Sarah Mughal at 8/26/2010 1:07 PM Gravatar
buy mobile cell phones - Buy wholesale mobile cell phones and accessories at affordable price.
buy cameras - Buy wholesale cameras and accessories at affordable price.
buy computers - Buy wholesale computers and accessories at affordable price.
buy laptops - Buy wholesale laptops and accessories at affordable price.
buy keyboard and mouse - Buy wholesale keyboard and mouse at affordable price.
buy lcd monitors - Buy wholesale lcd monitors view sonic, sony, acer and more at affordable price.
buy printer and scanner - Buy wholesale printer, scanner and copier at affordable price.
buy speaker and woofer - Buy wholesale speaker and woofer at affordable price.

# re: Making WCF "Behave" - Part Four

left by pangsiyan at 8/26/2010 11:22 PM Gravatar
25.To support the ccie routing and switching trainingchanges, the Cisco 360 Learning Program for ccie lab trainingis being updated with new lessons on MPLS and Troubleshooting.The Program is the only authorized expert training currently aligned to ccie voice training

# re: Making WCF "Behave" - Part Four

left by SDSADD at 8/30/2010 5:34 AM Gravatar
MTS Converter is an excellent mts conversion software that can convert mts files to other video and audio formats. In addition, The MTS Converter can convert mts, ts, trp hd video files perfectly and quickly.
MTS Video Converter is used to convert M2TS, TS, MTS to AVI, WMV, MP4, 3GP, 3G2, MOV, FLV, MKV, SWF, MPG, etc. This MTS Converter not only owns powerful encoder technology, but also powerful decoder technology, like converting MPG, MPEG, VOB, DAT, MP4, M4V, RM, RMVB, WMV, ASF, MKV, AVI, 3GP, FLV, SWF, MPV, MOD, TOD, QT, MOV, DV, and other HD video to what you want
convert MTS to AVI |convert MTS to MPG, MPEG |convert MTS to H264 |convert MTS to MP4 |convert MTS to iPod |convert MTS to DVD |M2TS Converter |AVCHD Converter |HD Video Converter MTS Video Joiner |MTS Editor |
ASDSADSDAQWWWWW

# re: Making WCF "Behave" - Part Four

left by cheap nike air max shoes at 9/1/2010 2:48 AM Gravatar
People running and playing ball frequently have to decide which shoe they would prefer to go to purchase. Nike have a reputation of producing high-quality nike airmax and nice looking shoes. The great sneaker created by Nike company deserve to be recommended, for the sports equipment is superior to some. Running nike air max 90 shoes need to have certain features if they are considered to be good. Running shoes need to have certain features if they are considered to be good. Being light weight and comfortable, fitting good, offering high performance and great traction air max 95 should all be taken into account. The Nike Air Max, they are able to do these extremely well. By the advanced Nike Air Max Cushioning cheap air max system that found under the shoe performing perfectly at absorbing the shock generated from the running impact, the shoe nike air max uk is quite comfortable that it help you greatly on my runs. The shoe also fits well because of the great lacing system--an upper specialized in designing for runners. The upper is lightweight and it is mostly courtesy of a breathable mesh material, so a wonderful running experience generated. Its outsole also give you the excellent traction. As a result of a good rubber outsole the shoe has a great durability as well. Besides, its reasonable price reveal that it has the consumer in mind. For this reasons, it becomes a popular equipment among gabber music fans and an agreeable item in Hip Hop Culture.

# re: Making WCF "Behave" - Part Four

left by Solomon Mowry at 9/7/2010 10:34 PM Gravatar
From the mid-90s, through the efforts of power tools in China marketextension cord,glue gun,power socket the dominant position of domestic power tools evolved in recent years is to be further consolidatedpower strip Together all aspects of information display, power tools in the domestic marketpower strips,power socket,extension cords domestic sales of power tools has accounted for 90% of total sales, while a variety of imported brands, while only 10% of the market. Foreign power tool market, an expanding Chinese manufacturingbooster cable,tow rope,ratchet tiedowChina is a foreign power tool production base.Starting from the first half of 2008, domestic power tools brand prevailedglue stick,glue gun becoming the market leaderbooster cable,power cord,trouble light Experts believe that in another 5 years or 10 yearsbooster cable,glue gun,hot glue gun

# re: Making WCF "Behave" - Part Four

left by Terese Nease at 9/7/2010 10:35 PM Gravatar
battery clip power tool market in Chinapower strips,extension cords,booster cable the share of domestic power tools will increase theirbattery clip,tow rope,ratchet tie dowm,booster cablesm competitiveness will be reinforcedpower cable,speaker cable the main reason is that both the appearance of domestic power toolsoptical fiber Cable,copper clad aluminum,drawer runner,drawer slides or both internal quality basic or ready to compete and imported brands, but selling prices are only one-third of imported brands, and even lower.

# re: Making WCF "Behave" - Part Four

left by Thad Funai at 9/7/2010 10:35 PM Gravatar
If you are a first time home buyers newlywedsbar stoolswaiting chairs or middle-class urban life, choose the furniturereclinerleather sofasectional sofa panel furniture will be your first choice, with the environment, changing styles, sleekdinning chairtrouble light affordable and various advantages panel furniture has been the mainstream consumer group called "fixed" choicetheater chairtiered seating or even "panel furniture" has been fashionable in some degree with the young and the equal signoutdoor furniturerattan furniture the sales in

# re: Making WCF "Behave" - Part Four

left by Clementina Bethke at 9/7/2010 10:36 PM Gravatar
Internationally, renewable energy has been seen as an alternative energy can replace fossil fuels with the production of conventional energy resourcessolar collectorsolar water heater In 1995 and 2003, total global investment in renewable energy reached 100 billion U.Ssolar heatersolar energy dollars (only in 2003 invested 20 billion U.S. dollars), so that renewable energy and power generation capacity of 100 million kilowattssolar water heatersolar collectorat least 3 billion people to meet electricity demand. In the next 10 years, investments in renewable energy market is expected to reach 85 billion U.Ssolar water heatersolar collector dollars annually, and create millions of new jobs. Speaking of the past development of renewable energy, people will think first of all to the environment and climate changesolar water heatersolar collector It is now more consideration is energy security, employment opportunities and new economic growth points, advanced in technology development and manufacturing, as well as the support of consumers and consumer Xuanze. Although the renewable energy share of global energy consumption less than 2% (2003), but extended its application potential is enormoussolar lighting Table 1 shows
Title  
Name
Email (never displayed)
Url
Comments   
Please add 6 and 6 and type the answer here: