none
Importing external managed .NET assemblies into CTS/IMS flows RRS feed

  • Question

  • Hello,

    While the IMS/CTS flows have some extensibility using the 'Run code' operator, it seems rather cumbersome, especially for implementing complex content processing algorithms or interactions with external systems.

    I am aware that there is no chance to create custom operators, but perhaps there's some way to import external managed .NET assemblies into a flow?

    Sunday, May 20, 2012 7:13 PM

Answers

  • Hi!

    Well, i have experimented with the initially proposed approach and failed. Or, to put it another way, experienced a "deferred success" ;)

    Afterwards, I decided to experiment with GAC. What I did was:

    1. Create a Proof of Concept .NET assembly with a single class that had a single method;

    2. Compile it under .NET 3.5;

    3. Sign the assembly with a strong key;

    4. Deploy to GAC;

    5. Reference the assembly from a flow, in a RunCode operator. I've used a Content Transformation Flow;

    6. Voila! I have successfully received output from external assembly. This means you can actually reuse your existing code base where apropriate, instead of reimplementing the required functionality. 

    It would be nice to get some comments from Microsoft, regarding this approach. Tips and tricks maybe? Perhaps plans on including the description of this into FSIS documentation?


    • Marked as answer by Andrey M_ Wednesday, June 13, 2012 10:16 PM
    • Edited by Andrey M_ Wednesday, June 13, 2012 10:19 PM
    Wednesday, June 13, 2012 10:15 PM

All replies

  • Yesterday I've accidentally noticed that FSIS documentation mentions two mystical PowerShell commands - Get-Modules and Install-Module. Apparently, FSIS hosts some sort of an internal .NET assembly repository, as Get-Modules returned quite a few of these. It's a pity that IMS/CTS architecture is such a black box.

    Anyway, this gave rise to an idea of how to import my external assemblies into FSIS runtime:

    1. Build the assembly under .NET 3.5, as FSIS 2010 runs on this .NET version;

    2. Install the assemby into the FSIS assembly repository via Install-Module cmdlet;

    3. Import the appropriate namespaces into FSIS RunCode operator;

    4. See if I can reference my classes from the imported assembly;

    5. ???

    6. Success (hopefully).

    Will post the results here once I have a chance to see if that works.

    Friday, June 8, 2012 2:33 PM
  • Hi Andrey,

    Please post the result of your research that is definitively something useful to us and the community. I also agree on your black box comment very much.

    Wednesday, June 13, 2012 7:45 AM
  • Hi!

    Well, i have experimented with the initially proposed approach and failed. Or, to put it another way, experienced a "deferred success" ;)

    Afterwards, I decided to experiment with GAC. What I did was:

    1. Create a Proof of Concept .NET assembly with a single class that had a single method;

    2. Compile it under .NET 3.5;

    3. Sign the assembly with a strong key;

    4. Deploy to GAC;

    5. Reference the assembly from a flow, in a RunCode operator. I've used a Content Transformation Flow;

    6. Voila! I have successfully received output from external assembly. This means you can actually reuse your existing code base where apropriate, instead of reimplementing the required functionality. 

    It would be nice to get some comments from Microsoft, regarding this approach. Tips and tricks maybe? Perhaps plans on including the description of this into FSIS documentation?


    • Marked as answer by Andrey M_ Wednesday, June 13, 2012 10:16 PM
    • Edited by Andrey M_ Wednesday, June 13, 2012 10:19 PM
    Wednesday, June 13, 2012 10:15 PM