未找到

未发布 移动开发UI工具包Xamarin.Forms v2.3.5-pre6发布
by Harriet666 keys 分享 1500454563990
Xamarin.Forms是一个跨平台、原生支持UI的工具包,允许开发者轻松创建用户界面。这些用户界面可以通过安卓、iOS和Windows Phone共享,使用目标平台的原生控件进行渲染,让每个平台上Xamarin.Forms应用的界面外观搭配得当。
Xamarin
 
v2.3.5-pre6更新内容
  • Xamarin.Forms现在与.NET Standard项目兼容! 并非所有创建功能都能正常工作。
  • 行为变化:Device.RuntimePlatform现在在WinRT和UWP上返回。
  • 行为变化:使用新的AutomationProperties可能会影响Android上的UI测试。 AutomationId、Name和HelpText都将设置本机ContentDescription属性,Name或HelpText优先于AutomationId(Name和HelpText将被级联)。 这意味着如果在该元素上也设置了Name或HelpText,那么查找AutomationId的任何测试都将失败。 要解决此问题,请在此方案中更改您的UI测试以查找Name/HelpText的值。
  • 行为变化:在WinRT/UWP上调用焦点选择器现在将打开下拉列表。
  • 弃用:Android IVisualElementRenderer.ViewGroup现已过时,请改用View。
未发布 .NET Core 2将Visual Basic带到了Linux和macOS平台
by Harriet666 keys 分享 1504087156993
Microsoft已经愈加接近将Visual Basic划为.NET Core平台上的一等公民。作为.NET Core 2发行版的一部分,VB开发者现在可以编写针对.NET Standard 2.0的控制台应用程序和类库,并且可以兼容多个平台。这就意味着运行在Windows上的可执行文件或者类库也能够运行在macOS和Linux上。

一旦安装了.NET Core 2 SDK,你就可以开始创建VB项目了。由于这是.NET Core平台,Visual Studio有助于编码,但是它并不是必需的。.NET Core 2.0中有四个VB模板:
  • 控制台应用程序:Hello World程序样例 
  • 类库 
  • 单元测试工程 
  • xUnit单元测试工程 

在命令提示行中,你可以执行:
dotnet –version
来确认你使用的是.NET Core 2.0版本或者是更高的版本。然后你需要创建一个新目录来保存你的工程,并且运行dotnet new来根据其中一个模板创建一个新工程。之后,执行dotnet run来运行这个工程:
mkdir vbcore
cd vbcore
dotnet new console -lang VB
dotnet run
但是这并不意味着Microsoft的工作都已经全部完成,因为目前还有剩余任务要做,例如,让.NET Core平台上的VB开发者拥有使用ASP .NET Core的能力。Microsofs 的Immo Landwerth说,针对于此的模版尚在进行中,这个版本尚不可用。尽管如此,VB开发者现在可以针对macOS和Linux编写跨平台代码了,在此之前,这是不可能完成的。
未发布 矢量图形引擎库VectorDraw Developer Framework 更新v7.7011.0.3
by Harriet666 keys 分享 1492073675755

VectorDraw Developer Framework

VectorDraw Developer Framework(VDF)是一款构建2D、3D图形并用于应用程序可视化的矢量图形引擎库。有了VDF提供的功能,您可以轻松地创建、编辑、管理、输出、输入和打印2D和3D图形文件。该库还支持许多矢量和栅格输入和输出格式,包括本地PDF和SVG导出。

VectorDraw Developer Framework点击下载>>>

VectorDraw Developer Framework(VDF)v7.7011.0.3更新内容:

WebJS

新增需求

版本需求

7.7011.0.1

70001006 支持webgl渲染模式的webgl图像
70001016 支持webgl节剪辑
70001019 支持使用scriptCommand hatch绘制阴影边框                             
70001024 使用鼠标进行缩放
70001029 实体选择回调                                                                                                                   

Converter

新增需求

版本需求
7.7011.0.170001015 具有相同名称的vdXproperties导出不正确                                                                

漏洞

版本需求 
7.7011.0.170001009 DXF代理对象读取出错 
70001020 某些DWF文件未正确打开 
70001025 DGN Xrefs的问题  
70001033 Layout paper未正确初始化                                           
7.7011.0.270001040 SPLines在DWG中未正确导出                                                                                      

vdDXF

漏洞

