未找到

未发布 MailBee.NET Objects发送电子邮件(SMTP)教程二:SMTP认证
by Harriet666 keys 分享 1493360808088
 
大多数SMTP服务器都要求用户进行身份验证,才能将电子邮件发送到外部电子邮件地址(属于其他域的地址)。登录/密码通常与同一服务器上用户的POP3或IMAP帐户相同。
C#:
Smtp mailer = new Smtp();
SmtpServer server = new SmtpServer("smtp.company.com", "jdoe", "secret");    
mailer.SmtpServers.Add(server);
...
mailer.Send();                                                               
VB.NET:
Dim mailer As New Smtp() 
Dim server As New SmtpServer("smtp.company.com","jdoe","secret") 
mailer.SmtpServers.Add(server)
...
mailer.Send()
 
在这种情况下,如果要使用Connect方法手动建立连接,过程如下:
C#:
Smtp mailer = new Smtp();
SmtpServer server = new SmtpServer("mail.domain.com", "user@domain.com", "pass");
mailer.SmtpServers.Add(server);
mailer.Connect();
mailer.Hello();
mailer.Login();                                                            
VB.NET:
Dim mailer As New Smtp()
Dim server As New SmtpServer("mail.domain.com", "user@domain.com", "pass")
mailer.SmtpServers.Add(server)
mailer.Connect()
mailer.Hello()
mailer.Login()
 
如果启用SMTP认证(由于登录名和密码在SmtpServer函数中已经确定),那么Login方法将尝试使用服务器支持的最佳(最安全)的方法在SMTP服务器上进行身份验证。你也可以强制MailBee使用指定的身份验证方法,或尝试最简单而不是最安全的方法。
以下代码可以强制MailBee使用SASL LOGIN(不安全)、SASL PLAIN(不安全)或SASL NTLM(安全)的方法。只有SASL LOGIN或SASL PLAIN暂不支持SASL NTLM:
C#:
Smtp mailer = new Smtp();
SmtpServer server = new SmtpServer("smtp.company.com", "jdoe", "secret");
server.AuthMethods = AuthenticationMethods.SaslLogin | 
AuthenticationMethods.SaslPlain | AuthenticationMethods.SaslNtlm;
server.AuthOptions = AuthenticationOptions.PreferSimpleMethods;
mailer.SmtpServers.Add(server);
...
mailer.Send();                                                        
VB.NET:
Dim mailer As New Smtp() 
Dim server As New SmtpServer("smtp.company.com","jdoe","secret") 
server.AuthMethods = AuthenticationMethods.SaslLogin _ 
Or AuthenticationMethods.SaslPlain Or AuthenticationMethods.SaslNtlm
server.AuthOptions = AuthenticationOptions.PreferSimpleMethods
mailer.SmtpServers.Add(server)
...
mailer.Send()
 
一些较旧的服务器要求客户端自己进行身份验证,但不支持SMTP身份验证。这是因为SMTP身份验证是SMTP协议的可选扩展项(称为ESMTP身份验证更为正确)。在这种情况下,你可以使用与SMTP服务器共享用户帐户数据库的POP3服务器执行POP3认证。这被称为POP-before-SMTP认证。使用MailBee,你可以采用两种方式使用POP-before-SMTP。
如果POP3和SMTP服务器名称相同(例如,两个服务器都是mail.domain.com),并且POP3服务在默认端口110上运行:
C#:
Smtp mailer = new Smtp();
mailer.SmtpServers.Add("mail.domain.com", "jdoe@domain.com", "secret").AuthPopBeforeSmtp = true;
...
mailer.Send();                                                     
VB.NET:
Dim mailer As New Smtp() 
mailer.SmtpServers.Add("mail.domain.com", "jdoe@domain.com", "secret").AuthPopBeforeSmtp = True
...
mailer.Send()
 
