আপনি জাভা ওয়েব অ্যাপ্লিকেশনগুলির জন্য যে আর্কিটেকচারটি ব্যবহার করেন তার বর্ণনা দিন? [বন্ধ]


146

আসুন জাভা ভিত্তিক ওয়েব অ্যাপ্লিকেশন আর্কিটেকচার শেয়ার করি!

ওয়েব অ্যাপ্লিকেশনগুলির জন্য প্রচুর বিভিন্ন আর্কিটেকচার রয়েছে যা জাভা ব্যবহার করে প্রয়োগ করা যেতে পারে। এই প্রশ্নের উত্তরগুলি তাদের পক্ষে মতামত সহ বিভিন্ন ওয়েব অ্যাপ্লিকেশন ডিজাইনের লাইব্রেরি হিসাবে কাজ করতে পারে। যদিও আমি উপলব্ধি করেছি যে উত্তরগুলি বিষয়ভিত্তিক হবে, আসুন আমরা যতটা উদ্দেশ্যমূলক হতে চেষ্টা করি এবং আমাদের তালিকাভুক্ত উপকারিতা এবং বুদ্ধি প্রেরণা দেয়।

আপনার আর্কিটেকচারের বর্ণনা দেওয়ার জন্য আপনি যে বিশদ স্তরটি পছন্দ করেন তা ব্যবহার করুন। আপনার উত্তরের যে কোনও মূল্য হতে পারে তার জন্য আপনাকে আর্কিটেকচারে বর্ণিত প্রধান প্রযুক্তিগুলি এবং ধারণাগুলি কমপক্ষে বর্ণনা করতে হবে। এবং সর্বশেষে তবে সর্বনিম্ন নয়, কখন আমরা আপনার স্থাপত্যটি ব্যবহার করব?

আমি শুরু করব...


স্থাপত্যের ওভারভিউ

আমরা সূর্য থেকে জাভা ইই, জাভা পার্সেস্টন এপিআই, সার্ভলেট এবং জাভা সার্ভার পৃষ্ঠাগুলির মতো ওপেন স্ট্যান্ডার্ডের ভিত্তিতে একটি 3-স্তরের আর্কিটেকচার ব্যবহার করি।

  • অধ্যবসায়
  • ব্যবসায়
  • উপহার

স্তরগুলির মধ্যে সম্ভাব্য যোগাযোগ প্রবাহগুলি প্রতিনিধিত্ব করে:

Persistence <-> Business <-> Presentation

উদাহরণস্বরূপ যার অর্থ হল যে উপস্থাপনা স্তরটি কখনও কল করে না বা জেদী ক্রিয়াকলাপ সম্পাদন করে না, এটি সর্বদা এটি ব্যবসায় স্তর দ্বারা করে does এই আর্কিটেকচারটি একটি উচ্চ প্রাপ্যতা ওয়েব অ্যাপ্লিকেশনগুলির চাহিদা পূরণের উদ্দেশ্যে।

অধ্যবসায়

( সিআরইউডি ) জেদী ক্রিয়াকলাপ তৈরি, পড়ুন, আপডেট করুন এবং মুছুন সম্পাদন করে। আমাদের ক্ষেত্রে আমরা ( জাভা পার্সেন্টিশন এপিআই ) জেপিএ ব্যবহার করছি এবং আমরা বর্তমানে হাইবারনেটকে আমাদের অধ্যবসায় সরবরাহকারী হিসাবে ব্যবহার করি এবং এর অ্যান্টিটি ম্যানেজারটি ব্যবহার করি

এই স্তরে একাধিক ক্লাস, যেখানে সত্ত্বা একটি নির্দিষ্ট ধরনের সঙ্গে প্রতিটি বর্গ পুলিশ (ক শপিং কার্ট এর সাথে সম্পর্কিত অর্থাত সত্ত্বা একটি একক অধ্যবসায় বর্গ দ্বারা পরিচালিত পেতে পারে) করা হয়েছে বিভক্ত করা হয় ব্যবহার করা একের পর এবং শুধুমাত্র এক পরিচালক

উপরন্তু এই স্তর এছাড়াও সঞ্চয় করে JPA সত্ত্বা যা কিছু মত Account, ShoppingCartইত্যাদি

ব্যবসায়

ওয়েব অ্যাপ্লিকেশন কার্যকারিতার সাথে যুক্ত সমস্ত যুক্তি এই স্তরে অবস্থিত। এই কার্যকারিতাটি কোনও গ্রাহক যে তার / তার ক্রেডিট কার্ড ব্যবহার করে অনলাইনে কোনও পণ্যের জন্য অর্থ দিতে চায় তার জন্য অর্থ স্থানান্তর শুরু করতে পারে। এটি ঠিক নতুন ব্যবহারকারী তৈরি করা, কোনও ব্যবহারকারীকে মুছে ফেলা বা ওয়েব ভিত্তিক গেমের যুদ্ধের ফলাফল গণনা করাও হতে পারে।

