南通软件园北园多联机空调采购招标公告


      已阅读了

Introduction to Messaging Channel – EIP

Introduction to Messaging Channels

Pattern Catalog

Previous Previous   Next Next

Site Home • Patterns Home • Table of Contents

In Introduction to Messaging Systems, we discussed Message Channel. When two applications wish to exchange data, they do so by sending the data through a channel that connects the two. The application sending the data may not know which application will receive the data, but by selecting a particular channel to send the data on, the sender knows that the receiver will be one that is looking for that sort of data by looking for it on that channel. In this way, the applications that produce shared data have a way to communicate with those that wish to consume it.

Message Channel Themes

Deciding to use a Message Channel is the simple part; if an application has data to transmit or data it wishes to receive, it will have to use a channel. The challenge is knowing what channels your applications will need and what to use them for.

Fixed set of channels — One theme in this chapter is that the set of Message Channels available to an application tends to be static. When designing an application, a developer has to know where to put what types of data to share that data with other applications, and likewise where to look for what types of data coming from other applications. These paths of communication cannot be dynamically created and discovered at runtime; they need to be agreed upon at design time so that the application knows where its data is coming from and where the data is going to. (While it is true that most channels must be staticly defined, there are exceptions to this theme, cases where dynamic channels are practical and useful. One exception is the reply channel in Request-Reply. The requestor can create or obtain a new channel the replier knows nothing about, specify it as the Return Address of a request message, and then the replier can make use of it. Another exception is messaging system implementations that support hierarchical channels. A receiver can subscribe to a parent in the hierarchy, then a sender can publish to a new child channel the receiver knows nothing about, and the subscriber will still receive the message. These relatively unusual cases notwithstanding, channels are usually defined at deployment-time and applications are designed around a known set of channels.)

Determining the set of channels — A related issue is: Who decides what Message Channels are available, the messaging system or the applications? That is to say: Does the messaging system define certain channels and require the applications to make due with those? Or do the applications determine what channels they need and require the messaging system to provide them? There is no simple answer; designing the needed set of channels is iterative. First the applications determine the channels the messaging system will need to provide. Subsequent applications will try to design their communication around the channels that are available, but when this is not practical, they will require that additional channels be added. When a set of applications already use a certain set of channels, and new applications wish to join in, they too will use the existing set of channels. When existing applications add new functionality, they may require new channels.

Unidirectional channels — Another common source of confusion is whether a Message Channel is unidirectional or bidirectional. Technically, it’s neither; a channel is more like a bucket that some applications add data to and other applications take data from (albeit a bucket that is distributed across multiple computers in some coordinated fashion). But because the data is in messages that travel from one application to another, that gives the channel direction, making it unidirectional. If a channel were bidirectional, that would mean that an application would both send messages to and receive messages from the same channel, which—while technically possible—makes little sense because the application would tend to keep consuming its own messages, the messages it’s supposed to be sending to other applications. So for all practical purposes, channels are unidirectional. As a consequence, for two applications to have a two-way conversation, they will need two channels, one in each direction (see Request-Reply in the next chapter).

Message Channel Decisions

Now that we understand what Message Channels are, let’s consider the decisions involved in using them:

One-to-one or one-to-many — When your application shares a piece of data, do you want to share it with just one other application or with any other application that is interested? To send the data to a single application, use a Point-to-Point Channel. This does not guarantee that every piece of data sent on that channel will necessarily go to the same receiver, because the channel might have multiple receivers; but it does ensure that any one piece of data will only be received by one of the applications. If you want all of the receiver applications to be able to receive the data, use a Publish-Subscribe Channel. When you send a piece of data this way, the channel effectively copies the data for each of the receivers.

What type of data — Any data in any computer memory has to conform to some sort of type: a known format or expected structure with an agreed upon meaning. Otherwise, all data would just be a bunch of bytes and there would be no way to make any sense of it. Messaging systems work much the same way; the message contents must conform to some type so that the receiver understands the data’s structure. Datatype Channel is the principle that all of the data on a channel has to be of the same type. This is the main reason why messaging systems need lots of channels; if the data could be of any type, the messaging system would only need one channel (in each direction) between any two applications.

Invalid and dead messages — The message system can ensure that a message is delivered properly, but it cannot guarantee that the receiver will know what to do with it. The receiver has expectations about the data’s type and meaning; when it receives a message that doesn’t meet these expectations, there’s not much it can do. What it can do, though, is put the strange message on a specially designated Invalid Message Channel, in hopes that some utility monitoring the channel will pick up the message and figure out what to do with it. Many messaging systems have a similar built-in feature, a Dead Letter Channel for messages which are successfully sent but ultimately cannot be successfully delivered. Again, hopefully some utility monitoring the channel will know what to do with the messages that could not be delivered.

