2008년 8월 29일 금요일

How do I create SCORM content?

How do I create SCORM content?

From ClarolineDoc

Table of contents [hide]

A brief introduction to SCORM ...

The purpose of this page is to help you to build your own interactive courses using the Scorm standard so that they will work on any Scorm 1.2 compliant platform like Claroline 1.5.

There are different level of conformance in SCORM 1.2, what is discussed here only concerns Scorm 1.2 minimal conformance level.

A complete interactive course that is Scorm 1.2 conformant consist of a zipped file which contains all the files needed for the different lessons of your course. At the root of this zipped file we must also find a very important file called imsmanifest.xml. You must also organize your course in several « lessons » or « modules » (or whatever name you want to give to separate unit of learning activities inside the course) They are called SCO's (for Sharable content Object) in the Scorm standards. Here are the two important steps to proceed you must know this:

  • How to make SCO's.
  • How to aggregate them them into one content package and build the associated imsmanifest.xml file.

These two steps can be done in several different ways, we will try to explain some suggestions in this page to make it yourself. Some private (but somewhat expensive in general) solutions also exist to make the two steps through a WYSIWYG editor that allow you to build the packages and import you contents as flash or html pages, it package them for you and insert the javascript code needed to make your contents act like SCO's, see more about that kind of products in the Existing tools links section of this article.

Building your own SCO's

A single unit, lesson, or module into a course is called a SCO (Sharable content object) in the Scorm vocabulary. A SCO can consist in many different things : it can be an interactive quiz as just some web content pages in HTML, Flash,... A SCO is an entity that is able to communicate with the LMS (Learning managment system) using some special (JavaScript, ECMAscript) functions well defined in Scorm. We will see in this manual how to build some basic entities of that kind without having to code anything. Although it is possible do it in other technologies, we will only take a look at how to make some HTML pages to become a SCO.

Using a Dreamweaver extension : the SCORM runtime wrapper

This possibility requires you to use Dreamweaver MX, a trial version is available on the Macromedia web site : http://www.macromedia.com. You will also need to install the Scorm Runtime Wrapper extension also available on their site as a freeware. SCORM Runtime Wrapper Extension (http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&extid=329357) Install it using the Macromedia Extension Manager. See the help files or the Macromedia website to understand how to install it. Once this is done, open your HTML page(s) with dreamweaver.

Make a single HTML page to be a SCO

Making a new SCO with only one HTML page is very easy with the scorm runtime wrapper extension. When your page is opened with Dreamweaver, select the « commandes » menu and then « SCORM Runtime wrapper ». You should get the following pop-up window :

Image:MacromediaDreamweaverSCORMRuntimeWrapperDialog.png

Set Status onLoad : This option sets the status of the lesson (SCO) to the selected value when the page is loaded. We recommand to set the status to « Incomplete » like in the screenshot.

The Trigger for LMSFinish option allows you to decid what event will cause the lesson to end. We recommand to choose the 'Finish lesson' button which will add it at the top of your HTML page, but you can place it wherever you want it to be on the page.

Set Status Based on trigger : This option allows you to decide which status will be given to the lesson when it is ended. We recommand you to set it a « Complete » like in the screenshot.

For a single HTML page SCO, it is recommended to leave the default advanced options. The three checkbox should remain empty.

When you are done, just click on OK. This will insert in your HTML page some Javascript functions used for Scorm purpose. Save your page, this SCO is now ready to be put in a content package. If you use related files like images or javascript files in your page, pay attention to use relatives links to them in the page and use them as well for the packaging step.

Make a multiple HTML pages to be a SCO

It is also possible to build a SCO with more than one HTML page. According to the SCORM standard definition, there is a lot of different way to proceed this operation. To keep this simple, we will show you one simple solution to do it, still using the Dreamweaver extension and without having to edit anything in the JavaScript code generated by the extension. But this is, of course, not the only way to do it. Suppose that you have some pages that are your lesson content. There must be a start page to begin the lesson. For this page, proceed just like in the last chapter, but set the advanced options like this :

Image:MacromediaDreamweaverSCORMRuntimeWrapperDialogDisableLMSFinish.png

Disable the LMSFinish option for the start page. The other pages of your lessons should normally be accessible from the start page. As the user navigate through the pages, he will finally arrives on a page that ends your lesson/SCO. For this kind of page, you must then reuse the SCORM wrapper and set the options like this :

Set the advanced option « disable LMSInitialize » to checked. Set Status Based on Trigger option to « Complete ».