如果服务器名称不同(例如POP3的POP.domain.com和SMTP的smtp.domain.com)或POP3端口是非标准的,请在连接到SMTP服务器之前使用AuthPopBeforeSmtp方法。
C#:
Smtp mailer = new Smtp();
mailer.SmtpServers.Add("smtp.domain.com");
mailer.AuthPopBeforeSmtp("pop.domain.com", 110, "jdoe@domain.com", "secret");
...
mailer.Send();                                                       
VB.NET:
Dim mailer As New Smtp() 
mailer.SmtpServers.Add("smtp.domain.com")
mailer.AuthPopBeforeSmtp("pop.domain.com", 110, "jdoe@domain.com", "secret")
...
mailer.Send()
 
注意:POP-before-SMTP验证完成后,你无需再调用Login方法。Login方法仅执行ESMTP认证。
MailBee还支持Windows集成身份验证(使用当前记录的Windows用户的凭据登录)。例如:
C#:
Smtp mailer = new Smtp();
mailer.SmtpServers.Add("smtp.domain.com", null, null, AuthenticationMethods.SaslNtlm);       
VB.NET:
Dim mailer As New Smtp() 
mailer.SmtpServers.Add("smtp.domain.com", Nothing, Nothing, AuthenticationMethods.SaslNtlm)
 
如果你开发的是在匿名IIS或ASP.NET用户文本中运行的ASP.NET应用程序(因为当前记录的用户是IIS用户而不是使用该应用程序的人员),那么你无法使用它。
【示例教程】LEADTOOLS中如何通过OCR识别获取每一行文本
by Harriet666 keys 分享 1510646832861
LEADTOOLS可帮您开发出功能强大的文档图像应用程序。其主要功能包括综合图像注释,专业的黑白图像显示(例如灰度级和偏黑),以及专业的黑白图像处理。其它功能包括对黑白图像的性能和内存进行优化,文档图像清理(包括倒置文本,去边界,去打孔机和去线)以及使用LEADTOOLS Fast TWAIN和WIA进行扫描。
 
本篇文介绍如何通过OCR分别识别获取文档的每一行文本。有一种方法类似于我们的IOcrZoneCharacters.GetWords方法可检索文档的每一行。OCR引擎识别的每个字符都有一个位置。我们可以通过OcrCharacter 结构的position 属性访问这个位置。返回一个或多个OcrCharacterPosition 枚举成员:
 
下面写了一个简单的小例子,用OcrCharacterPosition 来分别识别出每一行的文字。
using (RasterCodecs codecs = new RasterCodecs())
{
   codecs.Options.RasterizeDocument.Load.XResolution = 300;
   codecs.Options.RasterizeDocument.Load.YResolution = 300;
   RasterImage image = codecs.Load(inputFile);
   using (IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.Professional, false))
   {
      ocrEngine.Startup(null, null, null, @"C:\LEADTOOLS 19\Bin\Common\OcrProfessionalRuntime64");
      using (IOcrDocument document = ocrEngine.DocumentManager.CreateDocument())
      {
         document.Pages.AddPage(image, null);
         document.Pages[0].Recognize(null);
         IOcrPageCharacters pageCharacters = document.Pages[0].GetRecognizedCharacters();
         for (int i = 0; i < document.Pages[0].Zones.Count; i++)
         {
            IOcrZoneCharacters zoneCharacters = pageCharacters.FindZoneCharacters(i);
            if (zoneCharacters != null)
            {
               foreach (var ocrCharacter in zoneCharacters)
               {
                  OcrCharacterPosition position;
                  position = ocrCharacter.Position;
                  if ((position & OcrCharacterPosition.EndOfLine) == OcrCharacterPosition.EndOfLine)
                  {
                     Console.Write(ocrCharacter.Code + "\n");
                  }
                  else
                  {
                     Console.Write(ocrCharacter.Code);
                  }
               }
            }
         }
      }
   }
}

2017慧都十四周年狂欢搞事情!砸金蛋100%抽现金红包、满额豪送iPhone X、iPhone 8、DevExpress汉化免费送、团队升级培训套包劲省10万元......更多惊喜等您来探索!

