Giter Club home page Giter Club logo

ecommon's Introduction

ecommon

A common c# language infrastructure library.

ecommon's People

Contributors

geffzhang avatar tangxuehua avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ecommon's Issues

使用dapper扩展的SqlMapperExtensions的问题

GetPropertyInfos 会把当前传过来的对象缓存到Cache里面。
如果我传入的是同一个对象。但是更新的字段是不一样的。这样缓存生成的sql语句就是不正确的。
会造成更新失败。请作者查看一下

RemotingServer支持消息推送

  1. 支持给当前连接到这个RemotingServer的所有RemotingClient推送消息;
  2. 支持给指定的RemotingClient推送消息,通过IP加端口来指定;
  3. 支持查询连接到当前RemotingServer的所有RemotingClient;

使用场景,比如配置修改了,要推送新配置给相关的应用服务器。

由于日志类库引用问题导致消费者服务崩溃

崩溃后在系统错误中找到如下错误:

Failed to stop service. System.InvalidOperationException: An unhandled exception was detected ---> System.NullReferenceException: Object reference not set to an instance of an object.
at ECommon.Scheduling.ScheduleService.TaskCallback(Object obj) in F:\MyProjects\ecommon\src\ECommon\Scheduling\ScheduleService.cs:line 61
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.TimerQueueTimer.CallCallback()
at System.Threading.TimerQueueTimer.Fire()
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
--- End of inner exception stack trace ---
at Topshelf.Runtime.Windows.WindowsServiceHost.OnStop()
at System.ServiceProcess.ServiceBase.DeferredStop()

Remoting 通信建议

建议在SocketRemotingClient类的消息处理改为异步处理,目前出现如果上一个消息处理慢导致第二个消息无法即时处理

1.4.7版本处此是否可能造成内存溢出

你好:
我在项目中正在使用1.4.7版本,PC程序作为客户端,硬件设备作为服务端。设备正常开机时内存使用正常,由于程序运行在服务器上,所以晚上设备关机后程序仍然会周期性尝试连接设备,第二一早上会发现程序内存达到2G多,正常运行时400MB左右。
我查了一下代码,发现:
public void ReconnectToServer()
{
_connection.ConnectionClosed -= OnConnectionClosed;
_connection = new TcpClientConnector(_setting.TcpConfiguration).ConnectTo(Guid.NewGuid(), _localEndPoint, _serverEndPoint, OnConnectionEstablished, OnConnectionFailed);
_connection.ConnectionClosed += OnConnectionClosed;
_connection.ReceiveAsync(OnRawDataReceived);

在每次重连时会创建一个新的TcpClientConnector对象,而在TcpClientConnector中会初始化一个Timer:
_timer = new Timer(TimerCallback, null, CheckPeriodMs, Timeout.Infinite);

而这个Timer在重连之前没有得到显式释放,这会不会是造成不断重连多次后内存占用越来越大?

尝试运行在linux平台异常

汤总:
我尝试把NameServer和Broker放到docker for linux,抛出了ConsoleEventHandlerService.cs未找到kernel32.dll的异常。
有什么处理方法吗?

优化SocketRemotingClient的实现

目前SocketRemotingClient发送消息还不能把网卡压满,而CPU也还没被完全使用,说明目前发送消息的实现还有优化空间。需要思考如何改进发送消息的性能。目前测试结果为:
两台4核8G的阿里云ECS服务器,一台部署client,一台部署server;client发送消息最大只能使用500Mbps,期望能达到1Gbps,也就是千兆网卡都应该要能压满才对。
谁有兴趣帮助优化这块的设计?

无法安装程序包“ECommon 2.6.0”

严重性 代码 说明 项目 文件 行 禁止显示状态
错误 无法安装程序包“ECommon 2.6.0”。你正在尝试将此程序包安装到目标为“.NETFramework,Version=v4.5”的项目中,但该程序包不包含任何与该框架兼容的程序集引用或内容文件。有关详细信息,请联系程序包作者。 0

ECommon 写文件能否提前创建

ECommon中文件写入过程里,会自动进行分区处理,即规定每个文件大小为1G,当写文件写不下时会自动创建新的文件,而创建文件只是通过流创建是不耗时的,但是由于对流进行了封装为chunk,创建chunk会耗时40--50ms左右,虽然对于大多数应用来说1G就能够用很长时间,40--50ms其实也是能接受的。
但是能否采用文件提前创建、缓存多个写入流的方式,即在开始创建chunk时,一次性创建多个文件例如5个,在内存中缓存5个流,开始时写入流为第一个,当写不下的时候,直接切换第二个写入流,并移除第一个流。当写到第四个文件的时候,异步开启一个线程,再创建五个文件,并再缓存这5个流,也可以就限制内存就5个,那么只缓存3个新的流,或者根本不缓存流只是在用的时候打开流。另外在异步创建的时候也可以对磁盘大小采取一定的判断,以提出预警。

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.