Note. if you have more than one page that can be an end page for the lesson, 
you can set different status depending on the fact that arriving on  this page means 
that the user completed or  failed the lesson. Be aware that you must have at least one 
end page that allows the user  to finish the lesson with either the « Complete » or the 
« Passed » status. This is required to let your SCO  behave correctly on any SCORM 
compliant platform, as it must be possible to finish your SCO correctly.
For all the other middle pages (that neither start the lesson, nor end it) you 
must NOT change anything with the wrapper. They should stay browsable pages  as normal 
web pages.  

When you are done with this, your multiple page SCO is ready to be put in a content package. Pay attention to use only relative links between your pages and for your image files. Subdirectories of images or javascript files for example can be used as it is and need no change to be use in the SCO.

Writing your own Scorm Javascript calls to build SCO's and track user informations

If you are familiar with HTML and Javascript coding, it is also possible to write your own SCO's and tracking interactions. In this chapter, we will explain the main features of Scorm you need to know to write your own interactive SCO's and give some tips and examples.

Using the API javascript functions

With Scorm, the dialog between the Scorm compliant LMS (Learning Managment System, the webserver like Claroline for example) and the SCO (your pages) is made in Javascript, using some specific fucntions of a Javascript object named API. It is the responsablility of the LMS to create this object and its related functions in Javascript. But it is the responsablility of your SCO to find this object and to use the functions. All you need to know is then :

  • How to find the API object ?
  • Which function of this object to use and what for?

Finding the API object is quite simple: you can simply add the following javascript code at the beginning of your start page of the SCO:

<script type="text/javascript" language="JavaScript">

var API = null; /* SCORM API */

/* look up through the frameset hierarchy for the SCORM API */
function findAPI(win)
{
	while ((win.API == null) && (win.parent != null) && (win.parent != win))
	{
		win = win.parent;
	}
	API = win.API;
}

/* init the SCORM API */
function initAPI(win)
{
	/* look for the SCORM API up in the frameset */
	findAPI(win);

	/* if we still have not found the API, look at the opener and it's frameset */
	if ((API == null) && (win.opener != null))
	{
		findAPI(win.opener);
	}
}
</script>
Note. You could also put it into a .js file so that it can be reused for your other SCO's.

Then modify the onload event of in <body> to call this function :

<body onload="initAPI(window)">

The SCORM API is now correctly used to tell the LMS that the SCO is launched when the start page is browsed. There are other functions of the SCORM API you will have to use :

API.LMSInitialize("")
API.LMSFinish("")
API.LMSGetValue(dataElement)
API.LMSSetValue(dateElement, value)

Some other functions exists in the Scorm standards, report to the official web site of Scorm to get more information about that: http://www.adlnet.org.

The LMSInitialize function should be called when the SCO starts. Indeed, when the user load the first page of the SCO.

The LMSFinish function should be called when the SCO ends. This could be triggered by an onunload event of the last page of the SCO or by adding a button « done » or « end » on the last page(s) of your SCO. This implementation is up to you, but you must also be aware that each of these solution could give better or worse on some Scorm compliant player, depending on how they implement the Javascript API.

There are several data elements that you can get or set using the LMSSetValue and the LMSGetValue functions of the API. We won't explain all of them but we will show you some of them that we found interesting to track some useful user progression informations in your SCOs.

The API data elements you can use

cmi.core.score.raw element : store the score of the user in this lesson. It must be a normalized value bteween 0 and 100. (%) cmi.core.lesson_status element : store the status of the lesson for this user, permitted values are : passed, failed, completed, incomplete and browsed.

A good practice of use of this element in your Javascripts could be the following : Set this element at « browsed » or « incomplete » when the lesson starts (in the init function for example) :

API.LMSSetValue("cmi.core.lesson_status", "incomplete");

Set it as « passed » or « failed » when the user arrives on a end page of your lesson, depending on the score he got the the tests and questions in the lesson.

API.LMSSetValue("cmi.core.lesson_status",  "passed");

We will give two example of tracking information that you could code in javascript quite easily. For further information about the tracking element you could use with Scorm, please refer to official documentation on http://www.adlnet.org.

Tracking user's score in a SCO

Let's suppose that your lesson / SCO contains some exercises, quizz... and that the total result is stored in a Javascript variable called totalScore. You can report this information to the server with the data element « cmi.core.score.raw ». When the exercise is done, just add the Javascript call