এই স্তরে একাধিক শ্রেণীতে ভাগ করা হয় এবং এই ক্লাস সাথে সটীক হয় @Statelessএকটি পরিণত Stateless সেশন সিম (SLSB)। প্রতিটি এসএলএসবিকে একজন ম্যানেজার বলা হয় এবং উদাহরণস্বরূপ বলা যায় ম্যানেজারকে ক্লাস টিকা দেওয়া যেতে পারে AccountManager

যখন AccountManagerসিআরইউডি অপারেশন করার দরকার হয় তখন এটির জন্য যথাযথ কল হয় AccountManagerPersistence, যা অধ্যবসায় স্তরের শ্রেণি। দুটি পদ্ধতির মোটামুটি স্কেচ AccountManagerহতে পারে:

...
public void makeExpiredAccountsInactive() {
    AccountManagerPersistence amp = new AccountManagerPersistence(...)
    // Calls persistence layer
    List<Account> expiredAccounts = amp.getAllExpiredAccounts();
    for(Account account : expiredAccounts) {
        this.makeAccountInactive(account)
    }
}
public void makeAccountInactive(Account account) {
    AccountManagerPersistence amp = new AccountManagerPersistence(...)
    account.deactivate();
    amp.storeUpdatedAccount(account); // Calls persistence layer
}

আমরা ধারক ব্যবস্থাপক লেনদেনগুলি ব্যবহার করি যাতে আমাদের নিজের স্বতন্ত্রের লেনদেন করতে হয় না। হুডের নীচে মূলত যা ঘটে তা হ'ল এসএলএসবি পদ্ধতিতে প্রবেশের সময় আমরা কোনও লেনদেন শুরু করি এবং পদ্ধতিটি বেরোনোর ​​অবিলম্বে এটি (বা এটি রোলব্যাক) প্রতিশ্রুতিবদ্ধ। এটি কনফিগারেশন ওভার কনভেনশনের একটি উদাহরণ, তবে আমাদের ডিফল্ট, আবশ্যক, ছাড়া আর কোনও প্রয়োজন নেই।

এখানে সূর্যের জাভা EE 5 টি টিউটোরিয়ালটি এন্টারপ্রাইজ জাভাবীনের (ইজেবি) এর প্রয়োজনীয় লেনদেনের বৈশিষ্ট্যটি ব্যাখ্যা করে :

যদি ক্লায়েন্ট কোনও লেনদেনের মধ্যে চলছে এবং এন্টারপ্রাইজ বিনের পদ্ধতিটি আহ্বান করে, পদ্ধতিটি ক্লায়েন্টের লেনদেনের মধ্যেই কার্যকর করে। যদি ক্লায়েন্ট কোনও লেনদেনের সাথে যুক্ত না হয় তবে ধারকটি পদ্ধতিটি চালানোর আগে একটি নতুন লেনদেন শুরু করে।

প্রয়োজনীয় বৈশিষ্ট্যটি ধারক-পরিচালিত লেনদেনের সীমাবদ্ধতার সাথে চলমান সমস্ত এন্টারপ্রাইজ শিম পদ্ধতিগুলির জন্য অন্তর্ভুক্ত লেনদেনের বৈশিষ্ট্য। আপনার অন্য কোনও লেনদেনের বৈশিষ্ট্যটি ওভাররাইড করার প্রয়োজন না হলে আপনি সাধারণত প্রয়োজনীয় বৈশিষ্ট্যটি সেট করেন না। কারণ লেনদেনের বৈশিষ্ট্যগুলি ঘোষিত, আপনি পরে এগুলি সহজেই পরিবর্তন করতে পারেন।

উপহার

আমাদের উপস্থাপনা স্তর ... উপস্থাপনার দায়িত্বে আছে! এটি ব্যবহারকারীর ইন্টারফেসের জন্য দায়ী এবং এইচটিএমএল পৃষ্ঠাগুলি তৈরি করে এবং জিইটি এবং পোস্ট অনুরোধের মাধ্যমে ব্যবহারকারীর ইনপুট গ্রহণ করে তথ্য প্রদর্শন করে। আমরা বর্তমানে পুরানো সার্লেটের + জাভা সার্ভার পৃষ্ঠাগুলি ( জেএসপি ) সংমিশ্রণটি ব্যবহার করছি।

