public partial class Form1 : Form
{
public Form1()
InitializeComponent();
}
private void welcomeButton_Click(object sender, EventArgs e)
SomeService service = new SomeService();
welcomeOutput.AppendText(service.WelcomeMessage(nameTextBox.Text));
[RunAt("Server")]
public class SomeService
public string WelcomeMessage(string name)
return string.Format("Welcome: {0}", name);
// Fields
private Guid __id;
private static ClientMap __map;
private static string __uri;
// Methods
public SomeService()
object[] parameters = new object[0];
this.__id = Proxy.Call<Guid>(__Serializer.GetInstance(), __GetUri(), "SomeService", 1, null, null, parameters);
__GetMap().Add(this.__id, this);
private SomeService(__TypeSerializer __typeSerializer)
private static ClientMap __GetMap()
if (__map == null)
__map = new ClientMap();
return __map;
private static string __GetUri()
if (__uri == null)
string service = ConfigurationManager.AppSettings.Get("Server");
if (service == null)
throw new ArgumentException("Could not find application configuration entry for 'Server'.");
__uri = ServiceLocation.GetService(service, "__TierSplit.aspx");
return __uri;
object[] parameters = new object[] { name };
return Proxy.Call<string>(__Serializer.GetInstance(), __GetUri(), "SomeService", 0, this, null, parameters);
// Nested Types
public sealed class __TypeSerializer : AbstractTypeSerializer<SomeService>
public override SomeService Deserialize(ISerializer serializer, IObjectReader reader)
reader.ReadSeparator();
reader.ReadMemberName("id");
Guid id = new Guid(reader.ReadPrimitive());
ClientMap map = SomeService.__GetMap();
SomeService byID = (SomeService)map.GetByID(id);
if (byID == null)
byID = new SomeService(this);
byID.__id = id;
map.Add(id, byID);
return byID;
public override void Serialize(ISerializer serializer, IObjectWriter writer, SomeService value)
writer.WriteSeparator();
writer.WriteMemberName("id");
writer.WritePrimitive(value.__id.ToString());
public sealed class __Service : Service<SomeService>
public override string get_Name()
return "SomeService";
protected override void ProcessMethod(Service<SomeService>.Call call)
switch (call.GetMethod())
case 0:
call.Return<string>(call.GetInstance().WelcomeMessage(call.GetParameter<string>(0)));
break;
case 1:
call.Return<Guid>(call.AddInstance(new SomeService()));
default:
throw new InvalidMethodException();