API.LMSSetValue("cmi.core.score.raw",totalScore ); 

Where to put this call exactly depend on how you organized your HTML page(s) with the quizz. It could be on the event triggered when a « submit » button is pressed (using the onClick event in javacript) as well as on the onload event of the last page of your test that shows the correct answers for example. The decision is up to you. All you have to know is that the score wil really be saved on the server only when this call will happen and that a call to LMScommit and/or LMSfinish is done.(this depend a lot on the LMS you use).

Tracking time spent by user in a SCO

You could also want to track the time spent by the user in your lessons. Here is a javascript solution using scorm to do so :

  • Set the time spent by the user in the lesson whenever the LMSFinish function is called, by calling just before the LMSsetValue like this :
var myTime = computeTime(); 
API.LMSSetValue("cmi.core.session_time",myTime ); 
API.LMSSetValue("cmi.core.lesson_status", ScormStatus);
API.LMSFinish("");
  • Declare the following Javascript functions :
function startTimer()
	{
	startDate = new Date().getTime();
	}
function computeTime()
	{
	var formattedTime = "00:00:00.0";
	if ( startDate != 0 )
   		{
      		var currentDate = new Date().getTime();
      		var elapsedSeconds = ( (currentDate - startDate) / 1000 );
      		formattedTime = convertTotalSeconds( elapsedSeconds );
   		}
	return formattedTime;		
	} 

function convertTotalSeconds(ts)
	{	
	var Sec = (ts % 60);
	ts -= Sec;
	var tmp = (ts % 3600);  //# of seconds in the total # of minutes
	ts -= tmp;              //# of seconds in the total # of hours
	if ( (ts % 3600) != 0 ) var Hour = "00" ;
	else var Hour = ""+ (ts / 3600);
	if ( (tmp % 60) != 0 ) var Min = "00";
	else var Min = ""+(tmp / 60);
	Sec=""+Sec
	Sec=Sec.substring(0,Sec.indexOf("."))
	if (Hour.length < 2)Hour = "0"+Hour;
	if (Min.length < 2)Min = "0"+Min;
	if (Sec.length <2)Sec = "0"+Sec;
	var rtnVal = Hour+":"+Min+":"+Sec;
	return rtnVal;
 	}

The function startTimer() should, in this case be called at the begining of the lesson (same time as the LMSinitialize()), when the first page is loaded or whenever you think that the lesson really starts depending on the content you put in the lesson or that the time should be counted.

A complete example : a single page Quizz SCO with score tracking

Coming soon...


Creating the SCORM Manifest

