[Áöµð³ÝÄÚ¸®¾Æ]¼ºñ½º ÁöÇâ ¾ÆÅ°ÅØÃ³(SOA)·Î ¾òÀ» ¼ö ÀÖ´Â ÇýÅà Áß Çϳª´Â ¾ÖÇø®ÄÉÀ̼Ç, ÇÁ·Î¼¼½º³ª ºñ±³Àû ´Ü¼øÇÑ ¼ºñ½º¸¦ Á¶ÇÕÇØ º¸´Ù º¹ÀâÇÑ ¼ºñ½º¸¦ ¸¸µé¾î³¾ ³»´Â ´É·ÂÀÌ´Ù.
¶§¶§·Î ¡®¼ºñ½º ÇÕ¼º¡¯À̶ó ºÒ¸®´Â ÀÌ ÀÛ¾÷À» ÅëÇØ °³¹ßÀÚµéÀº À̱âÁ¾ ȯ°æ »ó¿¡¼ ¼¼ºÎ »ç¾çÀ̳ª Â÷ÀÌÁ¡ µîÀ» °í·ÁÇÏÁö ¾Ê°íµµ ¾ÖÇø®ÄÉÀ̼ǰú ¼ºñ½º¸¦ ±¸¼ºÇÒ ¼ö ÀÖ´Ù. ÀÌ¿Í °°Àº SOA ±â´ÉÀº Á¶¸³Áú ÀÎÅÍÆäÀ̽º·Î ±¸Ãà·Ç¥ÇöµÇ´Â ¼ºñ½º¿¡ »ó´ç ºÎºÐ ÀÇÁ¸Çϰí ÀÖ´Ù.
¼ºñ½º ÀÔµµ
¼ºñ½º ÀÔµµ(í£Óø)¶õ ÇÑ ¼ºñ½º°¡ µå·¯³»´Â ±â´É¼ºÀÇ ¹üÀ§¸¦ ÁöĪÇÑ´Ù. ¹Ì¸³Áú ¼ºñ½º¶õ ±âÃÊÀûÀÎ µ¥ÀÌÅÍ ¾×¼¼½ºÃ³·³ ºñÁî´Ï½º ÇÁ·Î¼¼½ºÀÇ À¯¿ë¼ºÀ» ¼ÒÆø »ó½Â½ÃŰ´Â ¼ºñ½º¸¦ ¸»ÇÑ´Ù.
¼ºñ½º°¡ Á¶±Ý ´õ Á¶¸³Áú¿¡ °¡±õ´õ¶óµµ ±âÃÊÀûÀÎ ¿ªÇÒÀ» Á¦°øÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª À̰ÍÀº ½Ã½ºÅÛ Àü¹®°¡¿¡°Ô´Â À¯¿ëÇÏÁö¸¸ ºñÁî´Ï½º ÇÁ·Î¼¼½º Àü¹®°¡¿¡´Â Å« Àǹ̸¦ Á¦°øÇÏÁö ¸øÇÑ´Ù.
ºñÁî´Ï½º Àü¹®°¡¿¡°Ô °¡Àå Áß¿äÇÑ °¡Ä¡¸¦ °®´Â ¼ºñ½º´Â ³·Àº ¼öÁØÀÇ ¼ºñ½º, ÄÄÆ÷³ÍÆ®, ±×¸®°í ƯÁ¤ ºñÁî´Ï½º Çʿ並 ¸¸Á·½Ã۱â À§ÇØ Áö´ÉÀûÀ¸·Î ±¸Á¶ÈµÈ °´Ã¼ µîÀ» ÅëÇØ ¸¸µé¾îÁø´Ù.
ÀÌ¿Í °°Àº Á¶¸³Áú ¼ºñ½º´Â ÇöÀç º¸À¯ÇÑ ½Ã½ºÅÛ¿¡¼µµ ºñÁî´Ï½º ÇÁ·Î¼¼½ºÀÇ ÇÊ¿ä»çÇ×À» ¸¸Á·½ÃŰ´Â ÀÎÅÍÆäÀ̽º¸¦ Á¤ÀÇÇϰųª Ç¥ÇöÇÏ´Â °Í µîÀ» ÅëÇØ ¸¸µé¾îÁø´Ù.
ÀÔµµ ¼öÁØ
±×¸² A¿¡¼ º¼ ¼ö ÀÖ´Â °Íó·³ ÀÔµµ ¼öÁØÀº ÀϹÝÀûÀ¸·Î ½ÇÁúÀûÀÎ ¼ÒÇÁÆ®¿þ¾îÀÇ ¸ñÀû¿¡ ÀÇÇØ Á¿ìµÈ´Ù.
¼ºñ½º¿¡ ´ëÇÑ ÀÔµµ ¼öÁØÀº °´Ã¼ ¶Ç´Â ÄÄÆ÷³ÍÆ® ´ë»óÀÇ ÀÔµµ ¼öÁغ¸´Ù ³·Àº °æÇâÀÌ ÀÖÀ¸¸ç ÇϳªÀÇ ¼ºñ½º´Â ÀüÇüÀûÀ¸·Î ÇϳªÀÇ ½ÅÁßÇÑ ºñÁî´Ï½º ÇÁ·Î¼¼½º¸¦ µå·¯³»°í ÀÖ´Ù.
 |
