Silverlight号称统一了客户端和服务端的语言平台,而C#编写的平台无关的一个类库,却无法被客户端和服务端同时引用,因为运行时不同。
如果你在客户端引用,限制是不能引用非Silverlight的类库;而如果你设计成Silverlight的类库,在ASP.net服务端引用这个Silverlight的类库时会有黄色感叹号,有人说去掉Windows等程序集就可以,还是难以使用。
那怎么办内,只有把类库设计在服务端,以WCF/WebService再转给Silverlight客户端。都是C#写的,都是微软的技术,即便只是计算返回A+B结果这样的运算的时候,却无法在客户端和服务端通过引用进行直接复用,只能以Copy-Parse在两端分别编译,或者要必须走Web发布。
显然Copy-Parse方式已无需多言,同样语法的C#代码复用必须舍近求远的从服务端以Web绕一圈,这两种方式都不是被开发者情愿使用的。
问题便来了,如果是这样,“统一了客户端和服务端的语言平台”有何意义,仅仅是VS把XML和SOAP包串行化和反串行解析的工具支持??
直接发HTTP请求和SOAP包同样可行,借助soapUI这样的工具,调用WCF/WebService,或者在服务端解析Request,客户端SDK无论是C#的HttpClient、Java的Apache包,还是Ajax,运行时无论是WinForm、ASP.net、WP,还是JSP、Android,都是可以行的,但这是这个靠的是Web和HTTP底层标准。于是统一语言便只剩下噱头,倒是MVVM模式还令人欣慰。