Total Pageviews

Wednesday, December 29, 2010

How .Net Assemblies work

Assemblies are the building blocks of .NET Framework applications; they form the fundamental unit of deployment, version control, reuse, activation scoping, and security permissions.

An assembly is a collection of types and resources that are built to work together and form a logical unit of functionality. An assembly provides the common language runtime with the information it needs to be aware of type implementations.

An assembly is a different name for the executable files in .Net. A .NET executable is actually the source code of an IL (Intermediate Language) program

Just in time compiler in .net is---

When a .net assembly is executed, u r actually calling the CLR (common language runtime ) to compile the assembly into native code (IL) called the JIT.

In .NET, every assembly starts with something called a manifest that contains metadata (data about data) telling the CLR what it needs to know to execute the assembly instructions.

Assemblies can be static or dynamic. Static assemblies can include .NET Framework types (interfaces and classes), as well as resources for the assembly (bitmaps, JPEG files, resource files, and so on). Static assemblies are stored on disk in portable executable (PE) files. You can also use the .NET Framework to create dynamic assemblies, which are run directly from memory and are not saved to disk before execution. You can save dynamic assemblies to disk after they have executed.

You can run different versions of the same assembly with same name but different version side by side.
An Asssembly can be a private or shared.
If an assembly is to be shared among several programs then it need to be shared in GAC. To put an assembly in GAC, it should have a strong name.

Assembly Manifest

Every assembly, whether static or dynamic, contains a collection of data that describes how the elements in the assembly relate to each other. The assembly manifest contains this assembly metadata. An assembly manifest contains all the metadata needed to specify the assembly's version requirements and security identity, and all metadata needed to define the scope of the assembly and resolve references to resources and classes. The assembly manifest can be stored in either a PE file (an .exe or .dll) with Microsoft intermediate language (MSIL) code or in a standalone PE file that contains only assembly manifest information.
http://visualbasic.about.com/od/usingvbnet/a/asmnet01_2.htm

Monday, December 20, 2010

Routing Services in biztalk

Routing services are used for routing the messages to the target endpoint based on the content of the message.

http://social.msdn.microsoft.com/Forums/en-US/biztalkgeneral/thread/82112f67-9bc4-4b9a-b065-6af942e643c9/

http://technet.microsoft.com/en-us/library/ee236697(BTS.10).aspx


Using BizTalk as a router will be a less lightweight approach, but will enhance flexibility as you can route over multiple protocols and technology (through its adapters). Routing can be done message-based based on certain properties, but since you do not want to deploy any schema's you will have to go for content-based routing principle using orchestration and xpath (retrieving soap-action). Since you want to use un-typed messages this would be the approach to follow. Regarding performance it will be less performant as it's solution is pub/sub (BizTalk uses database) compared to WCF, where routing will take place in memory. A third option (alternative) can be using ESB Toolkit. In the end it depends what you want to achieve based on requirements and long-term strategy for your routing solution.

Regards,
Steef-Jan Wiggers
MCTS BizTalk Server
http://soa-thoughts.blogspot.com/

What is are Pipelines in Biztalk Server ?

  • The BizTalk adapters take up the responsibility of interacting with the end systems and getting the data. 
  • it is the pipelines transform the data into something that BizTalk can understand – Xml.
  • pipelines form a channel for the messages from the adapters to the message box where they are finally delivered. After the message leaves the pipeline, the messaging engine is responsible for the further processing of the messages. The processing can include routing or executing a business process – as has been defined by the developer.
 Note :
The messaging engine works on a certain format of data that it terms as a message. This is necessarily a XML message with a specific format containing the message headers and body parts. The Adapter is explicitly responsible for interacting directly with the end systems. To isolate the workload, the adapter does not take care of any kind of formatting of the message so that the message is understood by the Messaging Engine. This is exactly the reason where the pipelines play their role. The pipelines accept the data from the adapters and work on it to build up the Message that can be understood by the messaging engine.


http://blogs.msdn.com/b/sanket/archive/2006/06/13/pipelines-in-biztalk-2006.aspx 

http://www.c-sharpcorner.com/UploadFile/johncharles/89/Default.aspx

What is a Throttling in WCF ?