ব্যবহারকারীর অনুরোধকৃত ক্রিয়াকলাপ সম্পাদন করতে এবং ওয়েব পৃষ্ঠায় প্রদর্শন করার জন্য তথ্য গ্রহণের জন্য স্তরটি ব্যবসায়ের স্তর পরিচালকদের পদ্ধতিগুলি কল করে । কখনও কখনও ব্যবসায়ের স্তর থেকে প্রাপ্ত তথ্য কম জটিল প্রকারের Stringএবং intইজারগুলির মতো হয় এবং অন্য সময়ে জেপিএ সত্তা

আর্কিটেকচারের সাথে পেশাদার এবং কনস

পেশাদাররা

  • এই স্তরে অধ্যবসায়ের একটি নির্দিষ্ট পদ্ধতির সাথে সম্পর্কিত সমস্ত কিছুর অর্থ হ'ল আমরা ব্যবসায় স্তরটিতে পুনরায় কিছু না লিখে, জেপিএকে অন্য কোনও কিছুর মধ্যে পরিবর্তন করতে পারি।
  • আমাদের উপস্থাপনা স্তরটিকে অন্য কোনও কিছুর মধ্যে অদলবদল করা সহজ এবং আমরা আরও ভাল কিছু আবিষ্কার করতে পারলে সম্ভবত এটিই সম্ভব।
  • ইজেবি কনটেইনারটি লেনদেনের সীমানা পরিচালনা করতে দেওয়া দুর্দান্ত।
  • সার্লেটের + জেপিএ ব্যবহার করা সহজ (শুরু করা) এবং প্রযুক্তিগুলি প্রচুর সার্ভারে ব্যাপকভাবে ব্যবহৃত হয় এবং প্রয়োগ করা হয়।
  • জাভা EE ব্যবহার করলে আমাদের সঙ্গে একটি উচ্চ প্রাপ্যতা সিস্টেম তৈরি করার জন্য করা অনুমিত হয় ভারসাম্য বজায় রাখার এবং উপর ব্যর্থ । উভয়ই আমরা অনুভব করি যে আমাদের অবশ্যই থাকতে হবে।

কনস

  • জেপিএ ব্যবহার করে আপনি প্রায়শই @NamedQueryজেপিএ সত্তা শ্রেণিতে টীকাগুলি ব্যবহার করে নামযুক্ত ক্যোয়ারী হিসাবে ব্যবহৃত প্রশ্নগুলি সংরক্ষণ করতে পারেন । আমাদের আর্কিটেকচারের মতো আপনার যদি অধ্যবসায়ী ক্লাসে দৃistence়তার সাথে সম্পর্কিত যতটা সম্ভব সম্ভব হয়, এটি জেপিএ সত্তাগুলিও অন্তর্ভুক্ত করার জন্য আপনার অনুসন্ধানগুলি পেতে পারে এমন জায়গাগুলি ছড়িয়ে দেবে। অধ্যবসায় ক্রিয়াকলাপ পর্যালোচনা করা কঠিন এবং এইভাবে বজায় রাখা আরও কঠিন।
  • আমাদের অধ্যবসায় স্তরের অংশ হিসাবে আমাদের জেপিএ সত্তা রয়েছে। কিন্তু Accountএবং ShoppingCart, এগুলি কি আসলে ব্যবসায়ের জিনিস নয়? আপনার এই ক্লাসগুলিকে স্পর্শ করতে হবে এবং তাদের এমন সত্তায় রূপান্তর করতে হবে যা জেপিএ কীভাবে পরিচালনা করতে জানে সেভাবে এটি করা হয় is
  • জেপিএ সত্তা, যা আমাদের ব্যবসায়িক অবজেক্টও ডেটা ট্রান্সফার অবজেক্টস ( ডিটিও'র ) এর মতো তৈরি করা হয়, যা মান অবজেক্টস (ভিও) হিসাবে পরিচিত। এটি অ্যানিমিক ডোমেন মডেলটির ফলস্বরূপ কারণ ব্যবসায়িক সামগ্রীর অ্যাক্সেসর পদ্ধতি ছাড়া নিজস্ব কোনও যুক্তি নেই। সমস্ত যুক্তি ব্যবসায়িক স্তরে আমাদের পরিচালকদের দ্বারা করা হয়, যার ফলে আরও প্রক্রিয়াগত প্রোগ্রামিং শৈলীর ফলাফল হয়। এটি ভাল অবজেক্ট ওরিয়েন্টড ডিজাইন নয়, তবে সম্ভবত এটি কোনও সমস্যা নয়? (সমস্ত অবজেক্টের পরেও কেবল প্রোগ্রামিং দৃষ্টান্ত নয় যা ফলাফল সরবরাহ করেছে))
  • ইজেবি এবং জাভা ইই ব্যবহার করা কিছুটা জটিলতার পরিচয় দেয়। এবং আমরা বিশুদ্ধরূপে হুল বিড়াল ব্যবহার করতে পারবেন না (একটি EJB মাইক্রো-ধারক যোগ নয় বিশুদ্ধরূপে হুল বিড়াল)।
  • সার্লেটের + জেপিএ ব্যবহার করে প্রচুর সমস্যা রয়েছে। এই সমস্যাগুলি সম্পর্কে আরও তথ্যের জন্য গুগল ব্যবহার করুন।
  • ব্যবসায়ের স্তর থেকে বেরিয়ে আসার সময় লেনদেনগুলি বন্ধ থাকায় আমরা fetch=FetchType.LAZYউপস্থাপনা স্তরটির অভ্যন্তর থেকে যখন প্রয়োজন (ব্যবহার করে ) প্রয়োজন হয় তখন ডাটাবেস থেকে লোড করার জন্য কনফিগার করা জেপিএ সত্তা থেকে কোনও তথ্য লোড করতে পারি না । এটি একটি ব্যতিক্রম ট্রিগার করবে। এই ধরণের ক্ষেত্রগুলি সহ একটি সত্তা ফেরত দেওয়ার আগে আমাদের অবশ্যই প্রাসঙ্গিক গেটেরকে কল করতে হবে। আরেকটি বিকল্প হ'ল জাভা পার্সিস্টেন্স কোয়েরি ল্যাঙ্গুয়েজ ( জেপিকিউএল ) ব্যবহার করা এবং এ FETCH JOIN। তবে এই দুটি অপশনই কিছুটা জটিল।

1
দেখে মনে হচ্ছে আপনি নিজের জবাবটি দিয়ে বারটি অনেক উঁচু করেছেন - এটি অন্যকে নিরুৎসাহিত করেছে :)
জোনিক