版本漏洞
7.7011.0.170001011 HANDLE类型的XProperty在DXF中未正确导出                                                         

Engine

新增需求

版本需求
7.7011.0.170001008 改进ClearEraseItems方法的速度
70001012 MergeSelection方法用于传递对象的GUIDs                                 
70001027 虚拟机中的OpenGL问题
70001034 能够设置UCS图标字母的颜色
7.7011.0.270001036 外部引用对话框有一个支持路径按钮                                                                            

漏洞

版本漏洞
7.7011.0.170001007 当文本具有斜角时,EditText和AddText命令不会正确显示光标             
70001010 点上的多点折线未正确显示
70001013 Inserts Inside Blocks层是处于ON状态时仍不可见
70001014 图层组和滤镜在删除后仍会保存到DXF中
70001017 图像在nonused Block中使用时会被删除
70001018 线型折线显示不正确
70001021 RenderToGraphics和RenderToDC会清除目标图形上下文的背景
70001022 尺寸对象未正确导入PDF
70001026 在vdraw Idle中很少会随机出现exeption
70001030 Bhatch命令为创建的polyhatch添加白色作为fillcolor
70001031 用户选择部分文字的拉伸命令会出现错误
70001032 vdMtext对象没有对齐
7.7011.0.270001035 vdLayout DrawCCSAxis showOnOrigin参数无法正常工作
70001037 用户尝试打开特定文件后应用程序瘫痪
70001038 图像不能从EMF正确导入
70001039 Block名称不适用于DWG
70001042 具有Shape段的LineTypes不能在3d中与ExcludeFromList Draw3DFlag正常显示 

 

未发布 多平台移动项目开发工具Elements发布v9.1,支持Visual Studio 2017
by Harriet666 keys 分享 1499676794095
Elements是一款多平台移动项目开发工具软件,它包含Oxygene、C#、Swift三种编程语言和相关工具,并且提供这三种语言丰富的开发经验以及最新的Fire开发环境,极大的方便开发人员开发软件项目。
 
Elements 9.1点击下载>>>
 


 Fire


此版本是Fire最重要的更新。

性能改进

Fire在许多方面都进行了精简和性能改进。代码编辑器的响应速度更快,例如,在构建过程中CPU占用低。100%的响应一直是Fire的首要目标。Fire的大部分工作都是在极低功耗的12“MacBook”Adorable“上完成的,而我们的基准是,即使是最低端的硬件,Fire也可以使用,9.1版本更是如此。

互动调试控制台

Fire的调试功能在许多方面得到了加强,最出色是引入了新的交互式调试控制台。当你的应用程序进入调试器时,底部控制台视图现在允许你使用调试器命令提示符与调试器进行交互。
在使用LLDB的平台(如Cocoa和一些Island targets)上,你可以使用所有功能访问LLDB的完整命令界面;在其他平台上你会收到我们的edb提示,它提供必要的命令并将随着时间的推移而扩展。
3dac7b36f7c847c484d29ce20110bdabojpg

Gradle References和EBuild

Fire(和Elements构建链)支持Java和Android项目中的显式Gradle References管理。Gradle References现在是项目的第一类成员,就像常规引用一样,它们可以通过“管理引用”表进行添加和更新。Fire还使用我们即将推出的EBuild工具链的技术预览。
9028a442e67b45839026cef980b7bcdfojpg
 

 Visual Studio中的Elements


Visual Studio是Windows上开发人员的主要IDE,Elements 9.1为Visual Studio带来了一些新功能和增强功能。

支持Visual Studio 2017

支持所有新的Visual Studio 2017 IDE。虽然没有Shell,Elements 9.1提供了与已安装的Visual Studio 2017集成,包括专业版、企业版和免费社区版。当然,VS2017中支持所有四种平台和三种语言。
 

 
 Island


我们最初在9版中引入的新版本的Island平台也是这个版本的主要重点,有许多改进和增强和修复:

在Windows 10上运行和调试Linux应用程序

针对Linux的Island开发人员现在可以在Visual Studio、Windows 10 Creators Update或更高版本的本地机器上无缝地运行和调试他们的应用程序,只需点击“ 开始 ”或按F5。
f54702d38b3c44e28301c258b27bb1f9ojpg
 
 

新的子平台:ARM上的Android NDK和Linux

