GithubHelp home page GithubHelp logo

Comments (6)

xljiulang avatar xljiulang commented on June 12, 2024

虽然感觉不多,但也没有好办法,反射部分与Type和Attribute相关的API在uwp上是缺失的,只有TcpServerBase这层移植工作量少。
我是觉得,Networksocket更多是作服务端,所以就像移不到uwp,影响不大。其实整个工程不改一行代码就可以在MONO上编译,这个可以提供另一种移植方案。

from networksocket.

yuaom avatar yuaom commented on June 12, 2024

@xljiulang 反射的Type和Attribute部分并没有缺少
type部是把方法转移到了Type.GetTypeInfo() 的TypeInfo中
Attributes 是改成了方法 GetCustomAttributes
我已经将NetworkSocket成功移植到uwp和.net core中了,移植最大的麻烦是json系列化部分,需要更换成Newtonsoft.Json

from networksocket.

xljiulang avatar xljiulang commented on June 12, 2024

感谢提醒,.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.

xljiulang avatar xljiulang commented on June 12, 2024

@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.

xljiulang avatar xljiulang commented on June 12, 2024

@loqix
再次提交了一个更新,把json序列化、动态序列化和类型转换都定义在IJsonSerializer接口里了,自带的JObject变成了NetworkSocket.WebSocket.Fast.DefaultJsonSerializer动态反序列化的实现。
现在要移植的话,直接删除NetworkSocket.WebSocket.Fast.DefaultJsonSerializer这个类,使用示例里的Demo\WebSocket\JsonNetSerializer这个类替换就可以了,JsonNetSerializer是由Json.net实现的。
此下,组件里所有的默认序列化类,都可以很方便的从JavaScriptSerializer替换为Json.net实现。

from networksocket.

yuaom avatar yuaom commented on June 12, 2024

thx.

from networksocket.

Related Issues (10)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.