5
এছাড়াও, সম্ভবত আপনার গ্রহণটি একটি সাধারণ উত্তর হওয়া উচিত, প্রশ্নের অংশ নয়, যাতে এটি অন্যান্য উত্তরগুলির সাথে ভোট দেওয়া যায়?
জোনিক

এই প্রশ্নটি মেটাতে রেফারেন্স করা হয়েছে ।
D4V1D

উত্তর:


20

ঠিক আছে আমি একটি (সংক্ষিপ্ত) এক করব:

  • সামনের: টেপস্ট্রি (পুরানো প্রকল্পের জন্য 3, আরও নতুন প্রকল্পের জন্য 5)
  • ব্যবসায় স্তর: বসন্ত
  • ডিএও'র: ইবাতিস
  • ডাটাবেস: ওরাকল

আমরা স্পিনিং লেনদেন সহায়তা ব্যবহার করি এবং ডিএও কলগুলিতে প্রচার করে পরিষেবা স্তরে প্রবেশের পরে লেনদেন শুরু করি। পরিষেবা স্তরের সর্বাধিক bussines মডেল জ্ঞান রয়েছে, এবং DAO এর তুলনামূলকভাবে সহজ CRUD কাজ করে।

পারফরম্যান্সের কারণে আরও কিছু জটিল ক্যোয়ারী জিনিসগুলি ব্যাকএন্ডে আরও জটিল প্রশ্নগুলি দ্বারা পরিচালিত হয়।

আমাদের ক্ষেত্রে স্প্রিং ব্যবহারের সুবিধাগুলি হ'ল আমাদের দেশ / ভাষা নির্ভর উদাহরণ থাকতে পারে, যা একটি স্প্রিং প্রক্সি ক্লাসের পিছনে রয়েছে। সেশনে ব্যবহারকারীর উপর ভিত্তি করে, কল করার সময় সঠিক দেশ / ভাষা বাস্তবায়ন ব্যবহৃত হয়।

লেনদেন পরিচালনা প্রায় স্বচ্ছ, রানটাইম ব্যতিক্রমগুলিতে রোলব্যাক। আমরা যতটা সম্ভব চেক করা ব্যতিক্রমগুলি ব্যবহার করি। আমরা পরীক্ষিত ব্যতিক্রমগুলি করতাম, তবে বসন্তের প্রবর্তনের সাথে আমি চেক করা ব্যতিক্রমগুলির সুবিধা দেখতে পাচ্ছি, কেবলমাত্র যখন আপনি পারেন ব্যতিক্রমগুলি পরিচালনা করছেন ex এটি প্রচুর বয়লারপ্লেট "ক্যাচ / রিথ্রো" বা "নিক্ষেপ" স্টাফ এড়িয়ে চলে।