Elements 9.1中Island平台支持两个新的子平台。除了支持英特尔x64之外,Linux应用程序现在可以定位armv6和更高版本的CPU。你可以开发在嵌入式设备上运行的Island应用程序,从Raspberry Pi一直运行到Bare ARM系统等。
此外,我们还添加了Android NDK作为一个brad新的子平台,允许你使用NDK、Oxygene、C#、Swift和Java语言创建Android应用程序扩展(或整个应用程序)。

支持Library

EUnit、Elements RTL和Delphi RTL都已经移植到了这个版本的Island,现在在使用这些(可选)库时,可以在所有三个平台上同步。
 

 
 Libraries


Elements RTL

Elements 9.1正式引入了新的跨平台兼容性库Elements RTL。代替“Sugar”,Elements RTL是一个可选的库。无论你是在编写一个iOS应用程序并计划移植到Android,还是要创建Mac和Windows版本的桌面应用程序,Elements RTL可以轻松共享代码。
当然,Elements RTL也支持我们新的Island平台。

Delphi RTL改进

用于将Delphi代码移植到Oxygene的Delphi RTL兼容性库得到了改进。它现在基于Elements RTL,并且也适用于Island,使其成为跨所有Elements targets的真正跨平台。
未发布 微软的dotnet-new工具可以使创建JavaScript Web 程序变得更简单
by Harriet666 keys 分享 1488337232319

Microsoft发布了一组工具,使用他们的dotnet-new工具和使用Node.js的灵活方法可以快速生成基于JavaScript的Web 应用程序。

dotnet-new工具是.NET Core工具的一部分,用于使用简单的命令启动一个新项目。作为ASP.NET Core JavaScript Services的一部分,Web开发人员现在可以使用相同的命令来启动新的单页应用程序(SPA)。

点击查看完整内容>>>

未发布 组件套包Essential Studio for UWP 2017 v3发布丨附下载
by Harriet666 keys 分享 1503047294687
Essential Studio for UWP是包含有35 +组件的综合套包,包括最快的图表和网格组件。所有组件根据当前被呈现的设备系列自适应渲染。
 
Essential Studio for UWP 2017 v3下载>>>
 
Essential Studio for UWP 2017 v3为图表添加了一个新的选择器控件,轴刻度中断,以及支持甘特图控件的样式定制。
 

选择器

新控件

新的选择器控件可以从自定义或模板化的视图项目列表中选择一个项目。 此控件也可以作为对话框打开。
 

主要特征

  • 多列
  • 标题视图
  • 页脚视图与默认按钮
  • 项目模板
  • 自定义视图
b09ae2e16b7b4548997fd85d9064d3b1ojpg
 

图表

轴刻度中断

为图表控件提供了轴刻度中断支持。
998e0388e6704793b6aae3b4ee595364ojpg

气泡图拖动

在编辑数据值时,可以拖动气泡图。
aae1f4f56c964ed0b154d3f1868d29afojpg
 

图表

增强注释功能

注释支持交互。可以选择、拖动、调整大小并旋转。
e7f8ec77acdf419884a70b8ed5cda9d0ojpg
注释可以根据它们对齐的段自动旋转。
df09b81ba8a44e018e71932daa9d05d5ojpg
 

DOCIO

内容控件

DocIO能够在Word文档中创建和修改内容控件,并提供了一种设计具有以下功能文档的方法:
  • 创建一个类似表单的用户界面。
  • 防止用户编辑内容控件的内容。
  • 将内容绑定到XML数据。
e2e9818108454cf89c71f68feb03e43bojpg

支持Word转为EPUB

DocIO现在支持将Word文档转换为EPUB文件。
e5f20473c82c4a879aa48bb4447896a3ojpg
 

PDF

电子签名

使用PKCS#12证书与私钥数字签名文件,如.pfx文件。
239e191ec51446cea0c4d87ae7234256ojpg

标记PDF

通过允许用户创建PDF/通用可访问性(PDF / UA)或符合章节508的PDF文档来提供辅助功能。
22c6e8fcb80842788604700039fc5cdeojpg
 

PDF查看器

弹出式注释

PDF Viewer现在允许用户添加和操作PDF文档中的弹出式注释。
6119b591b4ea42ba8da83729839ac92eojpg
 

Pivot客户端

关联数据源