While not a direct instance management technique, throttling enables you to restrain client connections and the load they place on your service. Throttling allows you to avoid maxing-out your service and the underlying resources it allocates and uses.
The default throttling setting is unlimited. When engaged, if the throttling settings you configured are exceeded, Windows Communication Foundation automatically places the pending callers in a queue and serves them out of the queue in order. Throttling is done per service type—that is, it affects all instances of the service and all its endpoints. This is done by associating the throttle with every channel dispatcher the service uses.
With a per-session service, Max Instances is both the total number of concurrently active instances and the number of concurrent sessions. With a shared-session service, Max Instances is just the total number of concurrently active instances (since each shared instance can have multiple sessions). With a per-call service, the number of instances is actually the same as the number of concurrent calls. Consequently, the maximum number of instances with a per-call service is the minimum of Max Instances and Max Concurrent Calls. Max Instances is ignored with a singleton service since it can only have a single instance anyway.
Throttling is typically configured in the config file. This enables you to throttle the same service code differently over time or across deployment sites. The host can also programmatically configure throttling based on some run-time decisions.

Using the behaviorConfiguration tag you add to your service a custom behavior that sets throttled values.
           
<system.serviceModel>
    <services>
        <service type = "MyService"
                 behaviorConfiguration = "ThrottledBehavior">
        ...
        </service>
    </services>
    <behaviors>
        <behavior name="ThrottledBehavior">
            <throttling
               maxConcurrentCalls = "12"
               maxConnections = "34"
               maxInstances = "56"
            />
        </behavior>
    </behaviors>
</system.serviceModel>
The host process can programmatically throttle the service based on some run-time parameters. You can only do so before the host is opened. Although the host can override the throttling behavior found in the config file by removing the configuration and adding its own, you typically should provide a programmatic throttling behavior only when there is no throttling behavior in the config file.
The throttled values can be read at run time by service developers for diagnostics and analysis purposes. The service instance can access at run time its throttled properties from its dispatcher. First, obtain a reference to the host from the operation context. The host base class ServiceHostBase offers the read-only ChannelDispatchers property—a strongly typed collection of ChannelDispatcherBase objects. Each item in the collection is of the type ChannelDispatcher. ChannelDispatcher offers the property ServiceThrottle which contains the configured throttled values .

Conclusion
While every application is unique when it comes to scalability, performance, and throughput, Windows Communication Foundation does offer canonical instance management techniques that are applicable across the range of applications, thus enabling a wide variety of scenarios and programming models. Understanding Windows Communication Foundation instance management and choosing the right activation mode is critical.Yet applying each mode is surprisingly easy to accomplish. In addition, you can augment the straightforward modes with demarcating operations and instance deactivation.

My Guide to WCF
Juval Lowy is a software architect with IDesign providing Windows Communication Foundation training and architecture consulting. Juval is currently working on a comprehensive Windows Communication Foundation book. He is also the Microsoft Regional Director for the Silicon Valley. Contact Juval at www.idesign.net.

What is an adapter in Biztalk Server ?

  • An adapter is used to communicate with other applications to support the interoperability by the Biztalk server.
  • The BizTalk Adapter Pack provides a simplified way to connect line of business systems with any custom .NET application.  
  • BizTalk Server provides additional capabilities such as service orchestration in SOA environments, EDI, RFID and business rules.
  • With the BizTalk Adapter Pack customers can start with simple point-to-point connectivity solutions and then simply upgrade to BizTalk Server as their needs evolve. 
  • This means that our customers have a broader set of choices for connecting systems across platforms.
  • We can achieve easy interoperability with multiple LOB applications (like SAP, Siebel or Oracle Applications) simultaneously with the Adapter Pack.  
  • The adapters do not rely on the programming model/framework of individual Microsoft products like BizTalk Server, SQL Server or SharePoint Server but are built on the WCF components in the .NET Framework.
  • This allows us to do simple point-to-point connectivity solutions and simply move information to BizTalk Server, SQL Server or SharePoint Server.
  • WE can use the Adapter Pack with a broad set of choices for cross-platform integration 
For more details go tohttp://www.microsoft.com/biztalk/en/us/adapter-pack.aspx

    What is a Host Instance in Biztalk Server ?

    A host instance is the physical representation of a host on a specific server.
    A host is a logical representation of the Microsoft windows processes that  run /execute the biztalk arfiacts -- orchestrations , maps etc.,

    What is a Host in Biztalk Server ?

    • A host is a logical representation of a Microsoft Windows process that executes BizTalk Server artifacts such as send ports and orchestrations. 
    • A host can be either an in-process host, which means it is owned and managed by BizTalk Server, or an isolated host, which means that the BizTalk Server code is running in a process that is not controlled by BizTalk Server. 
    • A good example of an isolated host is Internet Information Services (IIS), which hosts the receive functionality of the HTTP and SOAP adapters.