দুঃখিত এটি আপনার পোস্টের চেয়ে কম, আশা করি আপনি এটি আকর্ষণীয় খুঁজে পেয়েছেন ...


চমৎকার উত্তর! এই থ্রেডটি কিছু ট্র্যাফিককে আকৃষ্ট করে বলে মনে হচ্ছে, একটি করুণা অন্যান্য লোকেরা মনে করেন না যে তারা তাদের স্থাপত্যগুলি বর্ণনা করার জন্য সময় পেয়েছে, বা অংশ না নেওয়ার অন্যান্য কারণ রয়েছে।

19

আজ আদর্শ জাভা ভিত্তিক ওয়েব বিকাশ প্রযুক্তি Today

ওয়েব স্তর:

যেটা HTML + CSS + + আয়াক্স + + JQuery

RESTFul ওয়েব কন্ট্রোলার / অ্যাকশন / অনুরোধ প্রক্রিয়াকরণ স্তর:

ফ্রেমওয়ার্ক খেলুন

ব্যবসায় যুক্তি / পরিষেবা স্তর:

যতক্ষণ সম্ভব খাঁটি জাভা কোডটি ব্যবহার করুন। কেউ এখানে ওয়েব পরিষেবাদির ফিউশন করতে পারেন।

এক্সএমএল / জেএসন ডেটা ট্রান্সফর্মেশন স্তর:

এক্সএমটিউল (গুগল কোডে সন্ধান করুন), জেএসপ, গুগল জিসন, ​​এক্সস্ট্রিম, জুক্স (গুগল কোডে অনুসন্ধান করুন)

দৃ Pers়তা স্তর:

সিআরইউডি: জেপিএ বা সিয়ানাপ্রজেক্ট বা কোয়েরিডিএসএল / কমপ্লেক্স কোয়েরি: জোকিউ, কোয়েরিডিএসএল


9

এখানে আমার 5 সেন্ট

উপহার

অ্যান্ড্রয়েড, কৌণিক.জেএস ওয়েবক্লিয়েন্ট, OAUTHv2

এপিআই

রেস্ট, জার্সি (জ্যাকস-আরএস), জ্যাকসন (জেএসএন ডি- / সিরিয়ালাইজেশন), ডিটিও-অবজেক্টস (ব্যবসায়িক যুক্তির মডেল থেকে পৃথক)

ব্যবসায় যুক্তি

ডিআই এবং ইভেন্ট হ্যান্ডলিংয়ের জন্য বসন্ত। মডেল অবজেক্টগুলির ডিডিডি-ইশ পদ্ধতির। দীর্ঘতর চলমান কাজগুলি কর্মী-মডিউলগুলিতে এসকিউএস দিয়ে লোড করা হয়।

দাও

সত্তা সংরক্ষণের জন্য স্প্রিং জেডিবিসি-টেম্পলেটগুলির সাথে সংগ্রহস্থল মডেল। আদেশযুক্ত তালিকাগুলি ব্যবহার করে লিডারবোর্ডগুলির জন্য রেডিস (জেডিআইএস)। টোকেন স্টোরের জন্য মেমকেচে।

তথ্যশালা

মাইএসকিউএল, মেমক্যাচড, রেডিস


এটি আমরা আমাদের প্রকল্পগুলিতেও যা অনুসরণ করি তার অনুরূপ! ব্যবসায়িক প্রবাহের জন্য জেবিপিএম ছাড়াও। কেন আমি কোন বসন্ত অবাক না?
ininprsr

আমাদের বর্তমান খিলান সহ আমার একটি আপডেট করা উচিত: বর্তমানে আমরা ডেটা অ্যাক্সেস স্তরের জন্য স্প্রিং ডিআই এবং জেডিবিসি-টেম্পলেট ব্যবহার করি।
পেপস্টার

6

আমাদের প্রকল্পে আমরা যা অনুসরণ করেছি তা হ'ল:

ফ্রন্ট এন্ড টেকনোলজি

  • AngularJS
  • HTML5 এর
  • CSS3
  • জাভাস্ক্রিপ্ট
  • বুটস্ট্র্যাপ 3

এপিআই

  1. বিশ্রাম
  2. জার্সি (জ্যাক্স-আরএস)
  3. বিশ্রাম নিশ্চিত করুন
  4. স্প্রিং বুট
  5. জ্যাকসন
  6. বসন্ত সুরক্ষা

ব্যবসায় যুক্তি

  • স্প্রিং ডেটা

  • স্প্রিং ডেটা মঙ্গোডিবি

তথ্যশালা

  • MongoDB

সার্ভার (ক্যাশিংয়ের জন্য)

  • redis