Pivot客户端支持在嵌入式枢轴网格和枢轴图表中可视化关系数据。 它还提供一个UI选项来拖动字段,过滤它们,并在运行时通过数据透视表字段列表创建pivot视图。
60ced88f208d4aa08f6f8d4dcda1c94aojpg
 

演示

支持插入列

演示文稿现在允许在PowerPoint演示文稿中的表中插入列。
8f97c3756b8248379e75f15f1eed84e1ojpg
 

甘特图

样式

支持定制网格标题、时间刻度、前置连接器、任务标签和资源标签的样式。
d058eb1fb44047ac8ac5e9d1a6b12f52ojpg
 

事件和方法

增加了新的可用性事件和方法。
 

本地化

支持本地化控件中的静态文本。
 

看板

本土化

支持本地化控件中的静态文本。
 

XLSIO

过滤器功能增强

  • XlsIO现在允许用户通过文本、数字、单元格颜色和字体颜色对过滤的数据进行排序。
  • 提供基于自定义文本过滤器过滤数据的功能。

da8d1b8e95894d6ea168a87b3b71054eojpg
未发布 Essential Studio for UWP发布2017 v2,新增甘特图控件
by Harriet666 keys 分享 1495780729601
Essential Studio for UWP是包含有35 +组件的综合套包,包括最快的图表和网格组件。所有组件根据当前被呈现的设备系列自适应渲染。Essential Studio for UWP发布2017 v2,新增甘特图控件。

【Essential Studio for UWP最新版点击下载>>>】


图表

区段颜色设置

图表中的每个段现已支持颜色贴图。

995952bfb60443129bd83ac458ae54f8ojpg

多个样条曲线类型

图表控件现在支持样条区域的多个样条类型。

484149a96b314a5491b95cb18957eeb9ojpg

 

图表

片段装饰

连接器中添加了一种新的装饰元素,以指示连接在另一个连接器或片段上的流动。

de1341f252e34bdabb7a48bc63b8bba0ojpg

 

PDF

增强PDF安全功能

现在支持PDF 2.0安全功能(AES Revision 6)。

77d44e0e6b76401ab02e8a510924d4e6ojpg

 

数据透视图表

快速图表类型

在透视图控件中实现了以下快速图表类型:快速列位图、快速条形图、快速行、快速位图、快速步进位图、快速分散位图和快速堆叠列位图。

修饰

添加数据透视图修饰以显示与图表细分元素相关的值。

9ffff64fc71147f4929d16d12331f483ojpg

注释

数据透视图注释显示有关绘图区域中特定目标点的图表或系列的元数据。

9137007f09c3430fad13f40e823af42bojpg

Pivot客户端

标签和值过滤器

Pivot客户端支持按标签和值进行过滤。

a1c70a38440e4827b6f7fb54f2694211ojpg

延迟更新

Pivot客户端可以仅在需要时更新,而不是在每次UI交互期间更新。

Pivot网格

Pivot行

Pivot网格可以定制为平面网格。

2f2237b52b994d8ca4fe1c9eaaf84c70ojpg

分组栏

Pivot网格提供了一个UI选项来拖动字段、过滤,并在运行时通过分组栏创建Pivot视图。

996bf06c54264a969c20b3ccf4db9af0ojpg

演示

注释功能

可以在PowerPoint演示文稿中创建和修改注释。

4773c7e27f8649bea7af50162dd246e3ojpg

富文本框

支持打印

富文本框控件现在支持从桌面和移动应用程序中打印文档内容。

a002e003c13149c6b2b951898d3207c9ojpg

页面布局

富文本框控件支持在移动设备上逐页查看文档内容。

63a5e6287a674089b4eccd746ca3434fojpg


甘特图

甘特图控件用于可视化和编辑项目进度,并跟踪项目进度。它可以帮助你组织和安排项目。你还可以通过编辑、拖动和调整大小等操作来更新项目进度。

f4eb369c934546068418ec2abec15752ojpg

主要特征

  • 任务关系
  • 交互式编辑
  • 排序
  • 自定义时间格式

树型网格

过滤

树状网格控件现在支持使用各种过滤器选项,用编程方的式过滤节点。

0d08e7d6f68d4251acd0519484bb65f4ojpg


未发布 网络安全工具FileAudit更新v5.5版本,更好地识别和分析异常的文件
by Harriet666 keys 分享 1517818072875
FileAudit可用于对Windows服务器上文件和文件夹的所有访问进行主动跟踪、审核、报告和警告。
 
 
FileAudit v5.5新功能

