BMTD 's Yard of Fun

Technology, Sports, Music, Chinese Essays

Browsing Posts in Software

p2p协议中gnutella protocol 传输效率低下,gnutella based clients的market share也逐渐减少,早已是irrelevent的东东。同样具有search功能的eDonkey/eMule network在大文件共享上要强得多。

但现在国外在p2p Streaming上实用的东东PeerCast (open source)却是基于gnutella协议的,用于audio streamming效果很不错, video效果感觉一般。

国外还有几个propreitery protocol的免费p2p streaming软件:p2pRadio是open source的用java写的,StreamerP2P是一个closed source产品。

在VOD或realtime broadcast之类的流媒体应用上真正有前途的的还是象bittorrent之类的高效swarming技术。除了大家提到的coolstreaming外, 国内还有几个类似的产品--据我所知这方面这几个国人的产品是走在了前列。

另外许多人正在研究增强bittorrent本身,例如搜索功能,与RSS结合等。现在已经有几个这方面的东东。

还有一个突破性的产品是swarmstream–号称具有接近BT的throughput但又能保证数据包的接收顺序–这是streaming技术梦寐以求的功能。虽然$5000一套SDK, 还是物有所值。

VPS stands for virtual private Server, a techology to divide a server into multiple “virtual machines” and each of the “virtual server” can run its own operating system as if it’s a standalone server. VPS is mainly used for Web hosting. It can also be used toestablished “sandbox” or for demo/testing purposes etc.

The technology is based on virtual machine technology that exists for a while.

Virtual server products that I know of:

