তারা খুব অনুরূপ ব্যবহার-মামলা রয়েছে, যেমন লিড রক্ষণাবেক্ষণকারী ServiceStack প্রকল্পের আমি ServiceStack এর সুফল মধ্যে একটি ভাল অন্তর্দৃষ্টি এবং তার বার্তা ভিত্তিক নকশা অনেক প্রাকৃতিক সুবিধা ।
সার্ভিস স্ট্যাকটি ২০০৮ সাল থেকে একটি ওএসএস-চালিত প্রকল্প হিসাবে শুরু হয়েছে যখন থেকে ঘর্ষণমুক্ত দূরবর্তী পরিষেবাগুলির সঠিক নকশা এবং প্রয়োগের একক লক্ষ্য রয়েছে O
সহজ এবং মার্জিত নকশা
চূড়ান্ত সরলতার জন্য এটির সন্ধানে, এটি একটি সাধারণ এবং মার্জিত কোরকে কেন্দ্র করে তৈরি করা হয়েছে - এর বেশিরভাগ বৈশিষ্ট্য প্রাকৃতিকভাবে আপনার মডেলগুলিতে আবশ্যক , আপনার নিয়ন্ত্রক নয় - যা এমভিসি, ওয়েবএপিই করে (পাশাপাশি প্রতিটি অন্যান্য ওয়েব সার্ভিস ফ্রেমওয়ার্ক মাইক্রোসফ্ট তৈরি করেছে) )।
একটি বার্তা-ভিত্তিক নকশাকে গ্রহণ করা দূরবর্তী পরিষেবাগুলির জন্য উচ্চতর পদ্ধতির প্রস্তাব দেয়, এতে তারা আরও বর্ধিত এবং কম ভঙ্গুর পরিষেবাদি প্রচার করে, অ্যাক্সেস এবং কলিং নিদর্শনগুলিকে সহজতর করে এবং আপনি নিখরচায় পাওয়া অন্যান্য অনেক প্রাকৃতিক সুবিধা ধারণ করে ।
একটি মূল মিশন হিসাবে, আমরা প্রতিটি পর্যায়ে জটিলতার সাথে লড়াই করি, যার লক্ষ্য একটি অদৃশ্য এবং অ-অনুপ্রেরণামূলক এপিআই রাখা এবং এমন কোনও নতুন ধারণা বা কৃত্রিম নির্মাণের পরিচয় দেওয়া এড়ানো যা আজই নেট বা ওয়েব পরিষেবা বিকাশকারীদের সাথে পরিচিত নয়।
উদাহরণস্বরূপ আপনার IService<T>
পরিষেবা বাস্তবায়ন স্বয়ংক্রিয় ওয়্যার্ড নির্ভরতা সহ কেবলমাত্র একটি স্ট্যান্ডার্ড সি # শ্রেণি। পাতলা এবং লাইটওয়েট র্যাপারগুলি মূল রান-টাইম IHttpRequest এবং IHttpResponse ধরণের চারপাশে একটি সামঞ্জস্যপূর্ণ এবং একীভূত API সরবরাহ করতে ব্যবহৃত হয় । তারা অন্তর্নিহিত এএসপি.নেট বা এইচটিপিপ্লিন্টারের অনুরোধ এবং প্রতিক্রিয়া ক্লাসগুলিতে অ্যাক্সেসের অনুমতি দেয় যাতে সার্ভিসস্ট্যাক ব্যবহার করার সময় আপনি কখনই নিষিদ্ধ হন।
ডাব্লুসিএফ এবং ওয়েবএপির সাথে বিপরীত
বিপরীত API স্টাইলগুলির সংক্ষিপ্ত বিবরণ এখানে সার্ভিসস্ট্যাক এবং ডাব্লুসিএফ প্রচার করে । ওয়েবসিপি ডাব্লুসিএফ থেকে আলাদা যে এটি আরএসটি-ফুল এপিআই নকশাকে উত্সাহ দেয়। 2 এর মধ্যে উদাহরণ হিসাবে, সার্ভিসস্ট্যাক এবং ওয়েবএপি উভয়েই একই পরিষেবাটি নিয়ে আমার কাছে এটিই একমাত্র পরিচিত উদাহরণ ।
সেরা অভ্যাস দূরবর্তী পরিষেবা
সার্ভিস স্ট্যাকের সরলতা, পারফরম্যান্স এবং মার্টিন ফোলার্স রিমোট-সার্ভিস ডিজাইনের নিদর্শনগুলিকে যথাসম্ভব যথাসম্ভব আলিঙ্গন করার চারদিকে কেন্দ্রীভূত ওয়েব / রিমোট সার্ভিসের সেরা-অনুশীলনগুলিকে উত্সাহিত করার ক্ষেত্রে প্রাথমিক ফোকাস রয়েছে:
ছদ্মরূপ প্যাটার্ন - কোন batchful, অপকৃষ্টবুনান ইন্টারফেস ব্যবহার দাড়ায় যখন কখনও আপনি প্রক্রিয়া সীমানা জুড়ে যোগাযোগ।
DTO প্যাটার্ন ( দুটিই MSDN ) - বিশেষ উদ্দেশ্য Poços ব্যবহার dictating আপনার ওয়েব পরিষেবাগুলি প্রতিক্রিয়া টেলিগ্রাম বিন্যাস তৈরি করতে।
গেটওয়ে প্যাটার্ন ( দুটিই MSDN ) ক্লায়েন্ট গেটওয়ে / DTO মডেল এবং পরিষেবা ইন্টারফেস স্তরে মধ্যে আপনার ক্লায়েন্ট এবং সার্ভার যোগাযোগ encapsulate করতে।
এই নিদর্শনগুলি উদ্বেগের একটি পরিষ্কার বিচ্ছিন্নতা এবং একটি ঘর্ষণ মুক্ত পুনরাবৃত্তি ডেভির অভিজ্ঞতা নিশ্চিত করে।
আপনার পরিষেবা শক্তিশালী করা
সার্ভিস স্ট্যাকের ওয়েব সার্ভিসটি একটি নির্ভরতা-মুক্ত এবং অটো-ওয়্যার্ড খাঁটি সি # IService<T>
ইন্টারফেসের চারপাশে কেন্দ্রিক যা আপনাকে আপনার নিজের অনুরোধ এবং সাফ পোকো ব্যবহার করে রেসপন্স ডিটিও দিয়ে আপনার ওয়েব পরিষেবা চুক্তির সংজ্ঞা দেওয়ার সম্পূর্ণ স্বাধীনতা দেয় - সার্ভিসস্ট্যাকের এপিআই কার্যত অদৃশ্য এবং অ রেন্ডারিং -অনভ্যাসিভ, অর্থাত্ এটি আপনার সি # পরিষেবা যুক্তি নিষ্ক্রিয় করতে এবং সার্ভিসস্ট্যাক হোস্টের বাইরে চালানো তুচ্ছ।
এই সারকথা তোমার সাথে কি পেতে একটি ভাল উদাহরণ ServiceStack মধ্যে মাত্র 1 C # এর .cs বর্গ :
- সমস্ত নিবন্ধিত ফর্ম্যাটগুলির জন্য মেটাডেটা পৃষ্ঠাগুলি
- ডাব্লুএসডিএল, এক্সএসডি এবং সি # ক্লায়েন্টের উদাহরণগুলির সাথে লিঙ্ক রয়েছে
- মানব বান্ধব এইচটিএমএল রিপোর্ট দর্শন
- একটি একক স্ব-অন্তর্ভুক্ত এইচটিএমএল পৃষ্ঠা স্ন্যাপশট (যেমন কোনও বাহ্যিক রেফ নেই)। এম্বেড করা JSON ওয়েব পরিষেবা প্রতিক্রিয়া অন্তর্ভুক্ত - ডেটা স্ন্যাপশটগুলিতে প্রোগ্রামেটিক অ্যাক্সেসের অনুমতি দেয়।
- অন্তর্নির্মিত মিনি প্রোফাইলার (দুর্দান্ত এমভিসি মিনি প্রোফাইলারের পোর্ট )
- এসকিএল প্রোফাইলিং অন্তর্ভুক্ত
- জেএসএন / জেএসএনপি, এক্সএমএল, জেএসভি, সিএসভি এবং এসওএপি শেষ-পয়েন্ট
রেস্টসেসব্যাস এবং সার্ভিসবেস ক্লাসগুলি আপনার সম্ভাব্য সর্বাধিক সম্ভাব্য পুনরায় ব্যবহারের জন্য সি # লজিককে হোস্ট করার উদ্দেশ্যে তৈরি করা হয়েছে, যেমন এর ডিটিও-প্রথম ডিজাইনটি তুচ্ছভাবে মুলতুবি এবং প্রক্সিড এক্সিকিউশনকে অনুমতি দেয় যেখানে আপনার একই সি # পরিষেবাটি এমকিউ হোস্টে হোস্ট এবং এক্সিকিউট করা যায় where আপনি যখন RedisMQ হোস্টেরIMessageService
মতো একটি রেজিস্ট্রেশন করেন এবং আপনার পরিষেবাটি শেষ পয়েন্ট (যেমন সি # ক্লায়েন্টে) মাধ্যমে কল করেন তখন যা হয়/asynconeway
client.SendOneWay()
আপনি সহজেই এই base.ResolveService<T>()
পদ্ধতিটি ব্যবহার করে সম্মিলিত পরিষেবাদি তৈরি করতে এবং তৈরি করতে পারেন যা নর্টওয়াইন্ড গ্রাহক বিবরণ পরিষেবা উদাহরণে দেখানো হিসাবে নির্বাচিত পরিষেবার একটি স্বয়ংক্রিয়-ওয়্যার্ড উদাহরণ দেয়:
var ordersService = base.ResolveService<OrdersService>();
var ordersResponse = (OrdersResponse)ordersService.Get(
new Orders { CustomerId = customer.Id });
সরল সি # অবজেক্টগুলি ফিরিয়ে দিন
বেশিরভাগ অংশের জন্য সার্ভিস স্ট্যাক বেশিরভাগ সি # অবজেক্টকে প্রত্যাশা অনুযায়ী সিরিয়ালাইজ করবে - সম্ভাব্য রিটার্ন টাইপের একটি তালিকা এখানে ( এই উত্তর থেকে ):
- যে কোনও ডিটিও অবজেক্ট -> প্রতিক্রিয়া কন্টেন্ট টাইপের জন্য সিরিয়ালযুক্ত
- কাস্টমাইজড এইচটিটিপি প্রতিক্রিয়াটির জন্য এইচটিপিআরসাল্ট, এইচটিপিআরর, সংক্ষেপিত ফলাফল (আইএইচটিপিআরসাল্ট)
নিম্নলিখিত ধরণের রূপান্তরিত হয় না এবং সরাসরি প্রতিক্রিয়া স্ট্রিমে লিখিত হয়:
- দড়ি
- প্রবাহ
- IStreamWriter
- বাইট [] - অ্যাপ্লিকেশন / অকটেট-স্ট্রিম সামগ্রী প্রকারের সাথে।
কাস্টম এইচটিটিপি শিরোনাম সমর্থনের একটি উদাহরণ এই কর্স উদাহরণ দ্বারা দেখা যেতে পারে যেখানে আপনি বিশ্বব্যাপী বা প্রতি-পরিষেবা ভিত্তিতে HTTP শিরোনাম কনফিগার করতে পারেন।
এইচটিএমএল সমর্থন
সার্ভিস স্ট্যাকটিতে এইচটিএমএল ফিরিয়ে দেওয়ার জন্য একাধিক বিকল্প রয়েছে যা এখানে বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে ।
.NET- র জন্য দ্রুততম পাঠ্য এবং বাইনারি সিরিয়ালাইজার অন্তর্ভুক্ত
প্রাণবন্ত এবং দ্রুত serializers দ্রুত প্রতিক্রিয়া বার এবং একটি versionable এপিআই যা বিদ্যমান ক্লায়েন্ট ভাঙে না যার কারণে ServiceStack অন্তর্ভুক্ত নিশ্চিত করার একটি API প্রাথমিক গুরুত্ব রয়েছে .NET সবচেয়ে দ্রুত টেক্সট serializers সক্ষম করার জন্য একটি NuGet বিকল্প @marcgravell এর প্রোটোকল বাফার্স (.NET এর দ্রুত বাইনারি সিরিয়ালাইজার)।
সার্ভিসস্ট্যাকের পাঠ্য সিরিয়ালাইজারগুলি খুব স্থিতিস্থাপক এবং ত্রুটি ছাড়াই চরম সংস্করণ সহ্য করতে পারে ।
ঘর্ষণ মুক্ত দেব অভিজ্ঞতা শেষ-থেকে-শেষ
সার্ভিসস্ট্যাকের মতামতপূর্ণ প্রকৃতি কোনও সিঙ্ক / অ্যাসিঙ্ক সি # /। নেট এবং অ্যাসিঙ্ক সিলভারলাইট ক্লায়েন্টকে কোনও কোড-জেন ছাড়াই একটি অন্তর্নিহিত সমর্থন সহ একটি দ্রুত, টাইপযুক্ত, টর্স ওয়েব সার্ভিস এপিআইয়ের শেষ-থেকে-শেষের জন্য মঞ্জুরি দেয় :
সি # সিঙ্ক উদাহরণ
var response = client.Send<HelloResponse>(new Hello { Name = "World!" });
অ্যাসিঙ্ক সি # উদাহরণ
client.SendAsync<HelloResponse>(new Hello { Name = "World!" },
r => Console.WriteLine(r.Result), (r, ex) => { throw ex; });
এটি কেবল খাঁটি জেএসএনকে ফেরত দেওয়ার সাথে সাথে এটি অন্যান্য এইচটিটিপি ক্লায়েন্টদের সাথেও তুচ্ছভাবে গ্রাস করা হয়, যেমন জেএসওয়াই ব্যবহার করে জেএস ক্লায়েন্টের উদাহরণ :
$.getJSON("http://localhost/Backbone.Todo/todos", function(todos) {
alert(todos.length == 1);
});
অত্যন্ত পরীক্ষামূলক
সমস্ত সি # /। নেট সার্ভিসক্লিয়েন্টগুলি একই ইন্টারফেসগুলি ভাগ করে যা এগুলিকে অত্যন্ত পরীক্ষামূলক এবং অদলবদল করে তোলে যেখানে আপনি একই ইউনিট পরীক্ষাটি এক্সএমএল, জেএসএন, জেএসভি, এসওএপি ইন্টিগ্রেশন টেস্ট হিসাবে পরিবেশন করতে পারেন ।
ধনী বৈধকরণ এবং ত্রুটি হ্যান্ডলিং অন্তর্নির্মিত
একটি ফ্রিসিটন-মুক্ত এবং ক্লিন দেব অভিজ্ঞতা সরবরাহের মিশনে সার্ভিস স্ট্যাকের মধ্যে টাইপড বৈধতা এবং বিল্ট-ইন ত্রুটি হ্যান্ডলিং অন্তর্ভুক্ত রয়েছে যেখানে একটি সি # ব্যতিক্রম নিক্ষেপ করা বা এর বিল্ট-ইন ফ্লুয়েন্ট বৈধতা ব্যবহার করে ক্লায়েন্টকে কাঠামোগত, টাইপ করা ত্রুটিগুলি ওয়েব পরিষেবা ক্লায়েন্টগুলিতে সহজেই অ্যাক্সেসযোগ্য উপলব্ধ করা হয় যেমন:
try {
var client = new JsonServiceClient(BaseUri);
var response = client.Send<UserResponse>(new User());
} catch (WebServiceException webEx) {
/*
webEx.StatusCode = 400
webEx.ErrorCode = ArgumentNullException
webEx.Message = Value cannot be null. Parameter name: Name
webEx.StackTrace = (your Server Exception StackTrace - if DebugMode is enabled)
webEx.ResponseDto = (your populated Response DTO)
webEx.ResponseStatus = (your populated Response Status DTO)
webEx.GetFieldErrors() = (individual errors for each field if any)
*/
}
জাভাস্ক্রিপ্টে ত্রুটিগুলি গ্রাস করার জন্য এটি তুচ্ছ করে তুলতে আপনি হালকা এসএস-বৈধকরণ.জেএসএ জাভাস্ক্রিপ্ট লাইব্রেরিটি আপনার একক লাইন কোডের সাথে আপনার প্রতিক্রিয়া ত্রুটিগুলি আপনার এইচটিএমএল ফর্ম ক্ষেত্রগুলিতে বেআইনিভাবে আবদ্ধ করতে ব্যবহার করতে পারেন । SocialBootstrapApi উদাহরণ প্রকল্পের এই একটি ভাল ডেমো প্রদান করে।
এএসপি.এনইটি এবং এমভিসির সাথে সমৃদ্ধ সংহতকরণ
ServiceStack MVC পাওয়ারপ্যাক পুনরায় লিখেছেন এবং সংশোধন করা হয়েছে তার জন্য প্রতিস্থাপন সঙ্গে ASP.NET এবং MVC এর ails অনেকটা অসমর্থকরণ সেশন এবং ICacheClient এবং ISession API গুলি নিজস্ব পরিষ্কার এবং নির্ভরতা মুক্ত বাস্তবায়ন ক্যাশে এক্সএমএল-ভারাক্রান্ত ASP.NET প্রদানকারীর।
সার্ভিস স্ট্যাকটিতে অন্তর্নির্মিত বিভিন্ন সংখ্যক অ্যাথপ্রোভাইডার সহ একটি নতুন এবং ক্লিনার প্রমাণীকরণ এবং স্বয়ংক্রিয়করণ সরবরাহকারী মডেল অন্তর্ভুক্ত রয়েছে :
- শংসাপত্রসমূহ / / প্রমাণীকরণ / শংসাপত্রগুলি পরিষেবাতে পোস্ট করে ব্যবহারকারীর নাম / পাসওয়ার্ড শংসাপত্রগুলির সাথে প্রমাণীকরণের জন্য
- বুনিয়াদি প্রমাণীকরণ - ব্যবহারকারীদের বেসিক প্রমাণীকরণের সাথে অনুমোদন দেওয়া হচ্ছে
- টুইটার ওআউথ - ব্যবহারকারীদের টুইটারের সাথে নিবন্ধকরণ এবং প্রমাণীকরণের অনুমতি দিন
- ফেসবুক OAuth - ব্যবহারকারীদের ফেসবুকের সাথে নিবন্ধকরণ এবং প্রমাণীকরণের অনুমতি দিন
প্রমাণীকরণ মডিউলটি সম্পূর্ণরূপে alচ্ছিক এবং ক্লিন আইসিচেস্লিয়ার / আইসন এপিআই এবং অর্মলাইট অন্তর্নির্মিত যা আপনার সেশনগুলিকে মেমোরি, রেডিস বা ম্যাকচেডে সংরক্ষণ করতে দেয় এবং আপনার ইউজারআউথ তথ্যটি অরলাইটের সমর্থিত আরডিবিএমএস-এর এসকিউএল সার্ভার, মাইএসকিএল, পোস্টগ্রাইএসকিউএল, স্ক্লাইট হিসাবে সংরক্ষণ করে পাশাপাশি রেডিস ডেটা স্টোর বা ইনমেমোরি (দেব / পরীক্ষার জন্য দরকারী)।
দুর্দান্ত ডকুমেন্টেশন
সার্ভিস স্ট্যাকটি খুব ভালভাবে নথিভুক্ত যেখানে ফ্রেমওয়ার্ক সম্পর্কিত বেশিরভাগ তথ্যই গিটহাব উইকিতে হোস্ট করা হয় । ফ্রেমওয়ার্ক (যেমন Serializers, Redis, OrmLite) অন্যান্য অংশের জন্য ডকুমেন্টেশন পাওয়া যাবে servicestack.net/docs/
ServiceStack.Examples থাকাকালীন প্রকল্প ServiceStack -এর লাইভ গণদেবতা এবং স্টার্টার টেমপ্লেট সকলের জন্য সোর্স কোড প্রদান করে SocialBoostsrapApi প্রকল্পের ServiceStack এবং MVC সঙ্গে একটি Backbone.js একক পৃষ্ঠার অ্যাপ Twitters বুটস্ট্র্যাপ টেমপ্লেট উপর ভিত্তি করে তৈরির জন্য একটি দুর্দান্ত আদ্যস্থল প্রদান করে।
উপরের পাশাপাশি গুগল গ্রুপের মধ্যে তথ্যের কোষাগার সংগ্রহ রয়েছে যা সাম্প্রতিক বছরগুলিতে যথেষ্ট পরিমাণে প্রসারিত হয়েছে।
সর্বত্র চালায়
সার্ভিস স্ট্যাক একটি .NET 3.5 ফ্রেমওয়ার্ক যা এএসপি.এনইটি এবং এইচটিপিপ্লাইটার হোস্টগুলিতে চালিত হয় এবং নেট নেট বা মনোতে হোস্ট করা যায় (ট্রিভিয়া: www.servicestack.net সেন্টোস / মনো দ্বারা চালিত)। এটি আপনার সার্ভিসস্ট্যাক ওয়েব পরিষেবাদি দুটিতে হোস্ট করার অনুমতি দেয়:
.NET 3.5 এবং 4.0 সহ উইন্ডোজ
মনো সাথে লিনাক্স / ওএসএক্স Mon
- অ্যাপাচি + মোড_মোনো
- Nginx + MonoFastCGI
- XSP
- কনসোল অ্যাপ
ওপেন সোর্স ডেভলপমেন্ট মডেল দিয়ে বিকাশিত
সার্ভিস স্ট্যাক ওপেন সোর্স বিকাশের মডেলের দৃ strong় বিশ্বাসী যেখানে এটি সক্রিয়ভাবে উন্মুক্তভাবে বিকাশিত এবং এটি প্রতিষ্ঠার পর থেকে সর্বদা একটি উদার ওএসএস লাইসেন্স (নতুন বিএসডি) এর আওতায় আয়োজিত হয়ে আসছে। আজ অবধি এটি 47 টিরও বেশি বিকাশকারীদের কাছ থেকে অবদান পেয়েছে এবং এটি বর্তমানে গিটহাবের তৃতীয় সর্বাধিক দেখা সি # প্রকল্পে দাঁড়িয়েছে ।
অসুবিধেও
আমি বিশ্বাস করি যে অন্যান্য ওএস। নেট প্রকল্পগুলি যেখানে মাইক্রোসফ্ট দ্বারা এটি বিকাশ করা হয়নি (বা এমনকি উপলব্ধ বিকল্প হিসাবে তালিকাভুক্ত করা হয়নি) সবচেয়ে বড় অসুবিধাও একই। এর অর্থ এটি একটি কাঠামোর মূল্যায়ন করার সময় এটি খুব কমই প্রথম পছন্দ। বেশিরভাগ গ্রহণকারীরা কেবল পরিষেবা স্ট্যাককে একটি সর্বশেষ অবলম্বন হিসাবে মূল্যায়ন করবেন, যেখানে তারা ডাব্লুসিএফের আরোপিত ঘর্ষণ এবং ভঙ্গুরতা বা পছন্দসই মাইক্রোসফ্ট স্ট্যাকের কার্যকারিতা নিয়ে হতাশ হয়েছেন।
প্রতিক্রিয়া এবং সম্প্রদায় সম্পদ
সার্ভিস স্ট্যাকটি বেশিরভাগ লোকের দ্বারা প্রদত্ত ইতিবাচক প্রতিক্রিয়া সহ খুব ভালভাবে গ্রহণ করা হয়েছে যারা মেলিং গোষ্ঠীতে ইতিবাচক সংবেদন দ্বারা এটি দৃশ্যমান হিসাবে মূল্যায়ন করেছে । এই বছর হিসাবে @ সার্ভিসস্ট্যাক টুইটার অ্যাকাউন্টটি তার পছন্দসইগুলিতে উল্লেখ এবং প্রতিক্রিয়া অনুসরণ করছে ।
কমিউনিটি রিসোর্স উইকি পাতা একটি ভাল জায়গা সংযোগগুলি যেসব পোস্ট, শুঁটি কাস্ট, উপস্থাপনা, Gists এবং আরো ব্লগে সঙ্গে বন্য মধ্যে ServiceStack সম্পর্কে আরো বিস্তারিত জানতে হয়।