FileAudit 5.5的发布侧重于帮助IT管理员更好地识别和分析异常的文件。
数据泄露必须要找到发生的来源,平均191天就会出现发现违规事件。如果受保护的数据驻留在文件服务器上,会存在明显的违反指示。通过监视文件服务器上受保护数据的访问和使用情况,可以根据异常活动来检测数据泄露。
 
详细活动概述-按用户
这个新的仪表板提供了关于指定用户已经访问或尝试访问的所有文件和文件夹的详细活动报告。从文件访问查看器或统计中单击任何用户以查看在前4周内执行的所有事件。
433a9a821f1b458aa3ea0be8e114fe89ojpg
  • 仪表板提供了关于用户访问和使用审计数据的关键信息:
  • A使用情况活动图表和统计数据 - 轻松查看活动的频率和数量,按天或周分组。
  • 该指定用户的文件删除和拒绝访问事件的总数。
  • 列出用户执行的所有访问事件的表格。
  • 前5个访问的文件。
 
详细活动概述-按文件或文件夹
这个新的仪表板提供了关于从所有用户访问指定文件或文件夹的详细活动报告。单击文件访问查看器或统计信息中的任何文件或文件夹路径可查看前4周内执行的所有事件。
744685d659614e85af77df700a5e26a4ojpg
  • 仪表板提供关于访问和使用特定数据集的关键信息:
  • A使用情况活动图表和统计数据 - 轻松查看活动的频率和数量,按天或周分组。
  • 特定文件或文件夹的文件删除和拒绝访问事件的总数。
  • 列出针对特定文件或文件夹执行的所有访问事件的表格。
  • 已访问此文件或文件夹的前5名用户。
     
完整事件详情
双击访问事件现在将显示完整的事件详细信息。
e984e47bcba647eb8641cc564b4317a2ojpg

关于存档数据库的报告
如果需要访问归档的记录,可以在安装文件夹中找到新的工具(FileAuditReporter)。这个工具可以让您轻松检索、分析和报告存档的数据。
 
发送通知和报告给Slack
将Slack与FileAudit集成可以帮助整个IT团队更容易跟踪问题和共享报告。来自FileAudit的任何消息(警报,计划报告,警告消息)都可以发送到Slack中的共享通道。
 
改进预定报告
现在有一个新的选项来保存所有的历史报告。(如果需要,您可以自动使用最新版本覆盖旧的预定报告)。
 
改进服务
能够在更改远程连接设置时重新启动FileAudit服务。

6

未发布 超实用CAD控件CAD VCL发布v12,支持Embarcadero®RAD Studio 10.2 Tokyo丨附下载
by Harriet666 keys 分享 1497599034716
CAD VCL是一个高品质多功能且含源码的控件,它提供了几个强大的类用于为您的Delphi/C++Builder应用程序创建AutoCAD DXF, CGM, Hewlett-Packard PLT/HPGL, PDF和SVG文件。

【CAD VCL 12最新版下载>>>】


CAD VCL 12支持Embarcadero®RAD Studio 10.2 Tokyo,并支持最新的AutoCAD®DWG 2018。
 
我们发布了CAD VCL 12,它是一个Delphi和C ++ Builder的新版本CAD库。不久前Embarcadero®RAD Studio 10.2 Tokyo发布。我们很高兴地通知你,新版本的CAD VCL 12也与此开发环境兼容。
 
除了这项更新,CAD VCL还支持最新的DWG版本 - AutoCAD®DWG 2018。因此,使用CAD VCL 12创建的应用程序将能够阅读最新的图纸。
0709e112747c47a38c3156e0719e0e8aojpg
CAD VCL 12中包含的改进内容列表:
  • 支持Embarcadero®RAD Studio 10.2 Tokyo
  • 导入AutoCAD®DWG 2018
  • 改进了通过Windows图元文件导出功能
  • 导出G-code
 
你可以下载最新版本的CAD VCL来测试这些功能>>>
未发布 百度正式开源其RPC框架brpc
by Harriet666 keys 分享 1506650334597
9月14日,百度正式在GitHub上基于Apache 2.0协议开源了其RPC框架brpc。brpc是一个基于protobuf接口的RPC框架,在百度内部称为“baidu-rpc”,它囊括了百度内部所有RPC协议,并支持多种第三方协议,从目前的性能测试数据来看,brpc的性能领跑于其他同类RPC产品。
 