4

আমরা এখনও সাধারণ স্ট্রুটস-স্প্রিং-হাইবারনেট স্ট্যাক ব্যবহার করছি।

ভবিষ্যতের অ্যাপ্লিকেশনগুলির জন্য, আমরা স্প্রিং ওয়েব ফ্লো + স্প্রিং এমভিসি + হাইবারনেট বা স্প্রিং + হাইবারনেট + ওয়েব পরিষেবাদিগুলি ফ্লেক্সের সম্মুখ প্রান্তে সন্ধান করছি।

আমাদের আর্কিটেকচারের একটি স্বতন্ত্র বৈশিষ্ট্য হ'ল মডুলারাইজেশন। আমাদের কাছে বেশ কয়েকটি মডিউল রয়েছে, যার মধ্যে কিছু ডেটাবেজে 3 থেকে সর্বোচ্চ 30 টি টেবিল দিয়ে শুরু হয়। বেশিরভাগ মডিউল ব্যবসায় এবং ওয়েব প্রকল্প নিয়ে গঠিত। ব্যবসায়িক প্রকল্প ব্যবসা এবং অধ্যবসায়ের যুক্তি ধারণ করে যখন ওয়েব উপস্থাপনা যুক্তি রাখে।
যৌক্তিক স্তরে, তিনটি স্তর রয়েছে: ব্যবসা, দৃ Pers়তা এবং উপস্থাপনা।
নির্ভরতা:
উপস্থাপনা ব্যবসা এবং অধ্যবসায়ের উপর নির্ভর করে।
অধ্যবসায় নির্ভর করে ব্যবসায়ের উপর।
ব্যবসায় অন্যান্য স্তরগুলির উপর নির্ভর করে না।

বেশিরভাগ ব্যবসায়িক প্রকল্পের তিন ধরণের ইন্টারফেস থাকে (দ্রষ্টব্য: জিইউআই নয়, এটি একটি প্রগতিশীল জাভা ইন্টারফেস স্তর)।

  1. ইন্টারফেস যা উপস্থাপনাটি ক্লায়েন্ট হিসাবে ব্যবহার করছে
  2. অন্য মডিউলগুলি যখন মডিউলটির ক্লায়েন্ট হয় তখন ইন্টারফেস।
  3. ইন্টারফেস যা মডিউলটির প্রশাসনিক উদ্দেশ্যে ব্যবহৃত হতে পারে।

প্রায়শই, 1 প্রসারিত হয় 2 এইভাবে, মডিউলের একটি বাস্তবায়নকে অন্যের সাথে প্রতিস্থাপন করা সহজ। এটি আমাদের বিভিন্ন ক্লায়েন্টকে গ্রহণ করতে এবং আরও সহজেই সংহত করতে সহায়তা করে। কিছু ক্লায়েন্ট কেবলমাত্র কিছু নির্দিষ্ট মডিউল কিনবেন এবং আমাদের তাদের ইতিমধ্যে কার্যকারিতা সংহত করতে হবে। যেহেতু ইন্টারফেস এবং বাস্তবায়ন স্তর পৃথক করা হয়েছে, নির্ভরশীল মডিউলগুলিকে প্রভাবিত না করে নির্দিষ্ট ক্লায়েন্টের জন্য অ্যাড-হক মডিউল প্রয়োগ কার্যকর করা সহজ। এবং স্প্রিং ফ্রেমওয়ার্ক বিভিন্ন বাস্তবায়ন ইনজেক্ট করা সহজ করে তোলে।

আমাদের ব্যবসায়ের স্তর POJOs এর উপর ভিত্তি করে। একটি প্রবণতা যা আমি পর্যবেক্ষণ করছি তা হ'ল এই পোগগুলি ডিটিওগুলির সাথে সাদৃশ্যপূর্ণ। আমরা অ্যানিমিক ডোমেন মডেল থেকে ভুগছি । কেন এটি হচ্ছে তা আমি নিশ্চিত নই তবে এটি আমাদের অনেক মডিউলগুলির সমস্যা ডোমেনের সরলতার কারণে হতে পারে, বেশিরভাগ কাজ সিআরইউডি হয় বা বিকাশকারীরা অন্য কোথাও যুক্তি রাখতে পছন্দ করেন।


3

এখানে আমি কাজ করেছি আরও একটি ওয়েব আর্কিটেকচার:

একটি বড় প্রয়োজন অ্যাপ্লিকেশনটির মোবাইল / অন্যান্য ডিভাইসগুলি সমর্থন করা উচিত। প্রযুক্তি পছন্দগুলিতে পরিবর্তনের ক্ষেত্রে অ্যাপ্লিকেশনটি এক্সটেনসিবল বা নমনীয়ও হওয়া উচিত।