Crash proof — If the messaging system crashes or is shut down for maintence, what happens to its messages? When it is back up and running, will its messages still be in its channels? By default, no; channels store their messages in memory. However, Guaranteed Delivery makes channels persistent so that their messages are stored on disk. This hurts performance but makes messaging more reliable, even when the messaging system isn’t.

Non-messaging clients — What if an application cannot connect to a messaging system but still wants to participate in messaging? Normally it would be out of luck; but if the messaging system can connect to the application somehow—through its user interface, its business services API, its database, or through a network connection such as TCP/IP or HTTP—then a Channel Adapter on the messaging system can be used to connect a channel (or set of channels) to the application without having to modify the application and perhaps without having to have a messaging client running on the same machine as the application. Sometimes the "non-messaging client" really is a messaging client, just for a different messaging system. In that case, an application that is a client on both messaging systems can build a Messaging Bridge between the two, effectively connecting them into one composite messaging system.

Communications backbone — As more and more of an enterprise’s applications connect to the messaging system and make their functionality available through messaging, the messaging system becomes a centeralized point of one-stop-shopping for functionality in the enterprise. A new application simply needs to know which channels to use to request functionality and which others to listen on for the results. The messaging system itself essentially becomes aMessage Bus, a backbone providing access to all of the enterprise’s various and ever-changing applications and functionality. You can achieve this integration nirvana more quickly and easily by specifically designing for it from the beginning.

So as you can see, getting applications set up for Messaging involves more than just connecting them to the messaging system so that they can send messages. The messages must have Message Channels to transmit on. Slapping in some channels doesn’t get the job done either. They have to be designed with a purpose, based on the data type being shared, the sort of application making the data available, and the sort of application receiving the data. This chapter will explain the decisions that go into designing these channels.

To help illustrate the patterns, each one has an example from a ficticious, simplified "stock trading" domain. While none of these examples should be used as the basis for implementing a real trading system, they do serve as quick and specific examples of how the patterns can be used.


Home • Patterns • Table of Contents Previous Previous   Next Next

© 2003 Gregor Hohpe • Bobby Woolf • All rights reserved.

谈中国电子商务(五)网上分店与虚拟加盟

2009/05/10 – By 数位之墙 – 关键字/标签:电子商务 搜索引擎 门户网站 网络广告 B2C 品牌


》高阶工作机会《 – 年薪100万台币及15万人民币以上的工作
供应链经理级 Sales/Account Manager (苏州) 电子商务/客户服务主管 电源研发工程师/经理/处长 客服资材主管 客户服务主管(处长级以上) 设备及自动化设计高阶主管 (桃园) 机构技术主管  更多

 

◎开设分店成本低廉

 

由于电子商务是「电子」加「商务」,也因此有很多传统商务的运作方式被使用到互联网来。例如我们常听到的直营分店,加盟连锁,代理经销等。这些模式的原理不论在线或线下都一样,但在在线的部分,实际做法则会因互联网擅长处理信息流的特性而有所不同。

 

建立一个电子商务网站独立经营,基本上就算是直营店模式。看似简单,但是却也面临了「店要开在哪里」的问题。大部分网上直营店面临的困扰是,不做推广就没人潮流量,一旦做推广,购买网络广告的效果很差,成本高又吃不消。

 

把店面开在深山里,然后到大都市的市中心去发传单,希望消费者到店里购物,这难道不是大部分初创电子商务公司在干的事情吗?如果把「到大型网站购买网络广告」当成销售渠道来看,这种渠道的销售效率是非常低落的。

 

对比到实体世界的商务,大家都知道开店要开在人潮聚集处,要开在市中心而不是深山里。而「网上的市中心」在哪里?这就难怪有些电子商务网站选择到淘宝去开分店了。在实体世界,开分店的成本很高,而在虚拟的世界里,开分店无非就是另外建立一套系统而已。

 

这就是直营分店模式搬到网上的差别:你可用低廉成本在网上建立无数分店。然而,人潮聚集处并非只有淘宝。新浪搜狐等门户网站以及百度谷歌等搜索引擎,校内网开心网等社交网络,都可能摇身一变成为新的开店平台,吸引大量B2C 业者来开分店,或乾脆在此开直营店。

 

◎虚拟加盟的运作方式

 

在实体世界里,除了直营分店之外尚有加盟模式。由加盟者出资获得 品牌与经营授权,甚至负担店租与店内硬件设施成本,开设与直营店相类似的店面。因为在实体世界里开设分店的成本太高,所以经营者才需要透过加盟模式将这个成本转嫁给加盟者,达到快速展店目的。

 