brpc开发于2014年,主要使用的语言是C++和Java,是百度内部使用最为广泛的RPC框架,它经受了高并发高负载的生产环境验证,并支撑了百度内部大约75万个同时在线的实例。据了解,百度内部曾有多款RPC框架,甚至在2014年时还开源过另外一款RPC框架sofa-pbrpc。那brpc是在什么样的背景下诞生的?它有什么样的优势?又为何要开源?就这些问题,InfoQ记者采访了brpc负责人戈君。
 
Q:谈谈brpc的一些基本情况?什么时候开始研发的?经过了怎么样的迭代和升级?目前在内部应用情况如何?

戈君:brpc于2014年创建,在百度内部称为“baidu-rpc”。到目前为止,brpc一共进行了3000次左右的改动,现在仍在持续优化中,百度内的wiki上可以查询到每次改动的描述。brpc的主要语言是C++和Java,对其他语言的支持主要是通过包装C++版本,比如brpc的Python版包含C++版的大部分功能。
 
brpc目前支撑百度内部大约75万个同时在线的实例(不含client),超过500种服务(去年的统计,现在已不统计这类数据)。Hadoop、Table、Mola(另一种广泛使用的存储)、高性能计算、模型训练、大量的在线检索服务都使用了brpc。brpc第一次统一了百度内分布式系统和业务线的通信框架。
 
Q:为什么百度当时要研发brpc?

戈君:我们在实践中意识到,RPC作为最基础的通信组件,当时的百度已经不领先了。我当时的经理刘炀曾是Google的工程师,非常重视基础架构的建设,也愿意在这个方向投入资源。
 
我们在内部会更加深入地讨论这些问题。“好用”有时看起来很主观,但其实还是有据可循的,它的关键点是能不能真正地提高用户的效率:开发、调试、维护都要考虑到,如果用户效率真的被提高了,用户会想着你的,靠吹嘘或政令推广的东西得不了人心。我们创建brpc的初衷是解决百度业务所面临的实际挑战,同时也希望成为百度同学最喜爱的工具,哪怕离开百度也会怀念brpc。我们希望在提供了一个好用框架的同时,也展现了一种工作方法:注释怎么写,日志怎么打,ChangeLog怎么写,版本怎么发布,文档怎么组织,甚至对未来不在百度的同学的工作也有帮助,所以从这点来说brpc从一开始就是拥抱开源的。事实上,我们在口碑上做得还不错,brpc的wiki可能是百度内被点赞最多的内容之一。
 
Q:与其他的一些开源的RPC框架相比,brpc的优势是什么?

戈君:brpc主打的是深度和易用性。一方面我们没有精力像gRPC那样摊大饼,什么都做。另一方面我们也注意到gRPC(包括更早的Thrift)的深度和易用性并不够。技术方面的东西就是这样,看示例程序,文档非常牛逼,但实战中可能就是另一回事了,为什么各个公司都要造自己的轮子,一个隐藏原因就是表面高大上的东西在一些细节上让你无法忍受。

RPC真正的痛点是什么?是可靠性、易用性和定位问题的便利性。服务中不要出现不可解释的长尾,程序的可变项要尽量少,各种诡异问题要有工具支持快速排查。而这些在目前开源的RPC框架中做的并不好,它们大多看着很牛,但就是无法在自己组织中推广开来。回到前面那三点,brpc是如何做的呢?
  • 可靠性。这一方面是代码质量问题,通过为brpc团队设立很高的招聘门槛,以及在团队中深入的技术讨论,我们确保了稳固的代码基础。另一个问题是长尾问题,这是设计问题,brpc其实包含了很多模块,其中的bthread是一个M:N线程库,就是为了更好地提高并发避免阻塞。brpc中的读和写都是wait-free的,这是最高程度的并发。技术细节请点击链接查看。
  • 易用性。有种设计是什么选择都做成选项丢给用户,号称功能都有,但一旦出问题,则是用户“配置错了”。而且这样用户还非常依赖开发团队,没有开发团队的支持基本用不了,开发团队有足够的理由扩充团队。这么做其实非常不负责任,用户面对海量的选项也很难受。brpc对于增加选项非常谨慎,框架能自己做判断的绝不扔给用户,所有用户选项都有最合理的默认值,不设也能用。我们认为这对用户体验来说非常重要。
  • 定位问题的便利性。这点其它开源框架目前做的都不好,正常使用是可以的,但出问题就麻烦了。这个问题在百度内部其实也很严重,brpc之前用户排查问题都要拉RPC同学一起排查,RPC框架对用户是个黑盒,用户根本不知道里面发生了什么。按我们的经验,基本每天都有几个用户在群里问server卡顿,client超时之类的问题,排查问题是常态,人手必然不够。时间长了用户就觉得你这个框架各种问题,人还拽的不行很少回他们消息。brpc的解决办法是给server内加入各种HTTP接口的内置服务,通过这些服务,用户可以很快看到server的延时、错误、连接、跟踪某个RPC、CPU热点、内存分配、锁竞争等信息,用户还可以使用bvar来自定义各类统计信息,并在百度的运维平台NOAH上汇总。这样大部分问题用户可以自助解决。其实我们去看也是看这些,只是会更加专业。内置服务的具体说明可以看这里。
 