| ±×¸² A : ÀÔµµ ¼öÁØ |
ÇÕ¼º ÀÎÅÍÆäÀ̽º·ÎÀÇ ¼ºñ½º
¼ºñ½º Á¦¾î ½Ã½ºÅÛÀº Á¶¸³Áú ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇØ °¢ ¼ºñ½º°¡ ÂüÁ¶ÇÏ´Â °´Ã¼¿¡ Á¢±ÙÇÑ´Ù. °¢ ¼ºñ½º´Â ¹Ì¸³Áú °´Ã¼ ±×·ìÀ» ¹è°æÀ¸·Î ÇϳªÀÇ ÃßÃâ¹°·Î ½ÇÇàµÉ ¼ö ÀÖ´Â ¹Ý¸é °´Ã¼ ±× ÀÚü´Â °øÀû Á¢±ÙÀÌ ºÒ°¡´ÉÇϵµ·Ï ¼û°ÜÁú ¼ö ÀÖ´Ù.
¶ÇÇÑ °¢ ¼ºñ½º´Â °´Ã¼, ÄÄÆ÷³ÍÆ®, Àß ¸¸µé¾îÁø ¼ºñ½º µîÀ» ±×·ìÈÇÏ¸ç ±×¸² B¿¡¼ º¼ ¼ö ÀÖ´Â °Íó·³ ¿Ü°üÀ̳ª ÀÎÅÍÆäÀ̽º¸¦ Ȱ¿ëÇÔÀ¸·Î½á ´ÜÀÏ À¯´ÖÀ¸·Î ³ëÃâµÇ´Â °Í µîÀ» ÅëÇØ ½ÇÇàµÉ ¼ö ÀÖ´Ù.
 |