由于在网上开分店的成本太低,这种模式在网上比较少见。然而,因为互联网擅长处理信息流的特性,却诞生出新的「虚拟加盟」方式。电子商务经营者与加盟者之间采用销售后分成的方式合作,而加盟者则获得一个自己的授权网店的网址,可用于推广。

 

例如,网上超市「一号店」(http://www.yihaodian.com)就采取这种方法,开设了「天涯一号店」(yihaodian.tianya.cn )以及「新浪乐居一号店」(http://yihaodian.house.sina.com )。这种类似于开设分店的方式,最大的不同在于与合作方采取售后分成的方式。

 

 

此外,从加盟店网址来看,加盟者似乎有一个自己的店面。但其实不论开设多少加盟店,最终交易都是发生在原来的直营店,加盟者根本没有自己的系统。当新浪用户来到一号店时,一号店就换上新浪招牌;当天涯用户来到一号店时,一号店就换上天涯招牌,如此而已。

 

不论交易是怎么发生的,背后的客户服务,物流,金流,其实都是由原来的直营店面完成,加盟者仅需专心在想办法导入人潮流量到加盟店网址去进行消费。这种加盟系统可以再扩大到个人,最终行成加盟体系(Affiliate Program) ,让即使是博客的经营者也可加盟。

 

◎销售后分成将成主流

 

Affiliate Program 可以翻译成「夥伴计画」,这个由Amazon发扬光大的推广模式,在西方世界已经行之有年非常成熟,可视为是完全看透了互联网擅长处理信息流特性的典范。在中国,知名的网上男性衬衣销售商Vancl 的发迹部分原因就是靠著Affiliate Program 。

 

在2005年的时候,有些台湾的电子商务公司到大陆来开疆辟土。当时大陆的电子商务环境还不太成熟,对方很惊讶的跟我说,大陆的网际网络流量很不值钱,流量很大,但是对电子商务公司来说,要的不是流量而是销售,而大陆的互联网流量大部分无法转换成销售。

 

这个问题相信是目前大部分电子商务公司的问题。你可以花大钱到新浪去买广告,但是新浪的广告所带来的流量最终转化成销售的比例却很低。而,新浪理所当然的不保证效果,他甚至不保证广告有人点击。在这种情况下,依照销售后付款的广告型态,将在中国逐渐兴起。

 

这种业界称为CPS (Cost Per Sale ,销售后分成)的广告型态,逐渐出现在中国大陆的广告市场,类似的广告联盟也不断冒出。由于广告曝光(CPM )与广告点击(CPC )对电子商务公司来讲,如果没有转化成销售都没用的,在B2C 大潮来袭之下,CPS 广告将成一大主流。

 

有了分店与加盟,还需要网上代理商与经销商吗?由于网上销售等于直接面对终端客户,传统经销代理制度对网上商城来说似乎不再必要。然而,传统行业在开设自己的网上商店时还是引入了这种体系,例如李宁的网上销售战略。这更多是出于价格/品牌/渠道管制的考虑。 (文:数位之墙

Fwd: 采用EJB开发的三个优势

IT专家网 web服务子站  我的主页 | 我的资料 | 取消订阅   
征稿
IT专家网web服务子站每周免费邮件,为IT专业人士及企业级用户提供及时、专业的WEB服务信息及相关技术,包括行业新闻、专家答疑、Web服务发展、Web服务开发、成功案例、新技术推荐等最新信息。欢迎向我们发送您的反馈意见:baocl@ctocio.com.cn

独家奉送

采用EJB开发的三个优势
JAVA语言已经慢慢的在成为主流的开发语言之一,或者说现在已经成为了主流的开发语言。在JAVA语言平台上,也出现了多种开发模型……
现在JAVA开发平台上主要有两种架构,分别为B/S模式与C/S模式。一些软件开发人员在向B/S模式转换的过程中,遇到了一个难题。即需要重新修改原先的B/S架构才能够顺利过渡到B/S模式下……

讨论区

技术趋势方案案例

REA,RIA规范化发展趋势(一)
当今的开发者被期望能够在更广阔的领域工作,平台,架构,语言,基本上”掌握所有的领域,但是在任何领域也不是专家”。你的IDE也需要与时俱进,需要超越简单的编译程序以及调试器来解决当代开发者面临的挑战 ……
自从1999年作为Java (BC4J)业务组件开始,ADF业务组件(ADF BC)已经有很长一段时间。

专家答疑

 

BBS/BLOG

 

美国1105独家精华文章

All Rights Reserved, Copyright 2004-2008, TMG – CTOCIO

Twitter发布的招聘信息

  新浪科技讯 北京时间4月2日下午消息,据国外媒体报道,就在业内人士对Twitter发展战略争论不休时,Twitter发布的招聘信息却透露出一些端倪。从Twitter招聘职位来看,该公司计划加强与合作伙伴的关系,提升数据仓库技术,增强搜索引擎功能并巩固日本业务。

  有15个职位进行招聘

  Twitter的招聘页面显示,该公司计划招聘一名战略关系主管、一名商业智能软件工程师、一名日本区域经理、几个软件工程师和几个与搜索引擎相关的职位。此次共招聘15个职位,相对于目前员工总数仅为25至35人的Twitter而言,已经是一个不小的数字了。今年2月,Twitter曾宣布,已经在最近一轮的融资中成功获得3500万美元投资。

  Twitter并未立刻对此发表评论,因此尚不清楚该公司目前已经招满多少职位。无论这些职位招聘状态如何,此举的确为那些迫切希望了解Twitter的人提供了一些信息。

  组建创收团队

  Twitter战略合作主管的职位描述为”在我们这个以产品和工程为导向的企业中,这是第一个业务开发职位。”这表明,Twitter目前正在开始组建创收团队。Twitter战略合作主管将对合作需求进行评估,制定合作战略并寻求和达成合作协议,尤其是与那些”能够推动Twitter分销业务的”传媒和互联网公司进行合作。

  此外,随着Twitter使用量的极速攀升,该公司很明显希望从数据仓库和数据分析技术中实现价值。这一点能够从Twitter准备招聘商业智能软件工程师看出来。Twitter希望此人能够全程监督的商业智能项目,”从原始数据到数据仓库再到数据报告”。该系统要能够根据预先设定的参数生成预定报告,同时也需要提供出于数据挖掘目的而进行的SQL检索。

  市场研究公司Forrester Research分析师鲍里斯·埃威尔森(Boris Evelson)说:”Twitter既有可能只是想要利用商业智能来分析其财务和运营数据,又有可能是希望对Twitter信息、用户状态、以及用户当前的交流进行复杂的分析。”

  但他认为第二种可能性更大,这是因为招聘信息中写到,此人最好具备数万亿字节数据和日交易量过百万字节的环境中的工作经验,而且最好具备雅虎等公司所采用的Hadoop分散式计算框架的相关知识。而且,该职位还要求应聘者”在技术文档和要求较少或缺失的情况下开发前所未有原型系统”。

  加强搜索业务

  Twitter还计划招聘几个与搜索相关的职位,包括:一名搜索运营工程师、一名搜索产品经理以及一名搜索软件工程师。除了作为微型博客先驱,Twitter也凭借着庞大的用户群成为一种未来搜索趋势,即实时搜索的典型代表。

  Twitter招聘信息显示,搜索产品经理需要定义Twitter搜索引擎的新产品和新功能,而且要能够”深刻理解和准确把握”用户体验设计。有趣的是,Twitter希望该职位的应聘者能够对搜索广告有所理解,很明显,Twitter希望利用搜索引擎来盈利。

  搜索软件工程师则需要对搜索应用和基础设施进行设计、实施和维护。而搜索运营工程师也会对Twitter的搜索引擎团队起到扩充作用。

  巩固日本业务

  日本区域经理的作用是增强Twitter日文版网站的业务。因为Twitter的日本用户非常多,Twitter于一年前发布日文版网站。Twitter日文版是与日本多媒体公司Digital Garage合作开发的,后者对Twitter进行了投资,并为该项目提供工程和开发资源。

  目前还不清楚Twitter日本区域经理是否会接管Digital Garage此前的一些任务,或者说该职位是否会负责重新定位Twitter与Digital Garage之间的合作关系。但职位描述信息显示,Twitter日本区域经理将拥有非常广泛的职能,包括领导Twitter日本业务的运营。

  该人选还需要在日本地区建立合作关系并肩负Twitter在日本的投资,同时还需制定本地化战略和招聘计划并为Twitter在日本的使用和趋势等数据创建监控系统。这一人选还要帮助Twitter拓展除日本以外的海外市场。

  酷勤Twitter:http://twitter.com/kuqin
  酷勤嘀咕:    http://digu.com/kuqin

xianguo鲜果架构得有点糟

鲜果xianguo.com,按说已经很长的一个RSS订阅服务了吧?

今天在MarsOpinion.com尝试顶一下,要求登录xianguo.com
忘了密码,重置。收到重置信:
xianguo-resetpass.jpg
如上。发件地址是sevice,不是个有效的EMail地址。

查了查,Gmail内没找到以往首次注册时的通知信,也许是没有的?
再想了下,试了几个密码。试对了。返回MarsOpinion,得到以下结果:
Mars-BSO.jpg
想了下,这大概是Mars' WordPress编码问题。