Q:作为公司内部的RPC框架,在服务治理方面有什么考虑?

戈君:百度内部RPC使用非常广泛,基本都是RPC调用,一些产品线还会通过local RPC隔离工程框架和策略代码。这么多年下来,服务周边的系统也比较全面了:编译是BCLOUD,发布是Agile,服务注册和发现是BNS,认证是Giano,监控和运维是NOAH。在百度内部,brpc和这些系统做了比较紧密的绑定,用户体验是一站式的。虽然在开源版本中,这些结合大都删掉了,但用户可以根据自己组织中的基础设施来进行定制:交互协议,名字服务,负载均衡算法都可以定制。对于其中一些特别通用的,我们希望用户反馈到开源版本中来以方便所有人。
 
Q:之前百度还开源过sofa-pbrpc,brpc与它的区别是什么?

戈君:sofa-pbrpc也是百度开发的一个比较早期的RPC框架,属于sofa编程框架的一部分,在搜索有应用。brpc相比sofa-pbrpc有如下优点:
  • 对协议的抽象更一般化,并统一了全百度的通信架构。bprc能容纳非常多的协议,基于Protobuf的,基于HTTP的,百度内的nshead/mcpack,开源的Redis/Memcached,甚至RTMP/FLV/HLS直播协议,brpc能逐渐地嵌入现有系统,而不需要彻底重构,但sofa-pbrpc则不具备扩展协议的能力。类似的,sofa-pbrpc也无法定制负载均衡算法,brpc默认提供round-robin、随机、一致性哈希,Locality-aware(局部性感知)四种算法,用户还能定制。
  • 多线程质量更好。多线程编程是非常困难的,看起来简单的RPC遍布多线程陷阱,比如处理超时的代码可能在RPC还没发出去时就运行了;发送函数还没结束,处理回复的回调就被运行了;一个回复还在被处理另一个回复回来了,诸如此类。另外,一个异步RPC的回调里发起一个同步RPC会发生什么,带着锁做同步RPC会发生什么。这些问题我们都不能在sofa-pbrpc中找到满意的答案。
  • 完备的调试和运维支持。解决这个问题的本质还在可扩展性,你如何让用户参与进来定制他们感兴趣的指标,为此我们设计了bvar,让用户能用比原子变量代价还小的方式自由地定制各种指标,用户能在浏览器上看到指标的变化曲线,或在运维平台NOAH看到汇总的监控数据。brpc还加入了大量内置服务方便用户调试程序,查看连接,在线修改gflags,追踪RPC,分析CPU热点,内存分配,锁竞争等一应俱全。
无需讳言,brpc在诞生之初和sofa-pbrpc在百度内部是有竞争关系的,但就像其他地方一样,这种竞争带来了活力。类似的,brpc和其他已经开源的RPC框架也是良性的竞争关系,在比拼谁能真正提高用户效率的过程中共同进步。每个用户都可以去对比代码、文档质量,接口设计,易用程度,扩展能力等,投出自己的一票。
 
Q:谈谈brpc的整体架构?

戈君:技术栈无外乎是从传输层垒到应用层,就略过不讲了,具体可以去看下开源出来的文档。brpc在架构上强调“在不牺牲易用性的前提下增强可扩展性”,比如brpc支持非常多的协议,在百度内部一个brpc server同端口可以支持二十几种协议,这对于服务的平滑迁移就非常好用。