| ±×¸² B : Á¶¸³Áú ¼ºñ½º |
È¿°úÀûÀÎ ¼ºñ½º ÀÎÅÍÆäÀ̽º
ºñÁî´Ï½º Àü¹®°¡µµ ¿ÏÀüÈ÷ ¸¸Á·ÇÒ ¸¸ÇÑ ¼Ö·ç¼ÇÀÌ µÇ·Á¸é ¼ºñ½º ÀÎÅÍÆäÀ̽º´Â ¿äûµÈ ÀÔ·Â ¸Å°³º¯¼ö, °¡´ÉÇÑ ¿¡·¯³ª ±â´ëÄ¡, °á°ú µîÀÇ ¿ä¼Ò »Ó ¾Æ´Ï¶ó ¼öÇàÇÏ´Â ºñÁî´Ï½º ÀÛ¾÷µé¿¡ ´ëÇØ¼µµ ¸íÈ®È÷ Ç¥ÇöÇØ¾ß ÇÑ´Ù.
¼ºñ½º ÀÎÅÍÆäÀ̽º´Â Àü¹®ÀûÀÎ Áö½ÄÀ» °®ÃßÁö ¸øÇÑ ºñÁî´Ï½º Àü¹®°¡µµ ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ·Î ÀÎÇØ ºñÁî´Ï½º Àü¹®°¡´Â ºñÁî´Ï½º ÇÁ·Î¼¼½º¿Í ¾ÖÇø®ÄÉÀ̼ÇÀ» »ý»êÀûÀ¸·Î ±¸¼ºÇس¾ ¼ö ÀÖ´Ù.
±×¸² C¸¦ º¸¸é ÀÎÅÍÆäÀ̽º ÀÔµµ, ºñÁî´Ï½º ÇÁ·Î¼¼½º ÇÕ¼º°ú ÀÌ·± ¾ÖÇø®ÄÉÀ̼ÇÀÌ ½Ã½ºÅÛ/ºñÁî´Ï½º Àü¹®°¡ÀÇ ¿ªÇÒ¿¡ ¾î¶»°Ô ¿µÇâÀ» ¹ÌÄ¡´Â Áö¿¡ ´ëÇÑ »ó°ü°ü°è¸¦ ¾Ë ¼ö ÀÖ´Ù.
 |
| ±×¸² C : ¼ºñ½º ÇÕ¼º |
»ç·Ê ºÐ¼®
Á¶¸³Áú ÀÎÅÍÆäÀ̽º °³³äÀ» ¹¦»çÇϱâ À§ÇØ, °£´ÜÇÑ °´Ã¼ ÇÑ ½ÖÀ» ¼±Á¤ÇØ »õ·Î¿î ¿Ü°üÀ» Àû¿ëÇÔÀ»½á º¸´Ù À¯¿ëÇÑ ºñÁî´Ï½º ¼ºñ½º¸¦ ±¸¼ºÇغ¸ÀÚ.
UserInfo¿Í UserAccount¶ó´Â Ŭ·¡½º°¡ °¢°¢ ÀÖ´Ù°í °¡Á¤ÇØ º¸ÀÚ. ÀÌ °úÁ¤µéÀ» Ç¥ÇöÇϱâ À§ÇÑ »õ·Î¿î ÀÎÅÍÆäÀ̽º¸¦ ±¸ÃàÇÔÀ¸·Î½á µÎ °¡Áö Ŭ·¡½º·ÎºÎÅÍ À¯¿ëÇÑ ºñÁî´Ï½º ÇÁ·Î¼¼½ºÀÎ ¡®getUserAccouts¡¯¸¦ µµÃâÇØ ³¾ ¼ö ÀÖ´Ù. °³¹ß ¾ð¾î·Î´Â ÀÚ¹Ù°¡ »ç¿ëµÈ´Ù.
¸®½ºÆ® A¿¡ ÀÖ´Â ÄÚµå´Â °£´ÜÇÑ UserInfo Ŭ·¡½º¸¦ Á¤ÀÇÇϸç, ¸®½ºÆ® BÀÇ ÄÚµå´Â °£´ÜÇÑ UserAccout Ŭ·¡½º¸¦ Á¤ÀÇÇÑ´Ù. ÀÌÁ¦ getUserAccounts ºñÁî´Ï½º ÇÁ·Î¼¼½º¸¦ Æ÷ÇÔÇÏ´Â ¼ºñ½º ÀÎÅÍÆäÀ̽º¸¦ Á¤ÀÇÇØº¸ÀÚ.
package com.jeffhanson.services;
public interface FinanceServices
{
public UserAccount[] getUserAccounts(UserInfo userInfo);
}
| |
/* * User: jhanson * Date: Jul 27, 2003 * Time: 7:03:28 PM */
package com.jeffhanson.services;
public class UserInfo
{ private String name; private String address; private String city; private String state; private String postalCode;
public UserInfo(String name, String address, String city, String state, String postalCode) { this.name = name; this.address = address; this.city = city; this.state = state; this.postalCode = postalCode; }
public String getName() { return name; }
public String getAddress() { return address; }
public String getCity() { return city; }
public String getState() { return state; }
public String getPostalCode() { return postalCode; }
public boolean compare(UserInfo obj) { if (name.equalsIgnoreCase(obj.getName()) && address.equalsIgnoreCase(obj.getAddress()) && city.equalsIgnoreCase(obj.getCity()) && state.equalsIgnoreCase(obj.getState()) && postalCode.equalsIgnoreCase(obj.getPostalCode())) { return true; }
return false; } } | |
 |
