{"id":30583320,"url":"https://github.com/synergex/synnetasp","last_synced_at":"2026-02-13T17:04:05.893Z","repository":{"id":49652771,"uuid":"437052747","full_name":"Synergex/SynNetAsp","owner":"Synergex","description":"An example of how to use Synergy .NET code in ASP.NET applications","archived":false,"fork":false,"pushed_at":"2022-07-25T20:45:23.000Z","size":898,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-08-29T10:49:53.957Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Smarty","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Synergex.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-12-10T16:59:52.000Z","updated_at":"2022-08-04T16:56:11.000Z","dependencies_parsed_at":"2022-07-26T05:16:57.716Z","dependency_job_id":null,"html_url":"https://github.com/Synergex/SynNetAsp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Synergex/SynNetAsp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Synergex%2FSynNetAsp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Synergex%2FSynNetAsp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Synergex%2FSynNetAsp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Synergex%2FSynNetAsp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Synergex","download_url":"https://codeload.github.com/Synergex/SynNetAsp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Synergex%2FSynNetAsp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29412670,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T06:24:03.484Z","status":"ssl_error","status_checked_at":"2026-02-13T06:23:12.830Z","response_time":78,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-29T08:33:36.951Z","updated_at":"2026-02-13T17:04:05.880Z","avatar_url":"https://github.com/Synergex.png","language":"Smarty","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SynNetAsp\u003cbr /\u003e\n**Created Date:** 6/9/2014\u003cbr /\u003e\n**Last Updated:** 8/14/2014\u003cbr /\u003e\n**Description:** An example of how to use Synergy .NET code in ASP.NET applications\u003cbr /\u003e\n**Platforms:** Windows\u003cbr /\u003e\n**Products:** Synergy .NET\u003cbr /\u003e\n**Minimum Version:** 10.1.1c\u003cbr /\u003e\n**Author:** Steve Ives\n\u003chr\u003e\n\n**Additional Information:** There are some special considerations that must be taken into account when\nexecuting Synergy .NET code in any multi-threaded environment. Specifically a\ndeveloper must give special consideration to how the following entities are\nused within the code, all of which exist at the process level:\n\n* Channels\n* COMMON data\n* GLOBAL data\n* STATIC data or other entities\n* Environment variables\n\nIn traditional Synergy environments (when compiling with dbl.exe and executing\nyour code with dbr.exe) your code executes in a process that is dedicated to\nrunning your program. If other users are running the same code then they are\nrunning it in the context of a totally seperate process. This means that each\ninstance of the code has private channels and common data, etc.\n\nHowever, in Synergy .NET it is possible to execute code in environments where\nmulti-threading (running several \"threads\" of code all within a single process)\nis supported. Examples of multi-threaded environments include:\n\n* Code that you write to execute code in multiple threads\n* ASP.NET Web applications\n* Windows Communication Foundation (WCF) services\n\nThere are two main things that must be considered when running code in any\nmulti-threaded environment:\n\n1. By default code running in all threads share the same Channels, COMMON\ndata, GLOBAL data and STATICs.\n\n2. If the code uses xfServer then it is critical that any given entity of\ncode always executes on the same thread, and the code must execute\nxcall s_server_thread_init before accessing xfServer.\n\nIf you want each instance of code to be isolated from all other instances, so\nthat channels, COMMONs, GLOBALs, etc. are unique to that thread, then the way\nto achieve that is to load each instance of the code into a seperate \"AppDomain\",\nand if xfServer is being used then it must also be ensured that each instance\nof the code always executes on the same thread. The sample code included with\nthis example demonstrates how to do that when implementing a WCF service.\n\nIMPORTANT: This example code does not address the issue of environment variables.\nIf your application uses XCALL SETLOG to set environment variables at runtime,\nand if the values of those environment variables vary (based on user, or some\nother criteria) then you must implement that functionality in some other way.\nIn Synergy (including Syenrgy .NET) environment variables are always set at the\nprocess level, and AppDomain protection DOES NOT CHANGE THAT!\n\n================================================================================\nBusinessLogic Project\n\nThis project contains the Synergy .NET business logic, which is built in to the\n\"Services\" class. Note that there are several source files that contain partial\nclasses that make up the services class. The code is constructed in this way\nbecause most of it was code generated.\n\nThe AsyncServices class (again defined in several source files because of code\ngeneration) exposes asynchronous wrappers for the methods in the underlying\nServices class. The Web application interacts with the AsyncServices methods,\nwhich in turn call the methods in the Services class.\n\nThis pattern is important because of the way that the instance of the code\n(that is loaded into an AppDomain in the Web application) is being locked\nto a single thread to ensure that things like xfServer connections remain\nconsistent.\n\n================================================================================\nWebApplication Project\n\nThis is a C# ASP.NET Web project that has a reference to the BusinessLogic\nassembly and directly uses the classes exposed by that assembly.\n\nThere are two critical things to look at in this project.\n\n1. Note how the Util.GetAsyncServices() static method is used to obtain an\ninstance of the BusinessLogic classes to be used. Using this method\ncauses the underlying Synergy .NET assemblies to be loaded into a new\nAppDomain that is associated with the current users ASP.NET session.\nAll interactions with the Synergy .NET business logic should go via\nan instance of the AsyncServices class obtained via this method.\n\n2. Not the code in the Session_OnEnd method (in Global.asax.cs) that ensures\nthat the AppDomain containing the Synergy .NET code is cleaned up at the\nend of a users session.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsynergex%2Fsynnetasp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsynergex%2Fsynnetasp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsynergex%2Fsynnetasp/lists"}