`
歆渊
  • 浏览: 307899 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Introducing Hosting Based Interfacing

阅读更多
HBI - Hosting Based Interfacing


What is (not) HBI?

引用
HBI is about interoperability among distributed applications (software components), built with same or different technologies. As the name implies, HBI is an architecture that software components communicate with each others by hosting the execution of logics from peers. HBI is to get rid of synchronous access to remote resources, make all code executed natively and locally (in both concept and practice) whereas asynchronously. So transactional logics can be naturally grouped into atomic units and performed in parallel ways. On optimistic commit failures, transactions are possible to be retried automatically and transparently. At the same time performance drop and pitfalls due to synchronous execution and distributed data cache are get rid of, as well.

SQL is essentially semi-HBI: There is an interesting fact that wherever you wrote your SQL code, it is executed in the server environment, and you know your SQL always access local resources like tables, views and stored-procedures etc. SQL transactions naturally consist of arbitrary statements between two COMMITs. Pure SQL transactions are possible to be transparently retried on optimistic commit failures.

On the contrary is IBI - Invocation Based Interfacing. Those paradigms try to hide resources behind some mechanisms so that access to resources are wrapped/encapsulated in synchronous ways, regardless they are local or remote. Some define service invocation interfaces, like RMI (including EJB), Web-Service, where remote routines encapsulate their resources and are wrapped like client-local code. Some allow data resources distributed to client environment and wrapped with client-local library code that transparently make data available, handle validity, and manage consistency, like various OODBs, ORM. Transactions can rarely be transparently retried on these infrastructures.




What does HBI cost?

引用
Distribution and concurrency/parallel become explicit, asynchronous complexity instead of implicit, synchronous complexity.

Synchronous programming habit will be broken, programmers will have to consciously know that some blocks of their code will run asynchronously at environments (domains) other than the local application they are developing. Code relies on the result of some remote manipulations can not be programmed as a subsequent block of that manipulation code, but must be implemented as local task agent objects that the remote peer can send back to indicate the result.

Higher security profile. Applications need to enforce sandboxes to host executions of objects from other domains, against malfunctioning peers and hostile attacks.




What HBI benefits?

引用
The architecture of large RAM/storage shared by many CPUs/cores is best benefited. Large data sets in a single memory space and local storage are shared as-is to all domains requiring them, manipulations to these resources are hosted by local CPUs/cores having direct access to them. This is the most efficient way for distributed domain resource sharing.

As a result, performance is a biggest hit. All data and logics become local and native, and can be greatly optimized with explicit parallel (parallel candidates are expressed by application code as a side effect). No data replicated anymore, large amount of redundant memory and bandwidth saved.

Much less pitfalls due to distribution of objects. Neither objects are distributed anymore, nor do they need to be transfered over wire, objects now always identify themselves at where they actually are, no shadow copies or stubs or proxies used to create subtle errors and harden debugging.

Server applications are much more stable. Most new client requirements those used to need service API changes in traditional approaches now can be unilaterally achieved by modifying only the client application.

Client applications can go much richer without resistance from the server side, do not need to change/restart server applications (i.e. less permissions/efforts required) in order to evolve client applications.

Client applications have their own rich domain models that focus on their own functionalities, much better separated from functionalities like persistence and work flows those server applications need to care. Client applications can focus on their own domain model which is regarded by server applications by translating server domain model changes to client behaviors through delivery of task agent life scripts.

More effective Object Orientation. No data packet based protocol anymore, all logics become behaviors of either domain objects or agent objects triggered by task agent life script.

P2P communications become more natural. Clients are also domains, they are at the same priority of server components in inter-domain communications.

Much more realtime-interactive features can be naturally implemented to enhance user experience. Built-in server-push and P2P-push ability well enable it.



分享到:
评论
1 楼 歆渊 2007-09-18  
刚刚发布了HBI框架的开源项目 http://hbi.googlecode.com 可以下载全部源码, 编译运行 Flash 界面, Java 后台的演示程序.

相关推荐

    Introducing Windows 7 for Developers (pdf)

    为了帮助开发者更好地理解并利用这一新平台的功能,《Introducing Windows 7 for Developers》一书应运而生。本书由Yochay Kiriaty、Laurence Moroney、Sasha Goldshtein 和 Alon Fliess 共同编写,并由Microsoft ...

    erlang编程 Introducing Erlang

    **Erlang编程:Introducing Erlang** Erlang是一种函数式编程语言,由爱立信在1986年开发,主要用于构建高可用性、容错性和并发性的分布式系统。"Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,...

    Introducing.JavaFX.8.Programming.0071842551.epub

    Display Web-based content using WebView and WebEngine Table of Contents Chapter 1 JavaFX Fundamentals Chapter 2 Introducing Events and Controls Chapter 3 Exploring JavaFX Controls, Part One Chapter 4 ...

    Introducing.Python英文文字版

    《Introducing Python》是一本广泛认可的Python编程入门书籍,英文版提供了全面而深入的Python语言教程。这本书适合初学者,也对有一定经验的程序员有很高的参考价值。它覆盖了Python的基础语法、核心概念以及一些...

    introducing-java-8.pdf

    Java 8 是Java编程语言的一个重要更新版本,由Raoul-Gabriel Urma所著的《Introducing Java 8》是一本介绍Java 8新特性的指南书。本书提供了Java 8中新增的Lambda表达式和流(Streams)的快速入门,旨在帮助程序员...

    Introducing Visual C# 2010随书代码

    《Introducing Visual C# 2010》是面向初学者和中级程序员的一本经典教程,旨在引导读者深入了解Visual C# 2010编程语言及其相关开发工具。随书附带的源代码是为了帮助读者更好地理解书中的示例和实践项目,以便于将...

    Introducing Visual C# 2010

    《Introducing Visual C# 2010》是关于C#编程语言的一份详细指南,主要针对Visual Studio 2010版本。这本书深入浅出地介绍了C#的基础概念、语法以及在实际开发中的应用。C#是微软公司推出的面向对象的编程语言,广泛...

    Introducing Bootstrap 4 无水印pdf

    Introducing Bootstrap 4 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或...

    Introducing.GitHub.A.Non-Technical.Guide

    Title: Introducing GitHub: A Non-Technical Guide Author: Brent Beer, Peter Bell Length: 142 pages Edition: 1 Language: English Publisher: O'Reilly Media Publication Date: 2014-12-01 ISBN-10: ...

    Introducing Erlang Getting Started in Functional Programming(2nd) epub

    Introducing Erlang Getting Started in Functional Programming(2nd) 英文epub 第2版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    Introducing Regular Expressions pdf

    从给出的文件内容来看,我们正在讨论一本关于正则表达式的电子书——《Introducing Regular Expressions》,该书由Michael Fitzgerald撰写,2012年由O'Reilly Media出版。 正则表达式的知识可以分为以下几个部分来...

    Introducing Starling Building GPU Accelerated Applications epub

    Introducing Starling Building GPU Accelerated Applications 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

Global site tag (gtag.js) - Google Analytics