| |
/* * User: jhanson * Date: Jul 27, 2003 * Time: 7:05:00 PM */
package com.jeffhanson.services;
public class UserAccount
{ private UserInfo userInfo; private String name; private String description; private double balance;
public UserAccount(UserInfo userInfo, String name, String description, double balance) { this.userInfo = userInfo; this.name = name; this.description = description; this.balance = balance; }
public UserInfo getUserInfo() { return userInfo; }
public String getName() { return name; }
public String getDescription() { return description; }
public double getBalance() { return balance; } } | |
 |
¿ì¸®°¡ ¿øÇÏ´ø ÀÎÅÍÆäÀ̽º¿Í ÇÔ²² º¸±â·Î µç 2°³ Ŭ·¡½º·Î ¡®getUserAccounts¡¯¶ó´Â À¯¿ëÇÑ ºñÁî´Ï½º ÇÁ·Î¼¼½º¸¦ ¸¸µé ¼ö ÀÖ´Ù´Â °ÍÀ» ¸®½ºÆ® C¿¡¼ È®ÀÎÇÒ ¼ö ÀÖ´Ù.
| |
/* * User: jhanson * Date: Jul 27, 2003 * Time: 7:14:56 PM */
package com.jeffhanson.services;
import java.util.Vector;
public class FinanceServicesImpl implements FinanceServices
{ private UserAccount[] allUserAccounts;
public FinanceServicesImpl(UserAccount[] allUserAccounts) { this.allUserAccounts = allUserAccounts; }
public UserAccount[] getUserAccounts(UserInfo userInfo) { Vector resultList = new Vector();
for (int i = 0; i < allUserAccounts.length; i++) { if (allUserAccounts[i].getUserInfo().compare(userInfo) == true) { resultList.add(allUserAccounts[i]); } }
UserAccount[] results = new UserAccount[resultList.size()]; resultList.copyInto(results);
return results; } } | |
 |
¼ºñ½º ÇÕ¼º
¼ºñ½º ÇÕ¼ºÀ» ÀÌ¿ëÇϸé À̱âÁ¾ ȯ°æÀÇ ¼¼ºÎ ³»¿ëÀ̳ª Â÷ÀÌÁ¡ µî¿¡ »ó°ü¾øÀÌ °¢°¢ÀÇ ¼ºñ½º¸¦ ÀÌ¿ëÇØ ¾ÖÇø®ÄÉÀ̼ÇÀ̳ª ÇÁ·Î¼¼½º µîÀ» ±¸¼ºÇÒ ¼ö ÀÖ´Ù. ¸¸¾à ¼ºñ½º°¡ Á¶¸³Áú ÀÎÅÍÆäÀ̽º·Î ±¸ÃàµÅ ÀÖ´Ù¸é ¼ºñ½º ÇÕ¼ºÀº ÈξÀ ´õ ±¸¼ºÇϱ⠽±´Ù.
È¿°úÀûÀ¸·Î ¼³°è·ÇÕ¼ºµÈ Á¶¸³Áú ¼ºñ½ºÀÇ Áö¿øÀ» ¹ÞÀ¸¸é ºñÁî´Ï½º Àü¹®°¡´Â »õ·Î¿î ºñÁî´Ï½º ÇÁ·Î¼¼½º¿Í ¾ÖÇø®ÄÉÀ̼ÇÀ» »ý»êÀûÀ¸·Î ±¸¼ºÇÒ ¼ö ÀÖ´Ù. @