উপস্থাপনা স্তর:

  • জেএসপি / জেকিউয়ারি (ক্লায়েন্ট-সাইড এমভিসি)
  • নেটিভ অ্যান্ড্রয়েড
  • নেটিভ আইফোন
  • মোবাইল ওয়েব (HTML5 / CSS3 / প্রতিক্রিয়াশীল নকশা)

  • স্প্রিং আরএসটি নিয়ন্ত্রণকারীরা (জ্যাক্স-আরএসে পরিবর্তন করতে পারেন)

ব্যবসায় পরিষেবা স্তর:

স্প্রিং @ সার্ভিস (স্টেটলেস ইজেবিতে পরিবর্তন করতে পারে)

ডেটা অ্যাক্সেস স্তর:

বসন্ত @ রেপোসিটরি (স্টেটলেস ইজেবিতে পরিবর্তন করতে পারে)

সংস্থান স্তর:

হাইবারনেট (জেপিএ) সত্তা (যে কোনও ওআরএম এ পরিবর্তন করতে পারে)

আপনি বইয়ের যা এই স্থাপত্য অনুসরণ উপর আরও তথ্য পেতে পারেন এখানে


2

আইএমএইচও, আমাদের বেশিরভাগেরই একটি সাধারণ ডিনামিনেটর রয়েছে। ব্যাক-এন্ডে অন্ততপক্ষে, আমাদের কাছে আইওসি / ডিআই কনটেইনার কিছু ফর্ম এবং একটি অধ্যবসায় কাঠামো রয়েছে। ব্যক্তিগতভাবে আমি এর জন্য গুইস এবং মাইবাটিস ব্যবহার করি। পার্থক্যগুলি কীভাবে আমরা ভিউ / ইউআই / উপস্থাপনা স্তরটি প্রয়োগ করি। এখানে 2 টি বড় বিকল্প রয়েছে (আরও বেশি হতে পারে) .. অ্যাকশন ভিত্তিক (ইউআরএলগুলি নিয়ন্ত্রণকারীদের সাথে ম্যাপ করা আছে) এবং উপাদান ভিত্তিক। বর্তমানে উপাদান উপাদান ভিত্তিক উপস্থাপনা স্তর ব্যবহার করছি (উইকেট ব্যবহার করে)। এটি পুরোপুরি ডেস্কটপ পরিবেশের নকল করে যেখানে আমি ইউআরএল এবং নিয়ন্ত্রণকারীদের বিপরীতে উপাদান এবং ইভেন্টগুলি ব্যবহার করি। এই URL- নিয়ামক ধরনের ধরণের আর্কিটেকচারে কেন স্থানান্তরিত করা উচিত তার জন্য আমি বর্তমানে একটি কারণ খুঁজছি ended কেন RESTful এবং স্টেটলেস আর্কিটেকচার সম্পর্কে হাইপ।

এই প্রশ্নের সংক্ষেপে উত্তর দেওয়ার জন্য: আমি গুইস আইওসি ধারকটির শীর্ষে একটি উপাদান ভিত্তিক কাঠামো ব্যবহার করে রাষ্ট্রীয় ওয়েব অ্যাপ্লিকেশনগুলি লিখি এবং মাইবাটিস ব্যবহার করে সম্পর্কিত ডেটাবেসে ডেটা রাখি।


1

কিছুটা আলাদা, এবং আমি এখানে আরও মডুলার জাভা আর্কিটেকচার দাবি করব। আমাদের আছে:

  1. স্প্রিং ডাব্লুএস / রেস্ট / জেএসপি সম্মুখ সমাপ্তি
  2. ব্যবসায় পরিষেবা যুক্তির জন্য স্প্রিং এমভিসি, প্রেজেন্টেশন লেয়ার যুক্তি পাশাপাশি স্প্রিং লেনদেন রয়েছে
  3. উপাদান পরিষেবা যোগাযোগ ইন্টারফেস, ব্যবসায়িক পরিষেবার দ্বারা EJB মাধ্যমে সন্ধান করা। ইজেবিগুলি তাদের নিজস্ব লেনদেনের সীমানা সেট করে যা বসন্তের লেনদেনে যোগদান করতে সক্ষম হয়।
  4. উপাদান পরিষেবা বাস্তবায়ন, আবার বসন্ত উপাদান
  5. ইন্টিগ্রেশন লেয়ার, ডাটাবেস ইন্টিগ্রেশনের জন্য মাইবাটিস, ওয়েব সার্ভিস ইন্টিগ্রেশনের জন্য স্প্রিং ডাব্লুএস, অন্যান্য পরিষেবার জন্য অন্যান্য ইন্টিগ্রেশন টেকনোলজিস
  6. অন্যান্য সার্ভারে মেইনফ্রেমস, ডাটাবেসগুলি, অন্যান্য পরিষেবাগুলি ...