Client端的协议也非常多,用户用brpc和bthread用得很爽,所以希望我们最好能统一所有的客户端,像对Redis和Memcached的客户端支持也是在这个背景下做的,这两个客户端比官方Client好用多了,感兴趣的读者可以去尝试一下。但这么多协议的配置非常简单,填个字符串就行了,比如HTTP就是把ChannelOptions.protocol设为“http”,Redis就是“redis”。Server端甚至不用设,它会自动判断每个client的协议,怎么做到的开源文档里也有。

名字服务、负载均衡也都可以定制。但为了对用户负责,我们也不鼓励“太自由”的定制,比如一点点需求的变化就要搞个新的,这时更需要想清楚本质区别是什么。这个事情我们在百度内的支持群里每天都在做,我们是开放的”乙方”,但我们也是严厉的”乙方”。
 
Q:brpc的性能如何?这么高的性能是怎么做到的?

戈君:性能是我们非常看中的一点,它和用户体验也是紧密联系的。好用但性能不行,或不好用但性能很牛,用户会很难受,我们不希望用户纠结。从另一个角度来看,在推广初期,我们要说服产品线用brpc靠什么?最直观的就是性能提升。而且这儿的性能不能停留在benchmark的图片上,而是能在真实应用中体现出来。开放出来的案例文档中或多或少都包含了性能提升,具体如下:
  • 百度地图API入口
  • 联盟DSP
  • ELF学习框架
  • 云平台代理服务
 
Q:为什么要将brpc开源?接下来在开源项目的迭代方面有什么计划吗?

戈君:因为马上还有不少依赖RPC的百度系统要开源啊。RPC作为最基础的组件,开源不仅仅是为了自身,也是为其它开源项目铺路,比如说我们马上还会开源基于brpc的RAFT库,搭建高可用分布式系统非常方便;以及使用brpc的bigflow,让流式计算变得很顺手。这些年百度对开源的认识也在不断加深,开源看似曝光了百度的核心技术,但带来的生态影响力更重要。从Apollo、PaddlePaddle开始,百度真的开始拥抱开源了。brpc的开源版和内部版很接近,只是去掉了对百度内部独有的一些基础设施的支持,我们在内网写的深入分析RPC技术细节的文档也都一并开源了,后续也会及时推送改动,请大家放心。这是一个活项目,不会拉个开源分支就不管了。
查看更多资讯>>>


 近期热门 - 点击最多
  1. python基于asyncio实现 Redis 的异步操作哈希数据写入 / 读取、发布订阅消息中间件
  2. Node.js 打印vite react+go项目目录树
  3. Angular入门:用Signals状态管理和Bootstrap基础样式实现的用户登录注册实例教程
  4. 用Gitea搭建免费Git服务器自定义Actions配置CI/CD自动化部署和测试流水线
  5. FastAPI+SQLModel+PostgreSQL+React+Vite全栈项目文件结构说明环境搭建与初始化指南
  6. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  7. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  8. React Native为http网络请求添加timeout超时异常处理: 用XMLHttpRequest替换fetch发送的区别
  9. React Native使用fetch发送http登陆验证请求失败:无法读取set-cookie并显示network request failed
  10. 克服Redux的缺点在React/Native中使用消息队列,pubsub-js更加简洁的组件间通信和状态传递方法

  全端社区 - 最新回复
  1. python基于asyncio实现 Redis 的异步操作哈希数据写入 / 读取、发布订阅消息中间件
  2. Angular入门:用Signals状态管理和Bootstrap基础样式实现的用户登录注册实例教程
  3. 用Gitea搭建免费Git服务器自定义Actions配置CI/CD自动化部署和测试流水线
  4. FastAPI+SQLModel+PostgreSQL+React+Vite全栈项目文件结构说明环境搭建与初始化指南
  5. Node.js 打印vite react+go项目目录树
  6. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  7. Windows与Mac通过git ssh和rsync实现文件共享互传
  8. Windows与Mac通过git ssh和scp实现文件共享互传
  9. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  10. 使用PubSub-JS时ReactNative在后台运行一段时间唤醒后,组件无法scribe到publish的事件,typescript实现一个事件订阅发布组件

  开源的 OurJS
OurJS开源博客已经迁移到 OnceOA 平台。

  关注我们
扫一扫即可关注我们:
OnceJS

OnceOA