A SCORM manifest is an XML file (imsmanifest.xml) that describes a course. The manifest file provides metadata such as the title and description of the course, the sequence of the SCOs, the name of the launch file for each SCO and a list of all of the files in the course. Manifest Maker (http://www.e-learningconsulting.com/products/index.html) is a free Dreamweaver extension that you can use to create SCORM manifest files.

Existing tools links

free tools :

  • The Reload Editor and the Reload SCORM player : http://www.reload.ac.uk Those tools are open source java applications :
    • The Reload Editor : this tools allows you to create and edit an IMS manifest with a convinient graphical interface to visualize its content.
    • The Reload SCORM player : This toolkit allows the playing of SCORM 1.2 packages; You can easily see the behaviour of the content and visualize what happens with the SCORM API.
  • The EClass Opensource project (BSD license) :http://www.eclass.net This tool allow to build IMS packages with html pages, but not yet with interactive SCORM and not yet as an archive directly usable and uploadable into Claroline. Further version might integrate this option.
  • The eXe project : a promizing opensource project, this tool allows you to create structured contents (learning paths with quizes, ...) and export them with the SCORM format. The exported contents work fine within Claroline. http://exe.cfdl.auckland.ac.nz
  • MOS Solo : [1] (http://www.moschorus.com/centre/MosPub/solo_fr/index.html). Windows application to create IMS Packages and SCORM contents.
  • CourseLab : [2] (http://courselab.com/db/cle/default.html). Windows application to create IMS Packages and SCORM contents.

others :

  • ReadyGo webcourse builder : http://www.readygo.com allows the creation of html/javascript interactive SCORM contents.
  • A free dreamweaver extension is available here : e-Learning Course Development Kit (http://www.e-learningconsulting.com/products/index.html) HTML developers can create SCOs using it.
  • E-Doceo E-learning maker : http://www.e-doceo.fr This tool allows you to build interactive contents in Shockwave or Flash that can be exported as SCORM packages.
  • Lectora
  • ...

2008년 6월 10일 화요일

JBOSS 설치 및 ANT관리

JBoss 탐험기를 다루는 본 기사에서는 오픈 소스 프로젝트로 진행되는 EJB 컨테이너인 JBoss의 설치부터 시작하여 간단한 예제를 만들고 실행하는 과정을 다룰 것이다. 본 기사는 EJB를 공부하고 싶어하는 자바 엔지니어(단, 초급자 제외)를 대상으로 작성되었다. 특히, 금전적인 부담으로 인해 상용 EJB 컨테이너를 살 능력이 없는 사람에게는 더욱 더 도움이 될 만한 기사이다. 왜냐… 공짜이니까…

1. JBoss 소개

http://sourceforge.net/projects/jboss/에 가면 다음과 같은 내용이 있다.
The JBoss/Server is the leading Open Source, standards-compliant, J2EE based application server implemented in 100% Pure Java…
쉽게 말해서 100% 자바로 구현되는 J2EE 기반의 애플리케이션 서버이며 오픈 소스 프로젝트로 진행되고 있다는 것이다. J2EE나 EJB 또는 애플리케이션 서버라는 용어에 낯선 분들은 아마도 이 글을 읽기에는 아직 무리인 듯 싶다. 좀더 내공을 쌓은 뒤에 읽어보시길…

어쨌거나 시중에는 많은 상용 애플리케이션 서버들이 있지만 대부분이 고가의 제품이고, 가난한 개발자들에게는 그림의 떡이다. 물론 평가판을 사용할 수도 있지만 사용 기한이 지나서 사용할 수 없다는 메시지를 보면 가슴이 여간 아픈 것이 아니다. 그러나 JBoss를 사용하면 이런 상처를 받을 필요가 없다. 게다가 소스도 공개되어 있으므로 여력이 된다면 자신이 직접 개발에 참여할 수도 있다. 혹자는 "아무래도 싼 게 비지떡이 아닐까?"라고 의심하는 사람도 있을 것이다. 물론 JBoss에도 버그가 존재하고 상용 제품처럼 화려하지도 않고, 아직 미약한 부분들이 존재한다. 하지만 버그 없는 프로그램이란 어차피 존재하지 않는 것이고(그것이 상용 프로그램이라 할지라도), 공짜로 사용하면서 이 정도 기능과 성능을 내는 제품은 드물 것이다. 서론이 너무 길면 지루하므로 JBoss에 대한 탐험을 바로 시작하자. (본 기사에서는 EJB 컨테이너, J2EE 기반의 애플리케이션 서버는 같은 의미로 사용된다)

JBoss 3.0은 J2EE 1.3을 기반으로 구현되어 있다. 지원하는 각각의 자세한 사항은 아래와 같다.
  • JDBC 2.0(3rd party)
  • JCA 1.0
  • Servlets/JSP 2.3 (Jetty + Tomcat)
  • JNDI
  • EJB 2.0, full CMP 2.0 engine
  • JMS 1.1
  • JTS/JTA
  • JavaMail
  • Clustering
아래 [그림 1]은 JBoss의 구조를 나타낸다. JBoss는 모든 기능이 JMX(Java Management Extensions) 기반에서 수행된다. JMX는 다양한 플랫폼과 네트워크 프로토콜에 관련된 문제의 해결책을 제시하는 자바 환경의 장점을 관리 기능에서 사용하기 위해 개발되는 것이다. 현재 텔레커뮤니케이션이나 데이터 통신 분야에서 주로 사용되며, 웹로직 서버에서는 웹 기반의 개발자와 관리자들을 위한 구성과 관리, 모니터링을 위한 툴을 제공하는 데에 사용되고 있다. JMX에 대한 자세한 사항은 썬사의 홈페이지(http://java.sun.com/products/JavaManagement/)를 참고하기 바란다.


[그림 1] JMX 기반의 JBoss 아키텍쳐

우리의 관심은 오로지 JBoss이기 때문에 J2EE에 대한 자세한 사항은 다루지 않겠다. J2EE에 대한 보다 자세한 내용은 이미 시중에 출판된 책이나 자료도 많이 있으므로 그러한 자료들을 참고하기 바란다.

2. 다운로드 받기

2.1. JBoss 다운로드 받기

JBoss 사이트(www.jboss.org)에 가면 다음과 같은 문구가 있다.
JBoss 3.0.0 is our current beta, unstable version. It will run on 1.3+ JVMs…
JBoss 3.0이 베타 버전이라서 아직 안정적이지 않다지만 그냥 사용하기로 하겠다. 그리고 JBoss 3.0이 JDK 1.3에서 실행된다지만 이미 JDK 1.4를 설치했기 때문에 필자는 무시했다. 별 상관 없을 것 같다.

JBoss 사이트(www.jboss.org)에서 바이너리 파일을 다운로드 받자(참고로 http://sourceforge.net/projects/jboss에서도 다운로드 가능). 필자가 받은 파일은 Tomcat 4.0.3 버전이 포함된 것이다(jboss-3.0.0RC1_tomcat-4.0.31.zip). 파일 사이즈는 14 메가 바이트 정도로 이 파일에는 소스 코드를 포함하지 않는 바이너리만이 존재한다. 소스 코드를 원한다면 CVS를 이용하거나 소스가 압축된 파일을 받아야 할 것이다. CVS나 Ant 등에 익숙치 않은 개발자라면 바이너리를 다운로드 받는 것이 좋다. 소스 코드로부터 바이너리를 구축하는 데에는 많은 노력과 시간이 필요하기 때문이다. 마지막으로 예제와 문서들은 어디에 있을까? http://www.jboss.org/doco_files/에서 documentation-example.zip 파일을 다운 받자.

2.2. Ant 다운로드 받기

JBoss에서 제공하는 예제를 구축하기 위해서는 Ant라는 자바 빌드 도구가 필요하다. Ant는 Jakarta 사이트(http://jakarta.apache.org/builds/ant/release/v1.4.1/bin/)에 가면 다운 받을 수 있다. 본 기사를 쓰는 시점에서는 버전 1.4.1이 가장 최신 버전이다. 그러나 Ant도 버전에 따라 API의 변화가 있기 때문에 될 수 있다면 같은 버전을 다운 받아서 사용하기를 권장한다. Ant에 대한 다른 사항은 설치 후 매뉴얼을 참고하도록 하자.

3. 설치

3.1. Ant 설치

설치는 복잡한 것이 없다. 일단 사이트에서 다운로드 받은 압축 파일(jakarta-ant-1.4.1-bin.zip)을 적당한 위치에 풀어서 놓기만 하면 된다. 이 외에 몇 가지 환경 설정을 추가로 해줄 필요가 있다.

설치한 폴더가 c:\dev\tools\jakarta-ant-1.4.1 일 경우 다음과 같은 폴더들이 생성된다.
    /bin : Ant 실행을 위한 배치 파일이 있다(유닉스나 리눅스의 경우 쉘 파일 사용)
    /lib : jar 파일들
    /docs : 매뉴얼과 API 문서가 있다.
Windows 환경에서는 환경 설정을 다음과 같이 하면 된다.
set ANT_HOME=c:\dev\tools\jakarta-ant-1.4.1
set PATH=%PATH%;%ANT_HOME%\bin
유닉스나 기타 다른 OS에서의 설정에 대해서는 Ant 매뉴얼(http://jakarta.apache.org/ant/manual/install.html)을 참고하기 바란다.

※ 기타 ANT에 대한 더 자세한 사항은 위에서 말한 설치 후 매뉴얼 외에도 필자가 쓴 'ANT(상): Ant 무엇에 쓰는 물건인고?''ANT(하): Ant 무엇에 쓰는 물건인고?'를 참고하면 더 자세한 사항을 쉽게 알 수 있을 것이다.

3.2. JBoss 설치

JBoss 설치 이전에 JDK가 설치되어야 하는 것은 너무나도 당연한 것이다. JAVA_HOME 환경 변수와 클래스 패스가 적절히 설정되었는지 확인하자.

JBoss 설치는 간단하다. 적당한 위치에 압축 파일을 풀기만하면 설치는 끝난다. 필자의 시스템이 윈도우 2000이기 때문에 다른 운영체제를 사용하는 분들에게는 죄송하지만, 모든 과정은 윈도우 2000에서 작업한 결과임을 이해해 주면 고맙겠다.

필자는 JBoss를 D:\jboss-3.0.0RC1_tomcat-4.0.3 이라는 폴더에 설치했으며 편의상 이 폴더를 JBOSS_DIST라고 부르겠다. 그리고 환경 변수로 설정한다. 압축 파일을 풀면 [그림 2]에서 보는 바와 같이 아래와 같은 폴더들이 생성된다.


[그림 2] JBoss 설치 후 생성된 폴더들

3.3. 예제와 문서 설치

JBOSS_DIST 폴더에서 documentation-example.zip 파일의 압축을 풀면 [그림 3]과 같은 폴더 구조와 파일들이 생성된다.


[그림 3] JBoss 예제와 문서 설치 후 생성된 폴더들

3.4. 테스트

설치가 끝났으면 정상적으로 설치가 이루어졌는지 테스트 해보도록 하자. JBOSS_DIST 밑에 있는 bin 폴더를 보면 run.bat 파일이 있다. 사정없이 이 파일을 실행하자. 메시지가 마구 콘솔에 뿌려질 것이다. 한참을 그러다가 멈추고, 마지막에 16:17:24,235 INFO [Server] JBoss (MX MicroKernel) [3.0.0RC1 Date:200204150356] Started in 1m:3s:21ms 이런 비슷한 메시지가 보이면 서버가 실행되고 대기 상태에 있는 것이다.


[그림 4] JBoss가 실행된 화면

이제는 브라우저를 실행시키고 http://localhost:8080를 주소창에 입력하자. [그림 5]와 같은 화면이 보이면 일단 안심해도 된다. JBoss가 실행되면서 Tomcat도 같이 실행되기 때문이다.


[그림 5] JBoss와 Tomcat이 같이 실행되고 있다

브라우저에서 http://localhost:8082 를 주소창에 입력하면 아래와 같은 화면이 나온다. 여기에서는 현재 JBoss에서 실행되고 있는 컴포넌트들을 관리할 수 있다. 마치 게시판에서 관리자 화면을 제공하는 것과 같다고 할 수 있다.


[그림 6] JBoss 관리 화면

2008년 5월 20일 화요일

aLFanet overview

ALFANET project provides an eLearning adaptive platform that allows individuals to have an interactive, adaptive and personalised learning through the internet, and thus brings them the opportunity to learn on those matters that are relevant to perform and to improve their work. This core objective has been afforded through:

  • ALFANET focus on learner-centred pedagogical methods highlighting activity, collaboration and the importance of the instructional design.
  • ALFANET focus on adaptation through a set of components that make use and benefit from both technological and eLearning standards, and can be easily integrated in other eLearning platforms. The usage of eLearning standards, as IMS Learning Design, IMS-QTI among others, is of special relevance for the project and the global eLearning community, as the project provides a probe of concept of how to provide adaptation through standards interoperability.

ALFANET project focused on these innovative features contributes with the individual adaptive learning, and the improvement of eLearning in Europe.

The Consortium is made up by the following partners:


 

Active Learning for Adaptive Internet : aLFanet



 

2008년 4월 23일 수요일

Multi-tier

l         TIER

일반적으로 tier 일련의 비슷한 객체가 나열된 상태에서, 또는 계층을 의미한다. 컴퓨터 프로그래밍에서, 프로그램의 일부가 여러 계층에 나뉘어 존재할 있으며, 계층 또한 네트웍 상의 서로 다른 컴퓨터에 위치할 있다. 바로 이러한 프로그램을 Multi-tier Programming이라 한다.

Multi-tier Program 보통 '클라이언트', '애플리케이션서버', '데이터베이스서버' 3-tier 이상으로 활용되어 진다. 이렇게 만들어지는 다계층 프로그램은 비즈니스 로직의 대부분을 Middle-tier 되는 애플리케이션 서버 측에 부여함으로써 사용자측 프로그램을 가볍게 만들 있으며 서비스 규모에 따라서 여러대의 서버에 애플리케이션의 작업을 분산시켜 로드 밸런싱으로 인한 성능향상및 서버 장애에 대한 백업 시스템의 구축이 가능하다

 

l         2-tier

자바애플릿이나 어플리케이션이 JDBC를 이용해서 DBMS의 데이타베이스에 직접접근

 가장 대표적인 클라이언트/서버 구조

 프로그래밍이 간단하다는 장점

 보안, 로드 밸런싱, 확장성 (오브젝트 재사용) 등의 문제점

 2-tier 디자인이 적합한 경우

1. 애플리케이션이 하나의 데이타베이스만을 사용

2. 데이타베이스 엔진이 하나의 CPU에서 동작

3. 데이타베이스가 계속 거의 같은 크기로 유지

4. 사용자 기반이 같은 크기로 유지

5. 요구가 확정되어 변화 가능성이 거의 혹은 아예 없는 경우

6. 애플리케이션을 종료한 후에도 최소한의 지속성을 요구

 

사용자 삽입 이미지

l         3-tier

  자바 어플리케이션이나 애플릿이 DBMS를 직접 접근하는 것이 아니라 중간에 있는 미들웨어(미들티어)를 거쳐 데이타베이스에 접근하는 것

 데이타베이스와의 연동 부분을 분리시킴으로써 Presentation layer가 데이터 저장 방법에 신경을 쓰지 않아도 됨.

 클라이언트는 단지 미들티어를 참조

 미들티어 서버는 DBMS와 같이 특정한 작업만 수행하는 최종 서버와 통신을 하여 결과를 얻은 후 클라이언트에게 결과를 전달

 2-tier 모델보다 안정적이고 유연하며 보안이 강화

1.  tier-1 : 사용자 인터페이스를 담당하는 클라이언트

2.  tier-2 : HTTP나 코바를 지원하는 응용처리 서버

3.  tier-3 : DBMS와 같은 사용자가 최종적으로 원하는 기능을 수행할 서버

 

사용자 삽입 이미지

l         3-tier application : 3계층 애플리케이션

 

3 계층 애플리케이션이란 3개의 주요 부분으로 구성되어 있는 응용프로그램으로서, 각각은 네트웍 상의 서로 다른 장소에 분산되어 있다. 여기서 3개의 주요부분이란 다음과 같다

ü         워크스테이션, 또는 외양 인터페이스

ü         비즈니스 로직

ü         데이터베이스와 그것을 관리하기 위한 관련 프로그램

 

전형적인 3 계층 애플리케이션에서, 프로그램 사용자의 워크스테이션은 GUI 제공하는 프로그램과, 특정 프로그램에 맞는 입력 양식이나 인터랙티브 윈도우 등을 가지고 있다 (워크스테이션 사용자를 위한 일부 독특한 데이터는 사용자의 하드디스크에도 함께 보관된다).

 

비즈니스 로직은 근거리통신망 서버 또는 다른 공유된 컴퓨터 상에 위치한다. 비즈니스 로직은 워크스테이션으로부터의 클라이언트 요청에 대해 마치 서버처럼 행동한다. 그것은 차례로 어떤 데이터가 필요한지를 결정하고, 메인프레임 컴퓨터 상에 위치하고 있을 번째 계층의 프로그램에 대해서는 마치 클라이언트처럼 행동한다.

 

번째 계층은 데이터베이스와 그것에 액세스해서 읽거나 쓰는 것을 관리하는 프로그램을 포함한다. 애플리케이션의 조직은 이것보다 더욱 복잡해질 있지만, 3 계층 관점은 대규모 프로그램에서 일부분에 관해 생각하기에 편리한 방법이다.

 

3 계층 애플리케이션은 클라이언트/서버 컴퓨팅 모델을 사용한다. 3 계층에서, 부분은 각기 다른 팀의 프로그래머들에 의해 각기 다른 언어를 사용하여 동시에 개발될 있다. 어떤 계층의 프로그램은 다른 계층에 영향을 주지 않고도 변경되거나 위치가 달라질 있기 때문에, 3 계층 모델은 새로운 요구나 기회가 생길 때마다 애플리케이션을 지속적으로 진화시켜야하는 기업이나 소프트웨어 패키지 개발자들이 이에 쉽게 대처할 있게 해준다. 기존의 애플리케이션들은 영구적으로 또는 일시적으로 계속 유지될 있으며, 하나의 컴포넌트로서 새로운 계층 내에 캡슐화될 수도 있다.

 

3 계층 애플리케이션 아키텍처는 분산 객체지향 프로그래밍과 사상이 일치한다.


사용자 삽입 이미지


Web Server , Middle Ware , Data Base 
Þ  3tier

 

l         웹서버의 :  IIS,  Apache,  Enterprise Server

 

l         Middle Ware

 

미들웨어는 서로다른 커뮤니케이션 프로토콜, 시스템 아키텍처, 운영체제, 데이타베이스와 다양한 애플리케이션 서비스를 지원하기 위해서 네트웍을 따라 하드웨어에 독립적으로 연결하여 주는 소프트웨어를 의미한다. 클라이언트/서버를 물리적으로 연결하여 주는것이 아닌 애플리케이션 내에서 논리적으로 연결을 의미한다.

 

미들웨어의 목표는 "Any-to-Any Operability"로서 파일 교환 공유, 트랜잭션, RPC(Remote Procedure Call)등의 다양한 방법을 사용하여 애플리케이션 모듈간 호환성을 가지고 운영되도록 도와준다. 결론적으로 미들웨어는 애플리케이션 프로그램이 어떤 정보시스템 환경에서도 작동할 있도록 도와준다.

미들웨어 배경 S/W 전략 수립시 미들웨어 제품의 시스템 적용범위를 이해하는것은 중요하다. 적용범위는 어떻게 변화하고 있는가. 미들웨어의 초기 제품은 커뮤니케니션 소프트웨어이다. 대표적인 제품으로는 인터솔브의 시큐링크와 Software AG Entire Broker등이 있으며 이제품들은 이기종간의 통신을 위한 제품이다. 과거의 커뮤니케이션 적용에서 현재는 미들웨어의 수행 환경이 애플리케이션 서비스를 포함하기 때문에 적용범위는 훨씬 넓어지고 있다. 애플리케이션 서비스는 트랜잭션을 모니터하고, SQL 최적화, 라우팅, 데이타베이스 리플리케이션등.. 다양한 기능을 지원하여야 하는데 제품의 추세가 이러한 기능들을 통합하여 지원하고 특정벤더에 의존하기보다는 벤더들이 서로 기술을 호환하는 개방형 구조로 작년부터 나가고 있다.

 

미들웨어 구성상 분류 S/W 페키지화 전략수립시 3Tier 환경에서 애플리케이션을 개발하여야 할것인가? 미들웨어를 정의 할때 2Tier, 3Tier 의한 아키택처 분류와 적용방법에 따른 분류로 구분할수 있다. 일반적으로 아키택처상 2Tier 클라이언트/서버 환경은 RDB 적합하고, 3Tier 미들웨어 환경에 적합하다. 아키택처상 분류보다는 어느부분에 적용하였느냐의 적용상 분류가 보다 적합하며 현재 미들웨어 환경은 멀티티어(Multi-Tier)환경이라는 말이 적합하며 2Tier 환경에서도 미들웨어를 구성할 있다. 예를들면 클라언트/서버 환경에서 메세지를 커뮤니케이션하는 RPC 클라이언트와 서버에 동시에 인스톨하여 사용할수 있고 이경우 시스템은 2Tier 미들웨어이다. 그러나 미들웨어의 일반적인 구성은 클라이언트와 서버 사이에 중간 서버를 두어 트래픽을 처리 할수 있도록 하였는데 중간 서버의 사용용도에 따라 3Tier 될수 있고 4Tier 될수 있다.

미들웨어 시스템에서 멀티티어로 구성할때 고려하여야 요소는 Complexity Scalability이다. 중간서버의 잘못된 불필요한 적용은 Delay Time 있지만 이의 정확한 적용은 시스템의 신뢰성과 효율성을 동시에 제공한다. 미들웨어 시스템은 3Tier 필요는 없고 시스템의 용도에 따라 다양하게 결정될수 있다. 미들웨어의 예로 Tuxido, MTS, WebSphere 등이 있다.

 

l         Data Base

   논리적으로 연관된 하나 이상의 자료의 모음으로 내용을 고도로 구조함으로써 검색과 갱신의 효율화를 꾀한 것이다. , 개의 자료 파일을 조직적으로 통합하여 자료 항목의 중복을 없애고 자료를 구조화하여 기억시켜 놓은 자료의 집합체라고 있다.

데이터베이스가 가지는 몇 가지 특성을 살펴봄으로써 그 뜻을 보다 명확히 할 수 있다. 첫째 똑같은 자료를 중복하여 저장하지 않는 통합된 자료이며, 둘째 컴퓨터가 액세스하여 처리할 수 있는 저장장치에 수록된 자료이며, 셋째 어떤 조직의 기능을 수행하는 데 없어서는 안 되며 존재 목적이 뚜렷하고 유용성 있는 운영 자료이기 때문에 임시로 필요해서 모아 놓은 데이터나 단순한 입출력 자료가 아니라는 점이며, 넷째 한 조직에서 가지는 데이터베이스는 그 조직 내의 모든 사람들이 소유하고 유지하며 이용하는 공동 자료로서 각 사용자는 같은 데이터라 할지라도 각자의 응용 목적에 따라 다르게 사용할 수 있다는 점이다. 데이터베이스의 예로.. ORACLE, MS-SQL 등이 있다.