কম্পোনেন্ট অবজেক্ট মডেল শেখার সেরা জায়গা [বন্ধ]


13

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


3
আমরা কেন সিওএম ব্যবহার করব? বেশিরভাগ ক্ষেত্রে আমরা না করার চেষ্টা করি। এটি কোন জায়গায় রয়েছে? সাধারণত বেদনাদায়ক উত্তরাধিকার কোডবেস।
কারসন 63000

@ কারসন বাস্তবে আমি একটি মনিটরিং সফটওয়্যার তৈরি করছি যেখানে আমাকে "COM" অবজেক্টের মান আনতে হবে। অতএব নতুন পাওয়া কোয়েস্ট ..
চ্যানি

1
আমি যদি মনে করি সঠিক, COM এর সেরা 3 টি ওয়েব নিবন্ধগুলির মধ্যে 2 টি এমএসডিএন (কিছু পুরাতন ম্যাগাজিন নিবন্ধ) এবং 1 টি কোডপ্রজেক্টে ছিল ... স্পষ্টতই এখানে আরও কয়েকশত দরকারী কিছু রয়েছে, তাই এটি খড়খড়তে সূঁচ খোঁজার মতো। (এবং কেবলমাত্র ".কম" টিএলডি সাইটগুলিতে ফিরে আসার জন্য গুগলকে ধন্যবাদ
জানাই

@ কারসন 000৩০০০০ এতটা সত্য যে এটি ব্যাথা করে ... এখন এক কোণে কাঁদতে চলেছে।
এভিকাটোস

উত্তর:


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

আইইউএনএনড শেখা প্রথম পদক্ষেপ।

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


যোগ করা হয়েছে 2012/09/28:

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

এমএসডিএন-তে মাইক্রোসফ্ট ডকুমেন্টেশন "সিওএম নয় ..." বা "অস্বীকার করবেন না" এই অস্বাভাবিক কৌশলগুলি কীভাবে আপনার কোডটি ভঙ্গ করতে পারে তা বোঝাতে অনেক সময় ব্যয় করে।

এর COM ডিজাইনার Liskov উপকল্পন নীতি ( "L" লিখে ব্যবহার কঠিন নিশ্চিত করুন যে তাদের একাধিক ইন্টারফেস এবং ট্রিকস ব্যবহার মৌলিক গলি যুক্তি বা প্রোগ্রাম অপারেশন বিনষ্ট করো না করতে)।

যদি আপনার প্রকল্পটি এই কৌশলগুলি ব্যবহার না করে তবে কেবল ওওপি দৃষ্টিকোণ থেকে COM দেখতে ভাল okay যদি আপনার প্রকল্পটি এই কৌশলগুলি ব্যবহার করে তবে আপনাকে COM কে স্ব-সংশোধনকারী কোড হিসাবে দেখতে হবে।

(জোকস: এল এর সাথে আমাদের এতটা সময় ব্যয় করতে হয়েছিল যে আমরা সাধারণত চারটি নীতি উপেক্ষা করি।)


9

COM এর প্রধান কারণ হ'ল কোনও অ্যাপ্লিকেশন এবং অন্যান্য অ্যাপ্লিকেশন এবং dll এর মধ্যে যা বিভিন্ন মেমরি স্পেসে থাকতে পারে এবং অবজেক্টের মধ্যে যা বিভিন্ন অভ্যন্তরীণ বস্তুর উপস্থাপনা থাকতে পারে তার মধ্যে একটি অবজেক্ট ওরিয়েন্টেড যোগাযোগ ইন্টারফেস সরবরাহ করে।

সিওএম শেখার সময় মনে রাখার কিছু বিষয় হ'ল সেই সময় সি ++ ছিল রাজা এবং অ্যাপ্লিকেশনগুলিতে ডেল এর সি ব্যবহার করা ছিল অ্যাপ্লিকেশনগুলিতে কোনও সাধারণ এবিআই ছিল না (যেমন @ রওং বলেছেন) এবং সিওএম ছিল মাইক্রোসফ্ট সমাধান।

ভিজ্যুয়াল স্টুডিওর জন্য অ্যাক্টিভ টেম্পলেট লাইব্রেরি (এটিএল) দেখার জন্য এটি সম্ভবত মূল্যবান যা সিওএম ব্যবহার করাও কিছুটা সহজ করে তোলে।

দিনের বেশ কয়েকটি বই আমি দরকারী খুঁজে পেয়েছি

http://www.amazon.com/Essential-COM-Don-Box/dp/0201634465/ref=sr_1_1?ie=UTF8&qid=1304946825&sr=8-1

http://www.amazon.com/Understanding-ActiveX-OLE-Developers-Technology/dp/1572312165/ref=pd_sim_b_4

HTH


7

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

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

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


5

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

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

এখনও সেখানে প্রচুর COM ইন্টারফেস রয়েছে যা আপনি ডটনেট অ্যাপ্লিকেশন বা জাভা বা সি ++ থেকে কল করতে চাইতে পারেন exist (আপনি বলতে চান না)

আপনার যদি সিওএম ইন্টারফেসগুলি কল করতে হয় তবে এটি করার সহজ উপায় ভিবি। ডটনেট 4.0.০ সি তে # গতিশীল কীওয়ার্ড রয়েছে যা আইডিসপ্যাচ ইন্টারফেসগুলি কল করা আরও সহজ করে তোলে, সম্ভবত এটি আপনার পক্ষে দেখার উচিত একটি দুর্দান্ত সমাধান।

আপনার যদি খুব বেশি বিশদ জানার দরকার হয় তবে আপনার সত্যিকারের সি ++ এবং এটিএল ব্যবহার করা উচিত, CoCreateInstance এর মতো সিপিআইগুলিকে কল করুন। যদিও আপনি এটির পুরানো প্রযুক্তি হিসাবে ব্যবহার করতে পারেন এবং খুব বেশি ব্যবহার না করেন তবে এটিকে এড়িয়ে যান above

আপনি কোন মনিটরিং সফটওয়্যারটি দেখছেন তা আমি নিশ্চিত নই তবে এটি সম্ভবত ডটনেটে সিস্টেম.ম্যানেজমেন্ট ক্লাসের মাধ্যমে উপলব্ধ।


2

নিম্নলিখিতগুলি কার্যকর COM ওভারভিউএম হতে পারে:

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

এই প্রযুক্তির তিনটি পৃথক সংস্করণ রয়েছে (বাস্তবায়ন):

সি ++ বিকাশকারীদের জন্য ওএইএল / সিওএম / ডিসিওএম / অ্যাকটিভএক্স (প্রোগ্রামারের কাজ সহজ করার জন্য এটিএল ব্যবহৃত হয়)

জাভা বিয়ানস / আরএমআই / ইজেবি জাভা বিকাশকারীদের জন্য

কোবরা / IIOP

আপনার জাভাতে আপনার সফ্টওয়্যারটি লেখা রয়েছে এবং আপনি এটিতে একটি কার্যকারিতা যুক্ত করতে চান যা ইতিমধ্যে একটি প্যাকেজে উপস্থিত রয়েছে তবে এটি সি ++ তে লেখা রয়েছে এবং এমনকি এটি সম্ভবত অন্য মেশিনে অবস্থিত নয় আপনার স্থানীয় মেশিন আপনি কীভাবে "নতুন" কল করবেন, কীভাবে আপনি সেগুলি থেকে বস্তুগুলি এবং কল করার পদ্ধতিগুলি তৈরি করবেন?

নিম্নলিখিত বইগুলি যেগুলি আমি COM কোডিং করে তাদের দেখেছি তাদের বইয়ের শেলফে রয়েছে:

  • সিওএম এবং এটিএল 3.0 বিকাশকারীর কর্মশালা 3.0

  • ইনসাইড কম

  • প্রয়োজনীয় COM

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