একাধিক জেন্ড অ্যাপ্লিকেশন কোড সংস্থা


10

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

প্রকল্পটি কীভাবে বিশেষভাবে সম্পর্কিত তা সম্পর্কে বিস্তারিতভাবে না গিয়ে আমি কীভাবে আমার কোডটি "গোষ্ঠীভুক্ত" করেছি সে সম্পর্কে কিছু ইনপুট (যেমন আমি একা প্রকল্পে কাজ করছি) খুঁজছি। আমি এটিকে সমস্ত এমনভাবে বিভক্ত করার চেষ্টা করেছি যাতে এটি যতটা সম্ভব নির্ভরতা সরিয়ে দেয়।

আমি এটিকে যুক্তিযুক্তভাবে যতটা না ডুপ্লুপ করে রাখতে চাইছি, তাই 12 মাসের সময়কালে যখন আমার সময় শেষ হয় অন্য যে কেউ আসবে তাতে আমার উত্পাদিত জিনিসটি প্রসারিত করতে সমস্যা হতে পারে না।

উদাহরণ কাঠামো:

applicationStorage\ (contains all applications and associated data)
applicationStorage\Applications\ (contains the applications themselves)

applicationStorage\Applications\external\ (application grouping folder) (contains all external customer access applications)
applicationStorage\Applications\external\site\ (main external customer access application)
applicationStorage\Applications\external\site\Modules\ 
applicationStorage\Applications\external\site\Config\
applicationStorage\Applications\external\site\Layouts\
applicationStorage\Applications\external\site\ZendExtended\ (contains extended Zend classes specific to this application example: ZendExtended_Controller_Action extends zend_controller_Action )
applicationStorage\Applications\external\mobile\ (mobile external customer access application different workflow limited capabilities compared to full site version)

applicationStorage\Applications\internal\ (application grouping folder) (contains all internal company applications)
applicationStorage\Applications\internal\site\ (main internal application)
applicationStorage\Applications\internal\mobile\ (mobile access has different flow and limited abilities compared to main site version)

applicationStorage\Tests\ (contains PHP unit tests)

applicationStorage\Library\
applicationStorage\Library\Service\ (contains all business logic, services and servicelocator; these are completely decoupled from Zend framework and rely on models' interfaces)
applicationStorage\Library\Zend\ (Zend framework)
applicationStorage\Library\Models\ (doesn't know services but is linked to Zend framework for DB operations; contains model interfaces and model datamappers for all business objects; examples include Iorder/IorderMapper, Iworksheet/IWorksheetMapper, Icustomer/IcustomerMapper)

(দ্রষ্টব্য: প্রতিটি অ্যাপ্লিকেশন ফোল্ডারে মডিউল, কনফিগারেশন, লেআউটগুলি এবং জেন্ডে এক্সটেন্ডেড ফোল্ডারগুলি নকল করা আছে; তবে সেগুলি আমার উদ্দেশ্যগুলির জন্য প্রয়োজনীয় নয় বলে আমি সেগুলি বাদ দিয়েছি))

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

সুতরাং আমার আশা এই যে আমি ভবিষ্যতে আমার ব্যবসায়িক যুক্তি (পরিষেবাদি )গুলিতে সরিয়ে নিতে চাইলে জেন্ড ফ্রেমওয়ার্ক থেকে আমার ব্যবসার যুক্তি ডিক্লুপ করার জন্য আমি ভবিষ্যতে আমি ম্যাপার্স এবং ডিবিটিবেলগুলি (একটি মডেল_ডিবিটিবেল_আবস্ট্র্যাক্ট যুক্ত যা জেন্ড_ডিবি_ট্যাবল_আবস্ট্র্যাক্ট প্রসারিত) পুনরায় লিখতে সক্ষম হব জেনড নন ফ্রেমওয়ার্ক পরিবেশ (সম্ভবত কিছু অন্যান্য পিএইচপি ফ্রেমওয়ার্ক)।

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

উদাহরণ: সমস্ত বাহ্যিক অ্যাপ্লিকেশনগুলিতে একটি সার্ভিস_আউথ_ বহিরাগত প্রয়োগকারী পরিষেবাদি_আউথ_ আন্তঃ পৃষ্ঠ অন্তর্ভুক্ত থাকবে।

সার্ভিস_আউথ_ অভ্যন্তরীণ প্রয়োগকারী পরিষেবা_আউথ_ আন্তঃ পৃষ্ঠ সার্ভিস_লোকেটর :: গিটার সার্ভিস ('আথ') এর সাথে অভ্যন্তরীণ অ্যাপ্লিকেশনগুলির সাথে একই।

আমি উদ্বিগ্ন, আমি এটির সাথে কিছু সম্ভাব্য সমস্যা অনুপস্থিত।

একটি সম্পর্কে আমি অর্ধ-চিন্তা করছি সমস্ত বাহ্যিকের জন্য একটি কনফিগারেশন আই ফাইল, তারপরে একটি পৃথক অ্যাপ্লিকেশন কনফিগারেশন ওভাররাইডিং বা বৈশ্বিক বাহ্যিক config.ini এ যুক্ত।

কারও যদি কোন পরামর্শ থাকে আমি খুব প্রশংসা করব।

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

\applicationstorage\Applications\internal\webservice 
\applicationstorage\Applications\external\webservice

উত্তর:


1

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

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

যদি আপনার হোস্টের উপর আপনার নিয়ন্ত্রণ থাকে তবে আপনি লাইব্রেরি স্টাফগুলি অন্তর্ভুক্ত পথে চালিত করার বিষয়ে ভাবতে পারেন - এবং এটি একটি পৃথক দীর্ঘমেয়াদী প্রকল্প হিসাবে বজায় রাখতে পারেন।

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