未发布 TWAIN扫描识别工具Dynamic Web TWAIN的常见问题FAQ合集
by Harriet666 keys 分享 1510027018492
Dynamic Web TWAIN是一个专为Web应用程序设计的TWAIN扫描识别控件,本文给大家分享几个有关Dynamic Web TWAIN的常见问题,欢迎收藏!
 
慧都十四周年狂欢开启,Dynamic Web TWAIN终极让利7折特惠
限时一个月,马上咨询>>>
 
1.什么是TWAIN?
TWAIN是一种协议和应用程序编程接口(API),用于标准化应用程序和图像采集设备(如扫描仪和数码相机)之间的通信
。该标准允许开发人员对任何支持TWAIN的图像采集设备进行标准调用。因此,应用程序无需重写也能支持每个设备。
2.什么是Dynamic Web TWAIN?
Dynamic Web TWAIN是专为Web应用程序设计的TWAIN扫描SDK。您可以从任何TWAIN兼容设备中获取图像。
Dynamic Web TWAIN非常实用,它包含精心设计的界面和内置向导模式。只需几行代码便可完成作业。同时,Dynamic Web TWAIN功能非常强大。它与TWAIN规范V2.1兼容,具有内置的JPEG编码器和解码器。同时支持所有三种图像传输模式和许多其他功能。
Dynamic Web TWAIN包含许多专为Web环境设计的功能,例如通过FTP或HTTP协议上传和下载图像。
3.我应该使用Dynamic Web TWAIN的哪个版本?
Dynamic Web TWAIN有几个版本:ActiveX、HTML5 for Windows、HTML5 for Mac和HTML5 for Linux。您可以根据使用的浏览器决定使用哪个版本。
ActiveX:在Windows上默认支持IE 6-9,可以支持IE 10、11;
HTML5 for Windows:在Windows上支持Firefox/Chrome 27+、IE 10/11和Edge;
HTML5 for Mac:支持Mac OS上的Chrome/Firefox 27+、Safari 7+。
HTML5 for Linux:支持Ubuntu 10+、Debian 8和Fedora 19+上的Chrome/Firefox 27+。

4.使用Dynamic Web TWAIN是否需要安装twain驱动程序?
是的Dynamic Web TWAIN与设备(扫描仪/照相机/采集卡等)的TWAIN驱动程序进行通信,以控制其获取和传输图像,因此需要安装twain驱动程序。

5.我能用Dynamic Web TWAIN做什么?
Dynamic Web TWAIN可用于控制扫描仪、数码相机以及支持TWAIN标准的任何其他设备的任何工作。Dynamic Web TWAIN可以通过FTP或HTTP协议上传和下载图像。代理同样支持。

6.Dynamic Web TWAIN与其它为web环境设计的TWAIN SDK相比有什么优势?
Dynamic Web TWAIN的是一个真正的网络扫描解决方案。
它与Internet Explorer、Chrome、Firefox和其他浏览器兼容。
它非常灵活并且占用小。无需DLL分发。
它可以通过HTTP和FTP上传和下载图像。
它支持TIFF、JPEG、PDF和PNG压缩。

7.我在哪里可以获得使用Dynamic Web TWAIN的测试应用程序?
您可以从我们的样本库中获得Dynamic Web TWAIN的样本。在安装Dynamic Web TWAIN试用版之后,您还可以找到一些带有源代码的基本示例。

8.使用SDK时遇到问题我该怎么办?
你可以参考我们的知识库系统在线文档。如果还是找不到答案,请发送电子邮件至support@dynamsoft.com。

9.虚拟开发者服务与标准客户支持之间的主要区别是什么?
借助虚拟开发者服务,我们与您密切沟通,分析您的需求,提出技术解决方案,编写代码,帮助您将代码集成到项目中,进
行测试和维护。
通过标准客户支持,您需要一位开发TWAIN模块的开发人员,然后向我们的技术支持团队提问。使用虚拟开发者服务,您不需要开发人员在TWAIN模块上工作,我们的开发人员作为团队成员参与您的项目。

