# Submitting .Net Lambdas

<span class="rvts6">The platform allows users to run Spatial Lambdas that are compiled as standard .Net assemblies.</span>

<span class="rvts6">Currently, .Net assemblies are supported only for REPORT programs. GENERATOR and VIEW programs must still be created using Python.</span>

<span class="rvts6">Spatial operations using .Net assemblies see a performance increase over 30 times compared to an equivalent workload running in Python.</span>

<span class="rvts6">  
</span>

##### <span class="rvts16">Creating the assembly</span>

<span class="rvts6">  
</span>

<span class="rvts6">In order to create a .Net assembly, the developer will follow these steps:</span>

1. <span class="rvts6">Create a .Net Standard Class Library project</span>
2. <span class="rvts6">Add the .Net VoxelFarmClientLibrary to the project</span>
3. <span class="rvts6">Create a class in the Library that implements the desired Spatial Lambda interface (for instance IVoxelFarmReportLambda)</span>
4. <span class="rvts6">Compile the assembly into a DLL, if necessary, package the DLL and dependencies into a ZIP file</span>

##### <span class="rvts16">Creating/updating the PROGRAM entity</span>

<span class="rvts6">Before running the Spatial Lambda, the user must create a PROGRAM entity that contains the .Net assembly for the Lambda code.</span>

<span class="rvts6">The user can choose between two options when it comes to creating the new entity:</span>

<span class="rvts6">  
</span>

##### <span class="rvts18">1. Using the admin Web UI:</span>

<span class="rvts6">  
</span>

<span class="rvts6">First, select Add &gt; .Net Lambda from the Catalog section in the UI:</span>

<span class="rvts6">  
</span>

![](https://demo.voxelfarm.com/help/lib/NewItem71.png)

<span class="rvts6">  
</span>

<span class="rvts6">Provide a name for the program, and information about the Lambda class that will be used as entrypoint:</span>

<span class="rvts6">  
</span>

![](https://demo.voxelfarm.com/help/lib/NewItem72.png)

<span class="rvts6">  
</span>

<span class="rvts6">Click on "Choose file" to select one or multiple files that will be associated to the Spatial Lambda.</span>

<span class="rvts6">Once the use clicks on "Create", the platform validates the code and discovers which inputs the Lambda expects. From this point on, the Lambda is available for running as a spatial report.</span>

##### <span class="rvts18">2. Using the REST API:</span>

<span class="rvts6">  
</span>

<span class="rvts6">The user can create and validate a new PROGRAM entity by making this sequence of REST calls:</span>

<span class="rvts6">  
</span>

1. <span class="rvts6">Create a PROGRAM entity, specifying "NETASM" in the code\_origin property. See the [Triggering Reports](https://help.mystart.com/books/developer-manual/page/triggering-reports "Triggering Reports")</span><span class="rvts6"> example to see how this is performed for a Python program.</span>
2. <span class="rvts6">Upload the assembly files as an attachment to the entity. See the [Uploading Entity Files](https://help.mystart.com/books/developer-manual/page/uploading-entity-files "Uploading Entity Files")</span><span class="rvts6"> section.</span>
3. <span class="rvts6">Request the system to process the new program. This is so the platform can discover which inputs this program will require later, once it is ran by users. See the [Triggering Reports](https://help.mystart.com/books/developer-manual/page/triggering-reports "Triggering Reports")</span><span class="rvts6"> topic for more information on how to trigger a processing job.</span>