একটি মডুলার পরিষেবা অ্যাপ্লিকেশন স্থপতি


11

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

পটভূমি

আমার প্রকল্পের লক্ষ্যটি হ'ল আমাদের বেশ কয়েকটি ব্যবসায়িক অ্যাপ্লিকেশনকে বর্তমানে ডুপ্লিকেট প্রক্রিয়া, বিধি ইত্যাদিকে সমর্থন করার জন্য ব্যবসায়ের / ডোমেন যুক্তির একটি কেন্দ্রিক উত্স তৈরি করা এবং যখন মডুলারটির প্রতিটি সুবিধা অর্জন করা হবে না, আমি জব্দ করতে চাই এমন একটি কাঠামো স্থাপনের সুযোগ রয়েছে যা সেই অংশগুলি আমরা কাজে লাগাতে পারি le

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

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

(ওহ, আমার উল্লেখ করা উচিত যে আমি অ্যাপ্লিকেশনটি আলগা-দম্পতি রাখতে ডিপেন্ডেন্সি ইনজেকশনের জন্য আইওসি পাত্রে ব্যবহার করব which আমি কোনটি উল্লেখ করব না কারণ আমি পান্ডোরার বাক্সটি খুলতে চাই না!)

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

১. পরিষেবা স্তরটি কি এপিআই বাস্তবায়ন করবে এবং মডিউলগুলিতে প্রতিনিধিত্ব করবে বা মডিউলগুলি স্বয়ংসম্পূর্ণ হওয়া উচিত (এতে সেগুলিতে পরিষেবা বাস্তবায়ন সহ সেই মডিউল সম্পর্কিত সমস্ত কিছু রয়েছে)?

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

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

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

২. মডিউল এবং / অথবা মডিউলগুলির মধ্যে নির্ভরতার মধ্যে ভাগ করে নেওয়া সংস্থানগুলি হ্যান্ডেল করার সর্বোত্তম উপায় কী?

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

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

...

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

এই সম্পর্কে আমার মাথা মোড়ানো কোন সহায়তা প্রশংসা করা হয়।


1
দুঃখিত। সমস্ত চিন্তাভাবনায় একটি প্রশ্ন খুঁজে পাচ্ছি না। প্রশ্নটি কি?
এস। লট

1
প্রশ্ন চিহ্নগুলি দেখুন। বেশ কয়েকটি পয়েন্ট রয়েছে যেখানে আমি বিকল্পগুলি অফার করি তবে সঠিক প্রক্রিয়াটি সঠিক পথে পরিচালিত করতে সহায়তা করার জন্য কোনও সমাধান এবং কয়েকটি নির্দিষ্ট প্রশ্ন অনুমান করি না।
SonOfPirate

1
@ সোনফফাইরেট: দুঃখিত আমি আশা করছিলাম যে আপনি প্রশ্নগুলি হাইলাইট করতে বা জোর দেওয়ার জন্য সময় নিতে পারেন যাতে অন্যান্য লোকেরা আপনাকে সহায়তা করতে পারে।
এস .লট

4
আমি এসলট এর সাথে একমত আমি দুঃখিত, তবে এটি কোনও প্রশ্ন নয়, এটি একটি চেতনা। আপনি যদি এটি এক বা দুটি কেন্দ্রীভূত প্রশ্নগুলিতে সরিয়ে দেন এবং স্থাপত্য সংক্রান্ত উদ্বেগগুলি বাস্তবায়নের বিশদ থেকে আলাদা করার চেষ্টা করেন তবে আমরা আপনাকে আরও অনেক ভাল সহায়তা করতে পারি।
অ্যারোনআট

1
@ সোনফপিরেট: "আর্কিটেকচার" হ'ল কাঠামোটি সম্পর্কে এবং অন্য কাঠামোগতদের সাথে সেই কাঠামো যোগাযোগ করার কথা। এটি বর্ণনার সাথে শুরু হয়। এটি অবশ্যই স্বচ্ছতা এবং স্বচ্ছতার একটি স্তর অর্জন করবে যা অন্যান্য বিকাশকারীদের এটি পুরোপুরি "পেতে" অনুমতি দেয় এবং তারা যা কিছু করে স্থাপত্য নকশার নীতি অনুসরণ করে।
এস .লট

উত্তর:


2

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

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

আপনি যদি ওআরএম ব্যবহার না করেন তবে আপনার সমস্ত মডিউল মনে রাখবেন সম্ভবত যেভাবেই একই ডাটাবেস ভাগ করে নেওয়া হয়, যেমনটি প্রায়শই ঘটে। আপনি এটি একটি সাধারণ ভিত্তি হিসাবে ব্যবহার করতে পারেন।

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

সুতরাং সংক্ষেপে, আপনি কোন ধরণের ইন্টারফেস চান তা সিদ্ধান্ত নিতে হবে। আরও পরিমিততা কম চুক্তি এবং তদ্বিপরীত দিকে পরিচালিত করে।

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


এটির সাথেও একমত - মেসেজিং + পাব / সাব এবং ডিটিও চুক্তির জন্য ভাগ করা লাইব্রেরি (অভ্যন্তরীণ নুগেট রেপো)। : আমি @SonOfPirate হিসাবে একই প্রশ্ন হতাশ ছিল হওয়া পর্যন্ত এই নিবন্ধ আমার জন্য এটা উপস্থাপন করা msdn.microsoft.com/en-us/library/bb245678.aspx
diegohb
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.