– IBM had the technology (named zen?) to divide a mainframe into bunches of vritual servers running linux several years ago(they call it “partition”);
– The latest Sun solaris 10 also had this feature (they call it “zone),…
– virtuozzo
– open source Linux projects like Linux VServer , Xen ,freeVPS and UML (UML is the slowest in terms of performance) for linux,
– Jail for FreeBSD
– freeVPS
– openVPS (based on linux-VServer )
–VMWare server
–Even Microsoft has the Microsoft Virtual server 2005 (http://www.microsoft.com/windowsserversystem/virtualserver/default.mspx) running on top of Windows server 2003.

w.bloggar supports writting and publishing blogs from desktop for many blog sites and blog tools such as blogger, movableType, B2, WordPress, .Text etc.

This post was created nad published by w.bloggar.

After extensive search, reading, comparing and trying, finally I limited my choices to the following three:

– exo platform
– Liferay
– uportal

All of them have JSR 168 support, which is my basic choosing criteria. Still they all have pros and cons:

– exo platform: the most technically advanced; has all the buzz words like JSR 168, JSR 170, WSRP, IOC, JSF etc; it uses PICO, the light-weight IOC framework; it also uses JSF as the portal presentation technology and has an eclipse plug in for developing (and hot deploy?) portlets. This is a combination of portal server and CMS. The cons is that it’s still not quite mature yet (in release 1.0 RC phase), and it’s difficult to find documentation on their web site. Another thing I am concerning about exo is the scalability– based on somebody’s load testing the result is not as good as liferay or UPortal when load increases– the reason is perhaps to do with use of EJB, caching, and so on.

–Liferay: I like their new architecture with integration of the spring framwework, hibernate etc, so that you have the benefits of Spring IOC and AOP, and can decouple the business logic from the deployment architecture– whether running in a servlet container or delegated by session EJBs. Also they have the biggest collection of ready-to-use portlets among the three, which can reduce lots of work on developing custom portlets. Liferay is a 6-year project , pretty mature and realworld-proved now. Their license model is business-friendly. The downside is that the JSR168 support has just been added recently , and there is no good JSR 170, WSRP support yet… Also I was told that the layout mechanism is not as flexible as exo’s.

– JASIG-Uportal: I don’t quite like the current “channel” concept which is to be replaced by JSR-168 compliant portlets. Uportal is designed for universities, this may help us a lot. Need to look at the design and avalable features to see how well it can be reused on pre-college school education. Their documetation is quite complete.

It’s difficult to decide at this moment. still need to download and try each of them one by one, and look into the source code, the supporting community etc.

I may also take a second look at openuss , which is integrated with liferay but seem to tie to JOnAs and Enthydra. Personally I prefer Tomcat+JBoss for Application servers.

One of my old posts, with some thoughts apparently not true or outdated in today’s view; just put it here to fill the space 😉

— The technical platform selection first is determined by what kinds of resources/expertise the developemnt team have.

— Language by itself: PHP is a scripting language, like VB script used in ASP. whileas Jsp and asp.net are pre-compiled when serving the request, Java and ASP.NET(whether C# , VB.net, J# or others) are full-fledged object-oriented language; PHP is still not full OO before version 5 . Traditional COM based ASP mainly uses VB/VBscript, which sucks.

— Enterprise level Services: J2EE and .NET and the traditional ASP (with microsoft DNA architecture built around COM/DCOM and MTS/COM+) provides enterprise level services such as component services, security, transaction management, object pooling, O/R amapping, clustering etc so that the application developer can focus on the application logic, and they are proven technologies in large-scale applications of various industries. PHP is weak at this area: You probably need to build the frameworks by yourself in a large scale/complex distributed system.

— About Software Design: Java/C# etc are good OOP languages and suitable of applying OO design patterns. Among the two, Java community is more design-patterns aware, with J2EE spec requesting developers having design patterns in mind when deisgning applications. Microsoft’s development tools, especially Visual Studio for ASP.NET emphersise on the usability and simplicity for the developer and don’t require advanced design knowledge. There are pros and cons of both approaches. J2EE’s approach makes it difficult for beginners, also the lacking of good IDE support (hopefully new IDEs with good JSF support will catch up) makes even very simple application development a complicated process. ASP.NET approach makes it easy for simple apps and beginners, but has more retrictions when you want to go more advanced steps.

There are lots of open source frameworks in J2EE to improve productivity and enforce design patterns, such as MVC frameworks like struts, webwork or JSF/ASP.NET types framework such as echo. ASP.NET basically is a page-level MVC framework. The use of framework can enforce the design pattern but on the other hand the developer is restricted by the framework’s own limitations.

AOP (Aspect-oriented programming) is one of the most hyped software engineering methdologies. There are lots of projects provides AOP in Java now, either through a language enhancement (aspectJ) or through frameworks utlizing bytecode enhancing or runtime reflection/Dynamic proxy(Spring, AspectWerkz, JBossAop etc). MS .Net currently does not have any of this, but probably will eventaully have similar features.

— tradional COM based ASP (asp 3.0) is currently widely used, but there are lots of issues with the technology and that’s why MS is discarding it and come up with .net.

— Lots of J2EE features are now being ported into .NET– for example in the up-coming asp.net 2.0, things like JDO or Hibernate type of O/R mapping is being added; The new “MS build” concept is stolen from the Apache Ant project; And because of the similarity between Java and C# languages, actually there are lots of open source Java frameworks are being ported to .NET: ant, junit, hibernate …; It’s similar vice versa: The Sun JSF specification is about the same concept as the ASP.NET web forms.

— When it comes to a web application, it is much faster to prototype it in PHP and ASP.NET than in Java without WYSIWYG IDE support.

— About backend Database systems: Although APache+PHP+MySQL is popular in building web apps, MySQL is not yet matured for complex systems, since up till now it still lacks some important features in a RDBMS: subselects, stored procedures, triggers, views, foreign key referential integrity etc. It just recently added transaction support with the help of innoDB
engine. All major commercial DBMS beat it in terms of features and performace under heavy multiple users, complex queries, and read/write query load. MySQL is faster for simple SELECT queries. If going for Open source DBMS, then Postgres SQL is a better choice both in features and licenses(truly open source ).

–Scalability: There is an never-ending argument between different camps. But I think the most important factor is the application architecture . If you build something that does not scale, it’s more of the design, not the language itself.

— vendor lock-in etc.

PHP and J2EE does not have the vendor lock-in problem.

At this moment ASP.NET do have the this issue. simply look at what MS did for Office users.

However, in the long run, .NET platform may not be a big problem for vendor lock-in. With (hopefully) the rise of open souce .NET implementations like MONO, we may not rely on MS for the .NET technology. but that’s not ture at this moment and quite possibly will never happen.

--Integration with other systems/platform:

traditional MOM middleware is well supported in java and MS technologies. they also support web services well. PHP also has some existing library supporting XML web services. PHP also supports calling other languages such as java.