2017慧都十四周年狂欢搞事情!砸金蛋100%抽现金红包、满额豪送iPhone X、iPhone 8、DevExpress汉化免费送、团队升级培训套包劲省10万元......更多惊喜等您来探索!

未发布 微软发布 Microsoft 365,它包含Office 365、Windows 10 和企业移动性+安全性套件
by Harriet666 keys 分享 1499753923381
office 365
在今天举行的 Inspire 年度合作伙伴大会上 ,微软首席执行官萨提亚·纳德拉发布了 Microsoft 365,它包含了 Office 365、Windows 10 和企业移动性+安全性(Enterprise Mobility + Security)套件,为企业用户提供一套完整且智能的安全解决方案,从而实现予力员工的目标。这一解决方案的发布展示了微软在产品和解决方案的设计、构建和上市方面的根本转变,从而满足用户对于现代办公场所的需求。
 
办公场所正在发生一系列的转变,从改变员工的期待值,到日益多元化、移动化和分散化的团队,再到日益复杂的安全威胁。在这种情况下,新的组织文化也在不断涌现。客户希望能够通过创新技术来使他们的员工拥抱这一全新的组织文化。
 
目前,Office 365 的月活跃用户已经超过 1 亿,而 Windows 10 设备的使用量也已经超过了 5 亿。微软目前正以其独特的优势帮助企业予力员工,实现业务和创新的发展。
 
今天微软发布了Microsoft 365 企业版和 Microsoft 365 商业版来满足不同规模的企业的需求。
 
Microsoft 365 企业版专为大型企业而设计,它集成了 Office 365 企业版、Windows 10 企业版以及企业移动性+安全性,以激发员工的创造力,并实现更加安全的协作。
 
Microsoft 365 企业版
  • 用户可以通过书写、语音和触摸的方式非常自然地工作,从而激发创造力。而这背后的技术都是通过使用人工智能和机器学习的方式实现的。
  • 凭借团队通用工具套件,为用户提供了一套最广泛、最深入的应用和服务,从而让其可以更加灵活地选择他们联系、分享和沟通的方式。
  • 通过统一管理用户、设备、应用和服务的方式来简化 IT。
  • 通过内置的智能安全性来保护客户信息、公司信息和知识财产。
Microsoft 365 企业版提供两种选项,即Microsoft 365 E3 和Microsoft 365 E5,并可于2017年8月1日开始订购。
 
Microsoft 365 企业版是基于 Secure Productive Enterprise 计划构建的。Secure Productive Enterprise 是一款非常成功的产品,在过去一年中,它的坐席数一直保持着三位数的增长速度。未来,Microsoft 365 企业版将取代 Secure Productive Enterprise,激发员工的创造力,实现更加安全的协作。
 
Microsoft 365 商业版
  • 帮助企业通过更好的连接员工、客户和供应商,实现更好的业绩。
  • 让员工可以随时随地并通过任意设备完成其工作。
  • 凭借不间断的安全保护,实现公司数据在所有设备上的安全性。
  • 凭借统一 IT 控制台来简化员工设备和服务的设置和管理。
 
Microsoft 365 商业版是专为那些员工数量不到 300 人的中小企业量身打造的,它包括了 Office 365 商业高级版(Office 365 Business Premium)以及定制的 Windows 10 安全性与可管理性以及企业移动性+安全性。它提供了予力员工、保护业务安全和简化 IT 管理的服务。
 
Microsoft 365 商业版的公众预览版将于8月2日发布,并将于 2017 年秋季面向全球正式发售,价格为每用户每月 20 美元。
 
微软还发布了三个专为中小企业开发的全新应用的预览版,它们都被包括在 Office 365 商业高级版和 Microsoft 365 商业版内:
  • 微软清单(Listings):一个简单易用的电子邮件营销服务。
  • 微软关联(Connections):能够非常简单地在热门网站上发布商业信息。
  • 微软结账(Invoicing):全新的方式开具和交付专业发票。
