Comments (6)
虽然感觉不多,但也没有好办法,反射部分与Type和Attribute相关的API在uwp上是缺失的,只有TcpServerBase这层移植工作量少。
我是觉得,Networksocket更多是作服务端,所以就像移不到uwp,影响不大。其实整个工程不改一行代码就可以在MONO上编译,这个可以提供另一种移植方案。
from networksocket.
@xljiulang 反射的Type和Attribute部分并没有缺少
type部是把方法转移到了Type.GetTypeInfo() 的TypeInfo中
Attributes 是改成了方法 GetCustomAttributes
我已经将NetworkSocket成功移植到uwp和.net core中了,移植最大的麻烦是json系列化部分,需要更换成Newtonsoft.Json
from networksocket.
感谢提醒,.net core我没用过,所以不知道有这些转移,还没有翻过.net core代码。
NetworkSocket.Fast.DefaultSerializer、NetworkSocket.WebSocket.Fast.DefaultJsonSerializer和NetworkSocket.WebSocket.Fast.JObject三个internal对象都依赖于System.Web.Script.Serialization.JavaScriptSerializer,前两个好替换,JObject比较棘手,但使用json.net实现应该也不是非常难。
还有一些URL编解码,目前是依赖system.web.dll
from networksocket.
@loqix
现在从JObject分离出一个Converter类,自带的JObject可以使用json.net的JObject替代,FastWebSocketCommon里几处调用到的Converter.Cast方法,可以采用new Converter(new jsonNetConvert()).Convert()来替代,以支持json.net的JToken类型转换为Api参数的数据类型。
此处要只需要实现jsonNetConvert这个转换单元:
class jsonNetConvert : IConvert
{
public bool Convert(Converter converter, object value, Type targetType, out object result)
{
var jToken = value as Newtonsoft.Json.Linq.JToken;
if (jToken == null)
{
result = null;
return false;
}
result = jToken.ToObject(targetType);
return true;
}
}
from networksocket.
@loqix
再次提交了一个更新,把json序列化、动态序列化和类型转换都定义在IJsonSerializer接口里了,自带的JObject变成了NetworkSocket.WebSocket.Fast.DefaultJsonSerializer动态反序列化的实现。
现在要移植的话,直接删除NetworkSocket.WebSocket.Fast.DefaultJsonSerializer这个类,使用示例里的Demo\WebSocket\JsonNetSerializer这个类替换就可以了,JsonNetSerializer是由Json.net实现的。
此下,组件里所有的默认序列化类,都可以很方便的从JavaScriptSerializer替换为Json.net实现。
from networksocket.
thx.
from networksocket.
Related Issues (10)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from networksocket.