Understanding the Binder – Part 1

Understanding the Binder – Part 1

  • Comments 68

 

This is an introductory post on the internals of CLR Binder.   
 

What does the Binder do?

CLR's Binder is a piece of code that, when given an assembly name, determines where the assembly is and binds to it.

So how does the Binder locate assemblies?

Let's assume that you are loading an assembly (let’s call it Foo.dll for the sake of simplicity and sheer lack of imagination) as follows:

Assembly.Load(“Foo, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”);

(As a side note, please make sure that you always specify the fully specified reference of the assembly that you are trying to load. Avoid partial binds at all costs – unless you really know what you’re doing, partial binds are a recipe for disaster. We’ll cover this in more detail in a future post.)

 

The Binder goes through these steps to determine the desired assembly and it’s location:

1) Applying policy

By 'policy', we are referring to different ways in a user can configure assembly binding – to put it simply, think of this as the ability to substitute an assembly name with another.

Now, why would you want to do this?

By providing an option to specify configure assembly binding, developers and administrators can control which versions of assemblies an application will load and use, and provides more flexibility over the way in which managed applications run on specific machines.

Typically, there are three ways in which assembly binding behavior can be configured – you can specify an app.config file, a publisher policy or a machine configuration file (this is not the complete list of the ways in which policy can be specified, but for the sake of simplicity, we leave it at this for now).

The Binder looks at these config files and evaluates the ‘right assembly’ to go pick up.

2) Has the assembly been loaded before?

If the assembly has been loaded before, the runtime uses the assembly already loaded in the same context (notice how the word ‘context’ sneaked in there – we’ll talk about contexts in detail in a future post). Similarly, if loading the same assembly previously failed, subsequent loads are failed without re-trying to load the assembly.

3) Is it in the GAC?

For strong named assemblies, the Binder then looks into the contents of the Global Assembly Cache or the GAC (which is typically used to store assemblies that are shared by more than one application) and if found, picks this up.

4) Where else could it be?

If the Binder finds no match in the previous steps, it checks if the user has already specified locations to pick up the assembly from. This could be in the form of <codeBase> element in your config file, or using the AssemblyName object,(or using LoadFrom or FoadFile). The Binder gets the path and checks for the assembly at this location.

The Binder then resorts to what is called ‘probing’  - this is the process where the Binder starts looking at a specific set of locations for the assembly, the first location being the ‘appbase’.

'Appbase' is short for 'application base' or which is the root directory where the application to be executed resides in. The Binder examines this directory and it’s subdirectories to find a match for the assembly required to be located.

 

This post does over-simplify the binding process greatly, but covers the basic aspects of assembly binding in the process. We will talk about each section in detail (and also cover common gotchas)  in future posts in this series.

 

Aarthi Ramamurthy

PM, CLR

Leave a Comment
  • Please add 4 and 6 and type the answer here:
  • Post
  • 自分のほむぺ初公開でぇす。やっと完成したのでみんなに見てもらいたくて★カキコしました。意見ある方めぇるまってまぁす。 ggg.nj@docomo.ne.jp

  • セクース好きな女性が集まる★男性との性なる夜を求めた女性達が多数登録しております!セフレ出会いサイト☆セクフレ☆で夏休み中でヒマを持て余している女子○生から、刺激を求めるOLまでみんなまとめてオイシイ関係になっちゃおう

  • 夏休みで気軽に家出する女子○生が急増しています。しかし家出したはいいものの泊る所やお金が無い彼女たちは、掲示板などで泊めてくれる男性を探す子も多いようです。当掲示板にも夏休みに入ってから通常の3倍以上のメッセージが寄せられています

  • あなたの真のH度を診断できるHチェッカー!コンパや飲み会で盛り上がること間違いなしのおもしろツールでみんなと盛り上がろう

  • 今夏も新たな出会いを経験してみませんか?当サイトは円交の逆、つまり女性が男性を円助する『逆円交際』を提供します。未経験の方でも気軽に遊べる大人のマッチングシステムです。年齢上限・容姿・経験一切問いません。男性の方は無料で登録して頂けます。貴方も新たな出会いを経験してみませんか

  • 今最もアツイバイトは人妻とのセフレ契約です。当サイトではお金を払ってでもセフレがほしい人妻が集まり、男性会員様との逆援生活を待っています。当サイトで欲求不満の女性との出会いをしてみませんか

  • 素人ホストでは、男性のテクニック次第で女性会員様から高額な謝礼がもらえます。欲求不満な人妻や、男性と出会いが無い女性達が当サイトで男性を求めていらっしゃいます。興味のある方はTOPページからどうぞ

  • さゆのプロフィールが完成しましたぁ。記念すべき初プロフをネットに公開してみました。ドキドキしてるので優しい感想メールしてくれたら心和むかもでぇす po.tomoe.oq@docomo.ne.jp

  • 当サイトではセレブ熟女の性欲を満たしてくれる男性に高額謝礼をお支払いし、デートや一晩のSEX、月契約など選べる逆援出会いの場を作っております。アルバイト感覚でもお待ちしておりますので当サイトで無料登録をどうぞ

  • カワイイ子ほど家出してあそんでみたくなるようです。家出掲示板でそのような子と出会ってみませんか?彼女たちは夕食をおごってあげるだけでお礼にHなご奉仕をしてくれちゃったりします

  • 出会ぃも今は逆援助!オンナがオトコを買う時代になりました。当サイトでは逆援希望のセレブ女性が男性を自由に選べるシステムを採用しています。経済的に成功を収めた女性ほど金銭面は豊かですが愛に飢えているのです。興味のある方はどうぞ

  • 即ハメセレブは完全無料でご利用できる出会いコミュニティです。今までにない実績で、あなたの希望に合った人をお探しします。毎月考えられない豪華なイベントを開催しているので出会いを保障します

  • 夏真っ盛り!女の子は開放的な気分で一人Hしたくてウズウズしてるっ!貴方は女の子のオ○ニーを見て気分を高めてあげてネ!もちろん、お手伝いしてもオッケーだよ!さぁ、今すぐ救援部にアクセスしよっ

  • 大好評の逆ナンイベントが毎週開催決定!素敵な出会いのきっかけ探し・アイナビにきませんか?積極的な出会いを求める人達なら無料参加OK!あなたもほんの少しの勇気で素敵な彼氏・彼女をGETしちゃおう!

  • 夏休みで家出する女の子が急増しています。最初はマンガ喫茶やネットカフェで過ごすことが多いようですが、すぐにお小遣いが無くなり家出掲示板で泊めてくれたり遊んでくれる男性を探す子が多いようです。当サイトはそんな女の子達をサポートしたいという人たちと困っている女性たちの為のサイトです

Page 4 of 5 (68 items) 12345