此外,微软还发布了 MileIQ,它是微软的一款收益跟踪应用,现已包含在 Office 365商业高级版中。
 
萨提亚认为,Microsoft 365 将为合作伙伴的业务发展带来巨大的发展机遇。利用 Microsoft 365,超过64000家微软云合作伙伴将有能力打造差异化的云产品,简化销售流程,增加营收,并真正推动业务的持续增长。
未发布 Essential Studio for JavaScript发布2017 v3版本,支持统计图表
by Harriet666 keys 分享 1503649818838
Essential Studio for JavaScript是首款专门用于LOB应用开发的JavaScript框架。包含40多种独特的、全新设计的控件,包括网格、图表、计量器、编辑器、树形视图、菜单、OLAP网格等等。
 
Essential Studio for JavaScript 2017 v3点击下载>>>
 
Essential Studio for JavaScript 2017 v3增强了一些功能,支持统计图表以及甘特图控件的工作周。
所有JavaScript控件通用

ANGULAR

支持Angular 4

基本的JavaScript Angular组件升级,无缝支持Angular v4与Ahead-of-Time compilation。

主题切换

主题切换选项用于渲染和可视化所有可用的JavaScript主题中的组件。

 

AURELIA

支持Webpack

Aurelia-Syncfusion-bridge升级为支持最新版本的webpack和最新的Aurelia skeleton-navigation。

主题切换

主题切换选项用于渲染和可视化所有可用的JavaScript主题中的组件。
 

IONIC

Ionic app

Angular组件现在可以与Ionic移动应用开发框架集成。
 

JSPLAYGROUND

AngularJS支持的版本

SyncFusion JSPlayground升级到支持v1.6的AngularJS。
 

统计图表

StackingSplineArea和100%StackingSplineArea系列

增加新的系列类型StackingSplineArea和100%StackingSplineArea。


 

数据标签饱和度

根据背景颜色来显示数据标签文本。

 

多种样条类型

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

 

数据管理器

Web API批量编辑

数据管理器支持Web API批处理操作。Web API批量编辑是一个独特的功能,添加删除和更改的请求可以一次性处理。
 

图表

支持标尺

标尺已添加到图表控件中。

 

标签拖动限制选项

拖动标签时进行对齐,以便在调整其主体对象大小后保留其相对位置。 还添加了将标签拖动到特定位置的选项。
 

文件管理器

根文件夹配置

支持访问应用程序的根文件夹,并在该根文件夹中显示备用文本。

 

表格

支持页面大小下拉

通过使用页面大小的下拉列表,支持更改网格页面的大小。

 

看板

状态显示/隐藏选项

显示/隐藏卡的功能。它可以使用键值对卡进行分组,并可以切换显示。

 

PDF查看器

手写签名

PDF查看器允许您将签名添加到任何PDF文档,并将其保存为标准PDF文件。

 

时间表

在线添加/编辑预约

用户现在可以创建或编辑预约。

 

拼写检查

拼写检查同步请求

拼写检查控件提供了通过发送同步请求来检查拼写错误的选项。

错误词建议

拼写检查控件提供了将拼写错误的单词传递给客户端的选项,然后检索建议的单词以进行更正。
 

甘特图

工作周

甘特图控制现在支持改变项目的工作周。


验证任务栏编辑

现在可以验证任务栏编辑。

 

枢轴网格

按需加载(关系数据库)

按需加载允许仅在向下钻取操作时检索数据,从而提高控件的性能。

 

分页(关系数据库)

分页将大量记录分成单独的段以便轻松查看数据。它还提高了枢纽网格的性能。

 

按日期分组类型(关系数据库)

枢纽网格对日期类型字段进行分类,并根据年、季、月和日格式进行分组。

 

按日期类型排序(关系数据库)

支持以升序或降序来排序日期类型字段。

 

富文本编辑

拼写检查器