উপরের পাশাপাশি, আমাদের কাছে ভাগ করা লাইব্রেরি মডিউল রয়েছে যা সমস্ত srevices এর সাধারণ কার্যকারিতা সরবরাহকারী।

বিভিন্ন স্তরগুলির ব্যবহার আমাদের পুরো ডিকোপলিং এবং আমাদের প্রয়োজনীয় মডুলারিটির অনুমতি দেয়। আমরা স্প্রিংয়ের পাশাপাশি জাভা ইই শক্তিটিও পুরোপুরি ব্যবহার করতে সক্ষম are কিছুই জেএসএফ ব্যবহার থেকে আমাদের বাধা দেয় না, উদাহরণস্বরূপ, প্রয়োজনে সামনের প্রান্তে।

ওপি দ্বারা স্থাপত্যের উদাহরণের তুলনায়, আমি মনে করি এটি মোচড়ের সাথে হলেও তিনটির পরিবর্তে চারটি প্রধান স্তর হিসাবে বর্ণনা করা যেতে পারে।


0

আমি এমন কঠোর পরিচালকদের প্যাটার্ন ব্যবহার করে এমন প্রকল্পে কাজ করেছি। .তিহাসিকভাবে, আমি অনমনীয় শ্রেণিবিন্যাসের বিশাল প্রবক্তা ছিলাম যেখানে সবকিছু একটি ঝরঝরে বাক্সে খাপ খায়। আমি আমার ক্যারিয়ারের অগ্রগতি হিসাবে এটি অনেক ক্ষেত্রে জোর করে পেয়েছি বলে মনে করি। আমি বিশ্বাস করি যে অ্যাপ্লিকেশন ডিজাইনের দিকে আরও চটুল মানসিকতা অবলম্বন করলে আরও ভাল পণ্য বাড়ে। আমি এই ক্লাসগুলির একটি সেট তৈরি করে যা বুঝি যা হাতে সমস্যা। "আপনি কি এই এবং তার জন্য কোনও পরিচালক তৈরি করেছিলেন?" বলার চেয়ে?

আমি যে বর্তমান প্রকল্পে কাজ করছি তা হ'ল স্প্রিং এমভিসি এবং রেস্টএসি জেএসএন / আজাক্স কলগুলির সংমিশ্রণ সহ একটি ওয়েব অ্যাপ। আমাদের কন্ট্রোলারগুলিতে এম্বেড করা সার্ভার সাইডে ডাইরেক্ট ডাটাবেস অ্যাক্সেস, কিছু ইজেবি অ্যাক্সেস এবং কিছু এসওএপি ভিত্তিক ওয়েব পরিষেবা কলগুলির জন্য জেপিএ / হাইবারনেট সহ একটি বুদ্ধিমান ফেকড ভিত্তিক ডেটা স্তর রয়েছে। এই সমস্ত কিছু একসাথে বেঁধে রাখার জন্য কিছু কাস্টম জাভা কন্ট্রোলার কোড যা JSON হিসাবে সিরিয়ালায়িত করতে হবে এবং ক্লায়েন্টে ফিরে যেতে হবে তা নির্ধারণ করে।

আমরা ইউনিক্স ডিজাইন দর্শন দর্শনের "ওয়ার্স ইজ বেটার" ধারণা অবলম্বন করার পরিবর্তে কিছু একীভূত প্যাটার্ন তৈরির চেষ্টা করতে ব্যয় করি না। লাইনগুলির বাইরে রঙিন হওয়া এবং বোধগম্য কিছু তৈরি করা তার চেয়ে আরও ভাল, এটি এমন কিছু নির্মাণের চেয়ে দ্রুত যা কঠোর নকশার আদেশগুলি একগুচ্ছকে মেনে চলে।


0

ওয়েব অ্যাপ্লিকেশন আর্কিটেকচারের উপাদানগুলির মধ্যে রয়েছে:

1: ব্রাউজার: ক্লায়েন্ট মিথস্ক্রিয়া

        HTML
        JavaScript
        Stylesheet

2: ইন্টারনেট

3: ওয়েবসার্ভার

        CSS
        Image
        Pages(Java render )

4: অ্যাপ্লিকেশন সার্ভার

        App Webapp (Java interaction)
        Others WebApps

5: ডাটাবেস সার্ভার

        Oracle, SQL, MySQL

6: ডেটা

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.