拼写检查器控件可以在RTE中的iframe元素上呈现,从而很容易找到拼写错误,并在上下文菜单和对话框模式中提供建议。在对话模式中,将显示一个包含建议单词列表的下拉菜单。 在上下文菜单模式下,当右键单击拼写错误的单词时,将出现具有拼写建议的上下文菜单。


 

电子表格

 

支持不连续范围的图表

电子表格控件现在可以将串联的图表导入不连续的范围或一系列点。

 

树型网格

文字换行

树型网格控件现在支持在单元格中文本换行。

 

按需加载

树型网格控件现在使用“按需加载”方法来支持数据绑定。


 

命令列

现在可以使用树型网格中的命令列执行CRUD操作和自定义操作。



 

打印

现在可以打印树型网格的内容。

 

编辑模板

树型网格控件使用编辑模板支持使用自定义编辑器编辑单元格值。

 

列优先

现在使用列优先级响应树格网格列。

 

TREEMAP

文字溢出

支持Treemap控件中的标签文本溢出。

未发布 集成的HTTP嗅探器HttpWatch更新至v11.0.20,增加网络错误的数据提示
by Harriet666 keys 分享 1507885553417
HttpWatch是一款集成的HTTP嗅探器,为IE和Firefox提供新的方法以查看您网站的负载和运行情况。你可以直接在浏览器中调试由web页面生成的网络流量,而无需切换到一个单独的工具。

【HttpWatch v11.0.20免费下载>>>】

HttpWatch v11.0.19更新内容
  • 改进:增加了在Chrome中发生网络错误的数据提示
  • 修复:主请求网格中自动滚动有时会出现问题
关于商家
Simtec Limited是一家位于英格兰西南部的公司。他们的核心产品HttpWatch于2002年4月发布,是第一个提供准确的HTTPS运行监控的工具。主要客户包括AOL, eBay, Google和Microsoft。

【慧都十四周年庆预热开启!全场满额送七级豪礼,AppleMac笔记本电脑、iwatch、iPad等您来拿!】

活动时间:10月1日-10月31日

未发布 百度正式开源其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技术细节的文档也都一并开源了,后续也会及时推送改动,请大家放心。这是一个活项目,不会拉个开源分支就不管了。
查看更多资讯>>>

未发布 慧都璀璨14年 周年狂欢送iPhone X!
by Harriet666 keys 分享 1509515785998
2017慧都十四周年狂欢搞事情,全场产品折扣风暴来袭!砸金蛋100%抽现金红包、满额豪送iPhone X、iPhone 8、DevExpress汉化免费送、团队升级培训套包劲省10万元......更多惊喜等您来探索!

2003年11月,慧都破茧而出;

2017年11月,慧都已崛世而立。

14岁了,搞件大事情——创造折扣奇迹!

这个狂欢月,就要躁!起!来!

七大玩法,花样玩赚周年趴!

狂欢时间:2017.11.1-2017.11.30

下单即送砸金蛋机会 100%抽微信现金红包

188元、88元、18元等你领取!

 

点击参与

 

 

全场满额豪送iPhone X!

---------------------

购买慧都任意产品

满额即送8级好礼

iPhone X、iPhone8速速领走!

 

点击查看

 
 

DevExpress庆周年

---------------------

DevExpress汉化资源免费送

DEV团队培训套包

最高立省10

 

点击查看

 
 

慧都学院培训“拼拼团”

---------------------

不要998!不要888!

只要1分钱

立抢DevExpress/Kendo UI研修班团购优惠名额!

 

立即抢购

 

 

全场热销产品7折起

---------------------

Kendo UI、Aspose、BCGSoft、Dynamsoft等产品

超低折扣等你来!

葡萄城GrapeCity更享专属折扣

 

查看更多

 
 

在线商城 聚惠再续

---------------------

MyEclipse个人授权低至6.9

在线订购商城全场优惠促销

下单还送砸金蛋机会

 

立即查看

 
 

周年送祝福 好礼齐掉落

---------------------

您送祝福,我送好礼

提交周年祝福、评价等

随机获取定制台历、保温杯或雨伞!

 

立即留言

 

关注的产品没在促销活动中?不用担心,点击咨询在线客服有意想不到的惊喜哦!

点击咨询获取惊喜优惠

咨询热线: 400-700-1020(免费)
本次活动最终解释权归重庆慧都科技有限公司所有
未发布 图像注释插件VintaSoftAnnotation.NET Plug-in更新至v8.5,增加注释样式
by Harriet666 keys 分享 1495531431279
VintaSoftBarcode.NET SDK是一个为软件开发人员开发的专业.NET条形码读取器和条形码生成器组件。它可以在数字图像和PDF中识别和读写1D&2D条形码。目前VintaSoftBarcode.NET SDK支持三种版本:Standard edition, Standard + WPF edition 和Silverlight edition。
 
【VintaSoftBarcode.NET SDK v9.2最新版下载】

更新内容:

  • 创建新的Vintasoft.Barcode.Web.Services组件,包含了用于读取和写入条形码的独立Web服务。该Web服务允许为任何.NET兼容的Web平台快速创建Web服务,例如ASP.NET WebForms、ASP.NET MVC、ServiceStack。
  • 创建新版Vintasoft.Barcode.Web.Api2Controllers,包括用于在ASP.NET MVC 5中读取和写入条形码的Web API 2控制器。
  • 已验证Vintasoft.Barcode.js的JavaScript代码与jQuery 2和3的兼容性。
  • 创建新的演示应用程序,演示了如何在ASP.NET MVC 5中读取和写入条形码。
  • Silverlight 4停止使用。
  • 添加了Visual Studio .NET 2017演示项目。
未发布 Oracle企业可视化解决方案AutoVue系列产品更新至v21.0.1!
by Harriet666 keys 分享 1489993142405

Oracle发布了最新的企业可视化解决方案AutoVue系列产品v21.0.1版本。(21产品系列中的一个分支版本)。新版本包括了在不支持Java applet *的浏览器中使用AutoVue的能力,并为核心的CAD格式提供支持。

*由于浏览器的已知问题,不支持Microsoft Edge。

AutoVue系列产品包括:AutoVue 3D Professional AdvancedAutoVue Electro-Mechanical ProfessionalAutoVue EDAAutoVue OfficeAutoVue 2D Professional


 近期热门 - 点击最多
  1. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  2. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  3. React Native为http网络请求添加timeout超时异常处理: 用XMLHttpRequest替换fetch发送的区别
  4. React Native使用fetch发送http登陆验证请求失败:无法读取set-cookie并显示network request failed
  5. 克服Redux的缺点在React/Native中使用消息队列,pubsub-js更加简洁的组件间通信和状态传递方法
  6. Springboot+Gradle+Mysql+Jpa最简单实例教程
  7. SpringBoot+Spring6入门指南: 使用命令行快速搭建restful web api模板
  8. 如何通过 winax 的 ActiveXObject 或 Excel.Application 往 excel 中插入一张图片
  9. node.js用activex/com+自动化读写excel时查询接口、参数的调试方法
  10. TypeScript定义数字范围类型即仅包含【小时:分钟】的时间类型,每天指定时间点执行任务

  全端社区 - 最新回复
  1. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  2. Windows与Mac通过git ssh和rsync实现文件共享互传
  3. Windows与Mac通过git ssh和scp实现文件共享互传
  4. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  5. 使用PubSub-JS时ReactNative在后台运行一段时间唤醒后,组件无法scribe到publish的事件,typescript实现一个事件订阅发布组件
  6. React Native为http网络请求添加timeout超时异常处理: 用XMLHttpRequest替换fetch发送的区别
  7. ReactNative获取Android/iOS的MAC/IP地址: react-native-device-info模块的安装与使用
  8. React Native使用fetch发送http登陆验证请求失败:无法读取set-cookie并显示network request failed
  9. 克服Redux的缺点在React/Native中使用消息队列,pubsub-js更加简洁的组件间通信和状态传递方法
  10. Springboot+Gradle+Mysql+Jpa最简单实例教程

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

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

OnceOA